Abhängigkeiten zwischen Workflows von Github-Aktionen

9

Ich habe eine Monorepo mit zwei 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 }}
...

Dies funktioniert nicht. Ich kann keinen Job in einem anderen Workflow referenzieren:

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

Gibt es eine Möglichkeit, eine Abhängigkeit zwischen Workflows zu erstellen?

Was ich möchte, ist, test.ymldann deploy.ymlauf Tags und test.ymlnur auf Push- und Pull-Anfrage zu laufen . Ich möchte keine Jobs zwischen Workflows duplizieren.

Guillaume Vincent
quelle

Antworten:

3

Gibt es eine Möglichkeit, eine Abhängigkeit zwischen Workflows zu erstellen?

Ich denke nicht, dass dies im Moment möglich ist. Vielleicht ist es eine Funktion, die sie in Zukunft hinzufügen werden. Persönlich denke ich, dass es wahrscheinlicher ist, dass eine Funktion wie die Orbs von CircleCI hinzugefügt wird, um gemeinsame Abschnitte von Workflows gemeinsam zu nutzen.

Funktioniert es für eine alternative Lösung für Sie, alles in den gleichen Workflow wie die folgenden zu integrieren? Der deploy-packagesJob wird nur ausgeführt, wenn ein Tag, das mit beginnt v, verschoben wird.

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
quelle