O que é o Oren
Toda equipe reescreve as mesmas dez pipelines. Build, tag, push, deploy — o mesmo trabalho, copiado entre projetos e empresas, e depois traduzido de novo para o YAML de cada CI.
“Analisar commits e decidir a próxima versão” é a mesma tarefa em qualquer repositório do mundo. Mas cada equipe a reescreve do zero, presa às primitivas do seu CI, sem forma de dizer o que ela recebe e o que devolve.
Sem contrato não há substituição possível — trocar a implementação significa reescrever o pipeline. Não há comparação possível: duas soluções para o mesmo problema não são comparáveis se nem descrevem o mesmo problema.
O modelo
Seção intitulada “O modelo”O Oren separa o que uma task faz de como ela é feita.
| Peça | Responde | Quem escreve |
|---|---|---|
| Task | o que entra, o que sai, de que recursos precisa | autor do contrato |
| Implementation | qual imagem faz o trabalho, onde monta cada recurso | autor do worker |
| Pipeline | quais tasks executar, com quais valores | você, no oren.yaml |
Uma Task pode ter várias Implementations. O pipeline referencia a task, não a imagem — é o que permite trocar de implementação sem reescrever nada.
# o contrato: publicado uma vez, implementado por qualquer umspec: inputs: type: object properties: defaultChange: { type: string, enum: [major, minor, patch, none] } outputs: type: object required: [change] properties: change: { type: string } dependencies: source: type: git-repository# o pipeline, no seu repositóriosteps: - id: analyze task: techlite/analyze-commits@^1.0.0 implementation: techlite/analyze-commits-alpine inputs: defaultChange: minor dependencies: source: "."O que isso destrava
Seção intitulada “O que isso destrava”Implementações intercambiáveis. O mesmo contrato pode ter uma implementação em shell e outra em Node, produzindo saída idêntica. Você troca por uma linha.
Custo visível. Cada recurso que uma task exige do seu ambiente é declarado e tipado, com um nível de privilégio. Uma implementação que exige o socket do Docker aparece como mais cara que uma que usa kaniko — e a escolha passa a ser informada.
Independência de plataforma. O pipeline é um arquivo só. Rodar localmente ou gerar a configuração nativa do seu CI são decisões separadas.
Dois caminhos
Seção intitulada “Dois caminhos”A documentação segue duas trilhas, e vale saber em qual você está:
| Se você quer | Comece por |
|---|---|
| rodar pipelines com tasks que já existem | Primeiro pipeline e Usar tasks |
| escrever uma task nova, para você ou para publicar | Criar tasks |
Quem só usa tasks nunca precisa saber o que é o protocolo v1 ou como um worker é empacotado.
O que o Oren não é
Seção intitulada “O que o Oren não é”Não é um CI. Ele não agenda, não escuta webhook, não tem interface de execução. Ele define o que uma task é e a executa — no seu terminal ou dentro do CI que você já usa.