Ketergantungan Antara Alur Kerja pada Tindakan Github

9

Saya punya monorepo dengan dua alur kerja:

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

Ini tidak berfungsi, saya tidak bisa mereferensikan pekerjaan di alur kerja lain:

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

Apakah ada cara untuk membuat ketergantungan antara alur kerja?

Apa yang saya inginkan adalah untuk menjalankan test.ymlkemudian deploy.ymlpada tag, dan test.ymlhanya pada push dan permintaan tarik. Saya tidak ingin menduplikasi pekerjaan di antara alur kerja.

Guillaume Vincent
sumber

Jawaban:

3

Apakah ada cara untuk membuat ketergantungan antara alur kerja?

Saya tidak berpikir ini mungkin saat ini. Mungkin itu adalah fitur yang akan mereka tambahkan di masa depan. Secara pribadi, saya pikir itu lebih mungkin bahwa fitur seperti bola CircleCI akan ditambahkan untuk berbagi bagian umum alur kerja.

Untuk solusi alternatif, apakah menempatkan semuanya dalam alur kerja yang sama seperti pekerjaan berikut untuk Anda? The deploy-packagespekerjaan hanya akan mengeksekusi jika tag dimulai dengan vdidorong.

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
sumber