How start second github action after success first
Тот же workflow, отдельный job с needs ключом
В одном воркфлоу можно определить дополнительный job через need - в этом случае экшен будет выполнен, только если успешно выполнен экшен в need
name: CI build and notify
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy Docker image to Google Cloud Run
run: ...
notify:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Notify Slack and send eMail
run: ...
Отдельный workflow, использующий workflow_run эвент в качестве триггера
Можно разделить события на два воркфлоу и запускать второй только, если успешен первый.
# build.yml
name: CI build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy Docker image to Google Cloud Run
run: ...
# notify.yml
name: CI notify
# Only trigger, when the build workflow succeeded
on:
workflow_run:
workflows: ["CI build"]
types:
- completed
jobs:
notify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Notify Slack and send eMail
run: ...
Чтобы проверить, успешно или нет выполнен предыдущий workflow, можно запросить его статус (подробнее тут):
on:
workflow_run:
workflows: ["Build"]
types: [completed]
jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
...
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
...
Важным недостатком второго подхода является то, что оба экшена должны быть реализованы в ветке по умолчанию длят ого, чтобы второй исполнился. Плюс, очевидно, заключается в том, что можно отключить второй экшен из админки github, не влезая в код.
- [github-action]
- [cl]