O arquivo oren.yaml
apiVersion: oren.sh/v1kind: 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.
Campos do step
Seção intitulada “Campos do step”| 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.
Escolhendo a implementação
Seção intitulada “Escolhendo a implementação”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-alpineParece 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-nodeEm CI, onde não há ninguém para responder, use --impl.
Expressões
Seção intitulada “Expressões”| 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} # booleanotagName: v${outputs['versao'].version} # string