Skip to main content

Evitando duplicação

Você pode usar fluxos de trabalho reutilizáveis e ações compostas para evitar a duplicação de conteúdo dos fluxos de trabalho.

Sobre fluxos de trabalho reutilizáveis e ações compostas

Fluxos de trabalho reutilizáveis e ações compostas são duas maneiras de evitar a duplicação de conteúdo dos fluxos de trabalho.

Fluxos de trabalho reutilizáveis permitem que você reutilize um fluxo de trabalho inteiro, incluindo todas as suas tarefas e etapas. Isso é particularmente útil quando você tem um processo completo de CI/CD que deseja usar em vários repositórios. Os fluxos de trabalho reutilizáveis podem ser mantidos centralmente, em um único local, mas usados em muitos repositórios de toda a organização.

Ações compostas permitem combinar várias etapas em uma única ação. Você pode executar esse grupo de etapas como uma só dentro de um fluxo de trabalho. Isso é útil quando você tem uma sequência de etapas que serão usadas em mais de um fluxo de trabalho. As ações compostas permitem refatorar os arquivos longos do fluxo de trabalho YAML em arquivos muito menores e evitar copiar e colar entre arquivos do fluxo de trabalho.

Os fluxos de trabalho reutilizáveis e as ações compostas resolvem problemas semelhantes, mas têm algumas diferenças importantes. A maioria das vezes, você pode usar qualquer das duas soluções. Mas, algumas vezes, você precisará usar uma ou outra, como descrito mais adiante neste artigo.

Para obter detalhes sobre como criar e usar fluxos de trabalho reutilizáveis e ações compostas, consulte "Reutilizar fluxos de trabalho" e "Criar uma ação composta".

Comparação entre fluxos de trabalho reutilizáveis e ações compostas reutilizáveis

  • Tarefas do fluxo de trabalho - As ações compostas contêm uma série de etapas, que são executadas como uma única etapa dentro do fluxo de trabalho chamador. Ao contrário dos fluxos de trabalho reutilizáveis, elas não podem conter tarefas.
  • Registrando em log - Quando uma ação composta é executada, o log mostra apenas a etapa do fluxo de trabalho chamador que executou a ação composta, não as etapas individuais dentro da ação composta. Com fluxos de trabalho reutilizáveis, cada tarefa e cada etapa é registrada separadamente.
  • Especificando executores - Os fluxos de trabalho reutilizáveis contêm uma ou mais tarefas. Como acontece com todas as tarefas do fluxo de trabalho, as tarefas em um fluxo de trabalho reutilizável especificam o tipo de máquina na qual será executada. Portanto, se for preciso executar as etapas em um tipo de máquina que talvez seja diferente da máquina escolhida para a tarefa do fluxo de trabalho chamador, você deverá usar um fluxo de trabalho reutilizável, não uma ação composta.
  • Passando a saída para etapas - Uma ação composta é executada como uma etapa dentro de uma tarefa do fluxo de trabalho e você pode ter várias etapas antes ou depois da etapa que executa a ação composta. Fluxos de trabalho reutilizáveis são chamados diretamente dentro de um trabalho, e não de dentro de uma etapa de trabalho. Não é possível adicionar etapas a uma tarefa depois de chamar um fluxo de trabalho reutilizável; portanto, não é possível usar GITHUB_ENV para passar valores para as etapas de tarefas subsequentes no fluxo de trabalho chamador.

Principais diferenças entre fluxos de trabalho reutilizáveis e ações compostas

Fluxos de trabalho reutilizáveisAções compostas
Um arquivo YAML, muito semelhante a qualquer arquivo de fluxo de trabalho padrãoUma ação que contém um pacote de etapas do fluxo de trabalho
Cada fluxo de trabalho reutilizável é um único arquivo no diretório .github/workflows de um repositórioCada ação composta é um repositório, ou um diretório, separado contendo um arquivo action.yml e, opcionalmente, outros arquivos
Chamada feita referenciando um arquivo YAML específicoChamada feita referenciando um repositório ou diretório no qual a ação está definida
Chamada feita diretamente em uma tarefa, não em uma etapaExecução feita como uma etapa dentro de uma tarefa
Pode conter várias tarefasNão contém tarefas
Cada etapa é registrada em tempo realRegistro como uma etapa, mesmo que contenha várias etapas
Pode conectar um máximo de quatro níveis de fluxos de trabalhoO aninhamento pode ser feito para ter até 10 ações compostas em um único fluxo de trabalho
Pode usar segredosNão pode usar segredos
Pode usar condicionais if:Não pode usar condicionais if: