Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

디지안의 개발일지

[TIL] Github Action 용어 정리 본문

github

[TIL] Github Action 용어 정리

안덕기 2022. 2. 9. 21:52

이 문서는 github action이 무엇인지에 대해서 설명합니다.

Github Action이란?

Github Action은 Github에서 제공하는 소프트웨어 워크플로우 자동화 도구입니다. CI/CD, Build, 테스트, 배포등을 Github에 내에서 쉽게 진행할 수 있습니다.

Github Action 동작 흐름

Github Action은 다음과 같은 흐름으로 작동됩니다.

  1. Git Repository 안에 생성된 event들이 trigger가 되어 workflow가 진행됩니다.
  2. (여기서 이벤트는 PR이 열렸거나 이슈가 만들어졌을 때등을 의미합니다.)
  3. workflow 는 하나 이상의 job 들로 구성되어 있습니다.
  4. (이 job들은 순차적으로 진행될 수도 있고 병렬적으로 처리될 수도 있습니다.)
  5. job 들은 runner 에서 실행됩니다. runner 는 가상 머신일수도 있고 컨테이너일 수도 있습니다. 그림으로 표현하면 아래와 같습니다.

Github Action의 구성 요소

Workflows

workflow 는 하나 이상의 job 으로 구성된 자동화 프로세스입니다. workflowyaml 파일로 정의할 수 있고 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의 집합입니다. 각 stepshell 스크립트action 으로 구성되어 있습니다. step 들은 순차적으로 실행되고 서로를 의존합니다. 같은 runner 안에서 step이 실행되면 step들은 데이터를 공유할 수 있습니다. 예를 들어, 애플리케이션을 빌드하고 빌드한 데이터를 바탕으로 애플리케이션을 테스트할 수 있습니다.

job 끼리는 종속성을 가질 수 있습니다.(기본적으로 job은 서로 종속성이 없고 병렬적으로 수행할 수 있습니다.) job이 다른 job에 종속하게 되면, 종속된 job이 완료될 때 실행할 수 있습니다.

Action

step에서 job이 실제로 어떤 일을 할지 정의를 하는데 반복적으로 하는 작업들을 이미 만들어진 action을 통해서 가져올 수 있다. 예를 들어, docker login, gradle build등의 절차를 내가 작성하지 않아도 이미 만들어진 템플릿을 가져와서 간단하게 사용법에 따라 작성할 수 있습니다.

Runner

runnerworkflow가 수행될 서버를 의미합니다. 각 runner는 동시에 하나의 job만 실행할 수 있습니다. github 는 우분투 리눅스, 윈도우, macos 환경에서 workflow를 수행할 수 있도록 제공됩니다. github에서 제공되는 가상머신은 기본적으로 OS만 설치된 환경에서 workflow 를 수행합니다. 사용자가 원하면 자신이 가진 서버에서 workflow를 수행할 수도 있습니다.

참고 자료

https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions