GitHub Action빌드, 테스트코드 및 배포 파이트라인을 자동화할 수 있는 CI/CD 플랫폼 이다. Repository에 대한 모든 pull request 를 빌드 및 테스트하는 workflow 를 생성하거나 병합된 pull request 를 프로덕션에 배포할 수 있다.

GitHub Actions 는 단순한 DevOps 를 넘어 Repository 에서 다른 이벤트가 발생할 때 workflow 를 실행할 수 있도록 한다. 예를 들어, 누군가가 저장소에 새로운 이슈를 생성할 때마다 적절한 레이블을 자동으로 추가하는 workflow 를 실행할 수 있다.

컴포넌트

pull request 가 열리거나 이슈가 생성되는 것과 같은 이벤트가 Repository 에서 발생할 때 트리거되도록 GitHub workflow 를 구성할 수 있다. workflow 에는 순차적으로 또는 병렬로 실행할 수 있는 하나 이상의 job 이 포함되어 있다. 각 job 은 자체 가상 머신 runner 내부 또는 컨테이너 내부에서 실행되며, 사용자가 정의한 스크립트를 실행하거나 job 을 실행하는 하나 이상의 단계(워크플로를 단순화할 수 있는 재사용 가능한 확장)가 있다.

0874A7A9-BE57-47E6-B1AF-6C449530C21A.png

workflows

workflow 는 하나 이상의 job 으로 구성되고 event 에 의해 트리거될 수 있는 자동화된 프로세스 이다. 가장 최상위 개념으로 YAML으로 작성되고 Github Repository의 .github/workflows  폴더 아래에 저장한다. repository에는 여러 workflow를 가질 수 있으며 각 workflow는 서로 다른 작업을 수행할 수 있다.

events

event는 workflow 실행을 트리거하는 특정 활동이나 규칙이다. 예를 들어, 누군가가 pull request를 생성하거나 issue를 열거나 특정 브랜치로 push하거나 특정 시간대에 반복(cron)하거나 webhook을 사용해 외부 이벤트를 통해 실행될 수 있다.

jobs

jobs은 여러 step으로 구성되고 가상 환경의 인스턴스에서 실행된다. 다른 job에 의존 관계를 가질 수 있고 독립적으로 병렬 실행도 가능하다. (Workflow 는 다양한 Job으로 구성되는데 기본적으로 병렬로 실행)

steps

step은 task들의 집합으로 커맨드를 날리거나 쉘 스크립트 실행하는 것처럼 action을 실행할 수 있다.

actions

workflow의 가장 작은 블럭으로 job을 만들기 위해 step들을 연결할 수 있다. 재사용이 가능한 컴포넌트로서 반복적인 코드의 양을 줄일 수 있고 git repository를 가져오거나 클라우드 공급자에게 인증을 설정할 수도 있다. 또한 개인적으로 만든 action을 작성할 수도 있고 github marketplace에 있는 공용 action을 사용할 수도 있다.

runners

runner는 workflow가 트리거될 때 실행하는 서버다. 각 runner는 1번에 1개의 job을 실행할 수 있다. Github에서 호스팅해주는 Github-hosted runner와 직접 호스팅하는 Self-hosted runner로 나뉜다. Github-hosted runner는 Azure의 Standard_DS2_v2로 vCPU 2, 메모리 7GB, 임시 스토리지 14GB이다.