TIL: GitHub Actions 정리

tohero·2022년 3월 30일
0

TIL

목록 보기
6/10

GitHub Actions란?

GitHub Actions는 빌드, 테스트, 배포에서 필요한 파이프라인을 자동화하는 CI/CD 플랫폼이다.
GitHub Actions는 단순한 DevOps를 넘어서, 이밴드 발생시 workflow를 실행할 수 있는데, 이벤트 단위로 동작하기 때문에 issue 발생시 label 지정을 자동화하는 등 다양하게 사용될 수 있다.
GitHub은 Linux, Windows, MacOS 가상머신을 제공하며 이 머신 위에서 우리가 지정한 workflows가 동작하며 고유의 데이터 센터 혹은 클라우드 인프라와 연동하여 러너를 동작시킬 수 있는 아주 편리한 서비스다!

GitHub Actions 구성 요소

GitHub Actions은 repository에서 event 발생시 등록된 workflow를 실행한다. workflow는 우리가 여러개의 jobs(작업 단위)를 가지고 있으며 병렬 혹은 직렬적으로 실행된다. 각 job은 머신(Runner) 혹은 컨테이너 내부에서 동작하며 등록한 step에 따라 순차적으로 script를 실행하는 원리다.

1. Workflows

workflow는 자동화 프로세스를 설정하는 단위다. YAML 파일로 정의한다. 이벤트 방생시, 지정한 스케쥴링에 따라 혹은 임의로 실행시킬 수 있다.

하나의 repository 안에 여러 workflow를 지정할 수 있으며 각각은 별개의 프로세스로 job을 실행한다. workflow를 임포트하여 실행시킬 수 있기 때문에 재활용도 가능하다.

2. Events

workflow를 실행하는 특수한 행위가 Event다. PR, Issue, Push 등 github에서 발생하는 모든 행위를 Event로 정의할 수 있다. 덧붙여, REST API를 통해 스케쥴링도 가능하다.

3. Jobs

job은 step을 그룹화한 단위다. 각 step은 shell script 혹은 action 중 하나다. step은 job에 등록된 순서대로 실행되며 서로 의존성을 지닌다.

각 Job의 단위는 독립적인 환경에서 수행되기 때문에 서로 의존성이 없다고 볼 수 있는데, 의존하도록 설정할 수 있다. 예를들어 서로다른 아키텍쳐를 테스트하기 위해 각 Build job이 의존성 없이 실행되도록 설정할 수 있고, Packaging job은 의존하도록 설정할 수 있다. 이 때, Build job이 병렬로 실행되어 모두 성공하게 되면 Packaging job을 실행한다.

4. actions

workflow 내에서 복잡하고 반복되는 작업을 수행하기 위한 별도의 어플리케이션이다. Javascript, Docker 등의 문법으로 작성할 수 있으며, workflow이 실행될 때 필요한 action을 다운받는다. 이 때 Action 코드를 실행하는 데 필요한 패키지를 포함해야 한다.

5. Runners

runner는 workflow를 실행하는 서버를 지칭한다. 각 runner는 한번에 한개의 job을 실행할 수 있다. GitHub는 Ubuntu Linux, Microsoft Windows, macOS runner를 제공한다. 그 외 가상 머신이 필요하다면 직접 runner를 설계하여 그 머신위에서 동작하도록 지정할 수 있다.

출처

profile
Front 💔 End

0개의 댓글