Reutilizando workflows no Github Action
Trabalho bem menos do que eu gostaria com Github Actions. Mas de vez em quando consigo aprender uns truques, talvez até óbvios para quem tem mais experiencia.
Mas vou deixar essa postagem, para ajudar alguém que possa vir a sofrer do mesmo problema no futuro.
Quase sempre que temos uma pipeline, precisamos organizar ela e reutilizar algumas etapas como execução de testes ou lint em ambientes e cenários diferentes.
O reutilizável
Além de escrever a ação que você pretende reutiliza, vc precisa indicar que ela serve para esse propósito. Para isso você tem que colocar o seguinte trecho em seu arquivo de action. Para efeitos de exemplo vou chamar de tests.yml
Nesse arquivo de action deixei habilitado o workflow_call
esse é segredo para ter sua action sendo executada
name: Running Tests
on:
workflow_call
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x, 17.x]
steps:
- uses: actions/checkout@v2
- name: npm CI
run: npm ci
- name: Running Unit Tests
run: npm test
Pronto definimos qual serão os passos reutilizados, agora vamos pra invocação deles em outra etapa.
Executar os testes em cada Pull Request
Agora vamos usar o arquivo anterior, nesse caso será chamado em cada PR aberta. Para isso vamos usar a chave uses
dentro do .yml
para apontar o arquivo, que deve estar salvo na mesma pasta.
name: Pull Request
on:
pull_request
jobs:
test:
uses: ./.github/workflows/test.yml
Coisa simples, caso você tenha outro cenário dependente pode usar needs
e apontar para o cenário anterior.