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
  1. workflow 이름
  2. workflow가 실행되게 하는 event
  3. event에 따라 수행되어야 하는 job들
  4. 수행되는 job의 이름
  5. runner 명시
  6. 다른 실행이 되길 원한다면 strategy에 명시된 matrix의 변수를 받아 실행 가능
  7. steps
  8. checkout이라는 action
  9. node를 setup하는 action (node-version은 14)
  10. action에 따라 다르게 적용할 수 있는 문법
  11. shell 명령어를 수행