GitHub Actions는 CI (Continuous Integration: 지속적인 통합) 와 CD(Continouos Deployment: 지속적인 배포) 의 자동화를 지원하는 도구이다. CI/CD를 자동화 하는 일련의 작업들을 묶어 재사용하거나 공유할 수도 있다.
해당 포스트에서는 GitHub Actions의 구성요소와 형태를 간략하게 정리한다.
1. GitHub Actions 구성요소
GitHub Actions는 5가지 요소로 이루어져 있다.
- Event (1)
- 깃헙에서 발생할 수 있는 대부분의 이벤트
- Workflows (2)
- 이벤트가 발생했을 때 무엇이 어떤 순서로 수행될 지를 정의
- Jobs (3)
- Workflow를 구성하는 요소
- 각각의 Job 내부에서도 어떤 step이 수행되어야 하는지 순서를 설정할 수 있음
- step은 shell script로 명시 (또는 Action을 사용할 수 있음)
- Action (4)
- Job의 step을 이미 만들어진 Action을 사용하여 수행할 수 있음
- Github 또는 3rd party에서 제공되는 것을 사용하면 됨
- Runner (5)
- VM Machine 또는 Docker container
- Job은 각각의 개별 Runner라는 컨테이너에서 실행됨
2. 기본적인 형태
자동화 하고자 하는 workflow는 repository 내 아래와 같이 yaml파일에 정의한다.
.github/workflow/{원하는 workflow}.yaml
name: workflow-actions # 1
on: [push] # 2
jobs: # 3
check-version: # 4
runs-on: ubuntu-latest # 5
strategy: # 6
matrix:
node-version: [12.x, 14.x, 16.x]
steps: # 7
- uses: actions/checkout@v3 # 8
- uses: actions/setup-node@v3 # 9
with: # 10
node-version: ${{ matrix.node-version }}
- run: npm install -g bats && bats -v # 11
- workflow 이름
- workflow가 실행되게 하는 event
- event에 따라 수행되어야 하는 job들
- 수행되는 job의 이름
- runner 명시
- 다른 실행이 되길 원한다면 strategy에 명시된 matrix의 변수를 받아 실행 가능
- steps
- checkout이라는 action
- node를 setup하는 action (node-version은 14)
- action에 따라 다르게 적용할 수 있는 문법
- shell 명령어를 수행