디지안의 개발일지
[TIL] Github Action 용어 정리 본문
이 문서는 github action이 무엇인지에 대해서 설명합니다.
Github Action이란?
Github Action은 Github에서 제공하는 소프트웨어 워크플로우 자동화 도구입니다. CI/CD, Build, 테스트, 배포등을 Github에 내에서 쉽게 진행할 수 있습니다.
Github Action 동작 흐름
Github Action은 다음과 같은 흐름으로 작동됩니다.
- Git Repository 안에 생성된
event들이trigger가 되어workflow가 진행됩니다. - (여기서 이벤트는 PR이 열렸거나 이슈가 만들어졌을 때등을 의미합니다.)
workflow는 하나 이상의job들로 구성되어 있습니다.- (이
job들은 순차적으로 진행될 수도 있고 병렬적으로 처리될 수도 있습니다.) - 각
job들은runner에서 실행됩니다.runner는 가상 머신일수도 있고 컨테이너일 수도 있습니다. 그림으로 표현하면 아래와 같습니다.

Github Action의 구성 요소
Workflows
workflow 는 하나 이상의 job 으로 구성된 자동화 프로세스입니다. workflow 는 yaml 파일로 정의할 수 있고 yaml 파일은 workflow가 동작할 Git 저장소에 존재해야합니다. yaml 에 등록된 event 들이 Git 저장소에서 수동적으로(PR 등등)나 어떤 스케쥴에 의해서 trigger 되면 실행이 됩니다.
하나의 Git 저장소에서 여러개의 workflow 를 가질 수 있고 각 workflow 는 다른 step으로 구성될 수 있습니다. Github에서 workflow를 찾는 방식은 간단합니다. Git 저장소에 .github/workflows 가 존재하는지 확인합니다.
프로젝트의 workflow 는 다음과 같은 폴더 구조를 가지면 됩니다.
./project_root
└── .github
└── workflows
Events
event 하나는 저장소에서 workflow가 수행되도록 하는 특별한 활동을 의미합니다. 예를 들어서, pull request를 생성하거나 이슈를 열거나 저장에서 커밋을 push하는 것을 의미합니다. 추가적으로, REST API를 통해서 스케쥴링도 할 수도 있습니다.
Job
job은 같은 runner 에서 수행되는 step의 집합입니다. 각 step 은 shell 스크립트나 action 으로 구성되어 있습니다. step 들은 순차적으로 실행되고 서로를 의존합니다. 같은 runner 안에서 step이 실행되면 step들은 데이터를 공유할 수 있습니다. 예를 들어, 애플리케이션을 빌드하고 빌드한 데이터를 바탕으로 애플리케이션을 테스트할 수 있습니다.
job 끼리는 종속성을 가질 수 있습니다.(기본적으로 job은 서로 종속성이 없고 병렬적으로 수행할 수 있습니다.) job이 다른 job에 종속하게 되면, 종속된 job이 완료될 때 실행할 수 있습니다.
Action
step에서 job이 실제로 어떤 일을 할지 정의를 하는데 반복적으로 하는 작업들을 이미 만들어진 action을 통해서 가져올 수 있다. 예를 들어, docker login, gradle build등의 절차를 내가 작성하지 않아도 이미 만들어진 템플릿을 가져와서 간단하게 사용법에 따라 작성할 수 있습니다.
Runner
runner는 workflow가 수행될 서버를 의미합니다. 각 runner는 동시에 하나의 job만 실행할 수 있습니다. github 는 우분투 리눅스, 윈도우, macos 환경에서 workflow를 수행할 수 있도록 제공됩니다. github에서 제공되는 가상머신은 기본적으로 OS만 설치된 환경에서 workflow 를 수행합니다. 사용자가 원하면 자신이 가진 서버에서 workflow를 수행할 수도 있습니다.
참고 자료
https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions