Зависимости между рабочими процессами на действиях Github


9

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

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

Это не работает, я не могу ссылаться на работу в другом рабочем процессе:

### 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. Я не хочу дублировать задания между рабочими процессами.

Ответы:


3

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

Я не думаю, что это возможно в данный момент. Возможно, это функция, которую они добавят в будущем. Лично я думаю, что более вероятно, что такая функция, как сферы 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"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.