디지안의 개발일지
[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