Dependencias entre flujos de trabajo en acciones de Github

9

Tengo un monorepo con dos flujos de trabajo:

.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 }}
...

Esto no funciona, no puedo hacer referencia a un trabajo en otro flujo de trabajo:

### 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.

¿Hay alguna manera de crear una dependencia entre los flujos de trabajo?

Lo que quiero es ejecutar test.ymlluego deploy.ymlen etiquetas, y test.ymlsolo en solicitud push y pull. No quiero duplicar trabajos entre flujos de trabajo.

Guillaume Vincent
fuente

Respuestas:

3

¿Hay alguna manera de crear una dependencia entre los flujos de trabajo?

No creo que esto sea posible en este momento. Quizás sea una característica que agregarán en el futuro. Personalmente, creo que es más probable que se agregue una característica como los orbes de CircleCI para compartir secciones comunes de flujos de trabajo.

Para una solución alternativa, ¿pone todo en el mismo flujo de trabajo como el siguiente trabajo para usted? El deploy-packagestrabajo solo se ejecutará si vse empuja una etiqueta que comienza con .

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"
peterevanos
fuente