Зависимости между рабочими процессами на действиях Github - PullRequest
3 голосов
/ 18 октября 2019

У меня есть монорепо с двумя рабочими процессами:

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

Это не работает, я могу 't ссылка на задание в другом рабочем процессе:

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

Есть ли способ создать зависимость между рабочими процессами?

Я хочу запустить test.yml затемdeploy.yml для тегов и test.yml только для запросов push и pull. Я не хочу дублировать задания между рабочими процессами.

1 Ответ

2 голосов
/ 19 октября 2019

Есть ли способ создать зависимость между рабочими процессами?

Я не думаю, что это возможно в данный момент. Возможно, это функция, которую они добавят в будущем. Лично я думаю, что более вероятно, что такая функция, как сферы CircleCI, будет добавлена ​​для совместного использования общих разделов рабочих процессов.

Для альтернативного решения, работает ли все это в одном рабочем процессе, как показано ниже, для вас? Задание deploy-packages будет выполнено, только если нажата метка, начинающаяся с v.

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