Github의 CI/CD - Components of Github Actions
- Workflows
: Build Pipeline에 해당
- Events
: Workflow를 trigger 시키는 요소
- Jobs
: Workflows를 구성 함
: Step들로 구성되어 있음
- Steps
: Action들로 구성되어 있음
- Actions
----------------------------- 위의 내용들이 Workflow(Events ~ Actions)
- Runners
: Step을 수행하는 곳
: Log 수집 진행
Github Actions
- 목적
: 소프트웨어 개발 주기에서 Task 자동화 지원
: 이벤트 기반
> 특정 이벤트가 발생 -> 일련의 명령어를 실행
> ex) Pull Request가 발생시 -> test 수행
Workflows
- Repository에 추가된 자동화 된 절차
- 하나 이상의 Job으로 구성되어 있음
: 예약된 시점 또는 이벤트에 의한 트리거가 발생한 경우 Job 실행
- 통상적으로 build / test / package / release / deploy에 사용
- Repository에서 .github/workflows/ 경로에 yaml 형식으로 저장
ex) .github/workflows/continuous-deployment.yml
Events
- Workflow를 trigger하는 특정한 행위
: ex) github에서 발생할 수 있는 event
- Repository에 Push
- Repository에서 Pull Request 생성
- 외부에서 발생하는 Event는 Github의 Webhook을 이용하여 Workflow를 Trigger
Jobs
- 하나의 Runner에서 실행되는 Step의 집합
- Workflow는 여러 개의 Job을 병렬적 처리
: 서로 다른 Runner가 다수 존재하면, Runner의 수만 큼 병렬성을 가짐
: Job들이 순차적으로 처리될 수 있도록 Workflow 설정 가능(Job의 의존성)
> Build와 Test로 된 2개의 순차 Job을 갖는 Workflow -> Test는 Build의 상태에 따라 실행 여부를 결정
Steps
- Action의 집합
- Job에서 하나 이상의 실행 명령어를 갖는 개별 태스크
- 미리 정의된 Action을 수행하거나 Shell 명령어 수행 가능
- Job에서 각각의 Step은 동일한 Runner에서 실행
: 개별 Step의 Action들에서 발생하는 데이터는 공유 됨
Actions
- 독립적인 명령어 -> Step으로 조합
- Workflow에서 이식 가능한 가장 작은 블록
- 새로운 Acion을 만들 수도 있고, Github 커뮤니티에서 만든 것을 사용할 수 도 있음
Runners
- Github Actions Runner Application이 설치된 서버
: Github에서 제공하는 Runner
: 직접 설치하여 운영하는 Runner
- 사용 가능한 Job 수신
: 한 번에 1개의 작업(Job) 수행
: 진행 상황, 로그, 결과를 Github에 보고
- 종류
1. Github-hosted Runner
: Ubuntu Linux / Microsoft Windows / MacOS 기반
: Workflow의 각 Job은 새로운 가상환경에서 실행
2. Self-hosted Runner
: 미리 준비된 하드웨어 및 설정에서 실행
Github Actions로 다루기
- Build into Github
: Github에 완전히 통합 -> 다른 외부 사이트의 CI/CD 필요 없음
- Multi-container testing
: Actions는 multi-container를 구성하고 테스트하는 것이 가능
: Docker / Docker-Compose 지원을 위해 파일을 Workflow에 추가하면 됨
- Multiple CI templates
: 대부분의 종류에 대한 CI 설정 템플릿을 제공
'DevOps' 카테고리의 다른 글
#11 인프라 아키텍쳐 변경 (1) | 2025.06.11 |
---|---|
#10 CI/CD (1) | 2025.06.11 |
#8 Build Pipeline 관리 (0) | 2025.04.26 |
#7 인프라 구축 테스트의 IaC (0) | 2025.04.26 |
#6 IaC 개선(구성 관리 도구와 특징) (0) | 2025.04.26 |