GitHub Action에서 연속적 작업을 동작시키는 방법 중 두가지 방법에 대해서 알아보자.
1. 하나의 workflow 파일안에 여러 job을 등록한다.
pr_sample.yml
name: sample
on:
pull_request:
types: [submited]
jobs:
pr-automerge:
runs-on: ubuntu-latest
steps:
- name: merge pr
run: ...
end-notification:
needs: pr-automerge
runs-on: ubuntu-latest
steps:
- name: notification
run: ...
1st job - pr-automerge
2nd job - end-notification
needs 키워드를 사용하면 의존성을 줄 수 있다.
2. workflow_run을 이용한다.
pr_check.yml
name: pr check
on:
pull_request:
types: [submited]
jobs:
pr-check:
runs-on: ubuntu-latest
steps:
- name: pr_check
run: ...
merge.yml
name: merge pr
on:
workflow_run:
workflows: ["pr check"]
types:
- completed
jobs:
pr-merge:
runs-on: ubuntu-latest
if: $ {{ github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure' }}
steps:
...
pr_check.yml workflow가 동작하면 merge.yml workflow가 동작한다.
workflow_run을 통해 통작하면, 이전 workflow의 권한에 상관 없이 GITHUB_TOKEN
와 같은 민감한 값에 접근이 가능하다.