Dipendenze tra flussi di lavoro su azioni Github


9

Ho un monorepo con due flussi di lavoro:

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

Questo non funziona, non posso fare riferimento a un lavoro in un altro flusso di lavoro:

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

C'è un modo per creare una dipendenza tra flussi di lavoro?

Quello che voglio è test.ymlquindi eseguire deploy.ymlsui tag e test.ymlsolo su richiesta push and pull. Non voglio duplicare i lavori tra i flussi di lavoro.

Risposte:


3

C'è un modo per creare una dipendenza tra flussi di lavoro?

Non penso che sia possibile al momento. Forse è una funzione che aggiungeranno in futuro. Personalmente, penso che sia più probabile che una funzionalità come le sfere di CircleCI venga aggiunta per condividere sezioni comuni dei flussi di lavoro.

Per una soluzione alternativa, mettere tutto nello stesso flusso di lavoro come il seguente funziona per te? Il deploy-packageslavoro verrà eseguito solo se vviene premuto un tag che inizia 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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.