Pular para o conteúdo

O arquivo oren.yaml

apiVersion: oren.sh/v1
kind: Pipeline
pipelines:
dev:
name: Desenvolvimento
steps:
- id: analyze
task: techlite/analyze-commits@^1.0.0
implementation: techlite/analyze-commits-alpine
name: Análise de versão
inputs:
defaultChange: minor
dependencies:
source: "."

Um arquivo pode ter vários pipelines — dev, producao, release. Você escolhe qual rodar: oren run producao.

Campo O que faz
task referência ao contrato, com range de versão opcional
id identificador dentro do pipeline; é por ele que os próximos referenciam a saída
name rótulo exibido na execução
inputs valores para os inputs declarados no contrato
dependencies como cada recurso é satisfeito
implementation qual implementação executa o step — obrigatório
enabled false remove o step; uma expressão sobre properties/env decide por ambiente — ver Propriedades por ambiente
continueOnError segue mesmo se o step falhar

O id cai no nome da task quando omitido, e passa a ser obrigatório quando a mesma task aparece mais de uma vez.

Todo step nomeia sua implementação. Não há default, nem quando existe uma candidata só:

- id: analyze
task: techlite/analyze-commits@^1.0.0
implementation: techlite/analyze-commits-alpine

Parece redundante quando só há uma opção, e é justamente aí que importa. Se o campo pudesse ficar implícito, o pipeline funcionaria hoje e quebraria no dia em que alguém publicasse uma segunda implementação — outra pessoa, outro repositório, sem ninguém tocar no seu. O que roda tem que ser função do que está escrito aqui, não do que existe publicado no momento.

Pelo mesmo motivo o Oren nunca escolhe por você quando há várias. O oren add mostra o custo de cada uma e pergunta:

2 implementações — qual usar?
1) low techlite/analyze-commits-alpine
2) low techlite/analyze-commits-node

Em CI, onde não há ninguém para responder, use --impl.

Escopo Exemplo
saída de outro step ${outputs['analyze'].change}
variável de ambiente ${env.OREN_GIT_TOKEN}
propriedade de ambiente ${properties.deploy.region}

Só variáveis com prefixo OREN_ ficam visíveis — o pipeline não enxerga seu ambiente inteiro.

Uma string que é exatamente uma expressão preserva o tipo original; em texto misto o valor é interpolado:

incrementMinor: ${outputs['analyze'].minor} # booleano
tagName: v${outputs['versao'].version} # string