Dependências entre fluxos de trabalho em ações do Github

9

Eu tenho um monorepo com dois fluxos de trabalho:

.github/workflows/test.yml

name: test

on: [push, pull_request]

jobs:
  test-packages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: test packages
        run: |
          yarn install
          yarn test
...

.github/workflows/deploy.yml

  deploy-packages:
    runs-on: ubuntu-latest
    needs: test-packages
    steps:
      - uses: actions/checkout@v1
      - name: deploy packages
        run: |
          yarn deploy
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
...

Isso não funciona, não consigo referenciar um trabalho em outro fluxo de trabalho:

### ERRORED 19:13:07Z

- Your workflow file was invalid: The pipeline is not valid. The pipeline must contain at least one job with no dependencies.

Existe uma maneira de criar uma dependência entre fluxos de trabalho?

O que eu quero é executar test.ymlentão deploy.ymlem tags e test.ymlsomente em solicitação push e pull. Não quero duplicar trabalhos entre fluxos de trabalho.

Guillaume Vincent
fonte

Respostas:

3

Existe uma maneira de criar uma dependência entre fluxos de trabalho?

Eu não acho que isso seja possível no momento. Talvez seja um recurso que eles adicionarão no futuro. Pessoalmente, acho que é mais provável que um recurso como os orbes do CircleCI seja adicionado para compartilhar seções comuns de fluxos de trabalho.

Para uma solução alternativa, colocar tudo no mesmo fluxo de trabalho como o trabalho a seguir para você? A deploy-packagestarefa será executada apenas se uma tag iniciada vestiver sendo enviada por push.

name: my workflow
on: [push, pull_request]
jobs:
  test-packages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: test packages
        run: echo "Running tests"
  deploy-packages:
    if: startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    needs: test-packages
    steps:
      - uses: actions/checkout@v1
      - name: deploy packages
        run: echo "Deploying packages"
peterevans
fonte