Dépendances entre les workflows sur les actions Github

9

J'ai un monorepo avec deux workflows:

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

Cela ne fonctionne pas, je ne peux pas référencer un travail dans un autre flux de travail:

### 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-t-il un moyen de créer une dépendance entre les workflows?

Ce que je veux, c'est exécuter test.ymlensuite deploy.ymlsur les balises, et test.ymluniquement sur les requêtes push et pull. Je ne souhaite pas dupliquer les travaux entre les workflows.

Guillaume Vincent
la source

Réponses:

3

Existe-t-il un moyen de créer une dépendance entre les workflows?

Je ne pense pas que ce soit possible pour le moment. C'est peut-être une fonctionnalité qu'ils ajouteront à l'avenir. Personnellement, je pense qu'il est plus probable qu'une fonctionnalité comme les orbes de CircleCI soit ajoutée pour partager des sections communes de workflows.

Pour une solution alternative, le fait de tout mettre dans le même flux de travail comme le travail suivant vous convient-il? Le deploy-packagestravail ne s'exécutera que si une balise commençant par vest poussée.

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
la source