GitHub Actions 이란?
: 빌드, 테스트, 배포 파이프라인을 자동화할 수 있게 해주는 Github의 CI/CD 플랫폼
- Github Repository로의 모든 Pull Request를 빌드하고 테스트하는 워크플로우를 생성하거나, Merge된 Pull Request를 프로덕션(서버)에 배포하는 등의 작업을 수행할 수 있게 함
- 단순히 DevOps를 넘어서, Github Repository에서 여러 이벤트가 발생할 때 워크플로우를 실행하게 한다. 예를 들어, 새로운 Issue를 만든 사람에게 자동으로 적절한 Label을 추가하는 워크플로우를 실행할 수도 있음
- GitHub은 워크플로우를 실행할 Linux, Windows, macOS 기반의 VM을 제공하거나, 유저가 관리하는 데이터 센터 또는 클라우드 인프라에서 Self-Hosted Runner를 호스팅 할 수 있음
Github Actions의 Component
Workflow (워크플로)
: Github의 Repository 안에서 하나 이상의 Job(작업)을 가지는 YAML 단위의 자동화 프로세스.
- Repo 기준 최상단에서 .github/workflows 디렉토리 하위에 위치하며, .yml 파일로 존재
- 한 Repo 안에 여러 개의 워크플로(.yml 파일)를 가질 수 있고, 각각 다른 일련의 작업 수행 가능
- Github의 Repository의 특정한 Event(Push, PR, Issue 등)에 의해 트리거됨
- 수동으로 트리거 또는 정의된 일정에 따라 진행 가능
- 한 워크플로 내에서 다른 워크플로 참조도 가능 (Reusing Workflow)
→ https://docs.github.com/en/actions/sharing-automations/reusing-workflows - 워크플로에 대한 더 자세한 정보
→ https://docs.github.com/en/actions/writing-workflows
Events (이벤트)
: Workflow 실행을 트리거하는 Repository의 특정 활동
이 ‘활동’은 예를 들면, Github 상에서 누군가가 PR(Pull Request) 또는 Issue를 생성하거나, 커밋을 Repo에 Push 하는 등의 행위를 수행하는 것으로부터 기원한다.
- 워크플로 안에서 on 구문으로서, 첫 시작에 대한 조건에 해당하는 부분
- on 구문 안에서 schedule 을 설정하여 일정 시간 자체를 트리거로 하는 워크플로 설정 가능
→ https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule - REST API의 POST 요청으로 Repo에 이벤트를 가할 수도 있음
→ https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-dispatch-event - 워크플로를 트리거하는 데에 사용할 수 있는 전체 이벤트 목록
→ https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows
Jobs (작업)
: 한 runner 안에서 실행되는 하나의 워크플로 안의 ‘step’들의 집합
- default로 job은 서로 간의 종속성이 없어 병렬로 실행되나, 서로 간의 종속성을 만들어 직렬로 수행도 가능
- 각 step은 실행될 쉘 스크립트 또는 실행될 하나의 action 단위를 의미
- 각 step은 순차적으로 실행되며, 이에 따라 이전 step에 의존하게 됨
- 각 step은 하나의 runner 안에서 실행되므로, 서로 데이터를 공유할 수 있음.
예를 들면, 애플리케이션을 빌드하는 step 다음에 빌드된 애플리케이션을 테스트하는 step을 가질 수 있음 - 작업에 대한 더 자세한 정보
→ https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does
Actions (액션)
: 복잡하지만 자주 반복되는 task를 수행하는 Github Actions 에서만 사용 가능한 커스텀 애플리케이션
- 워크플로 파일 안에서 반복되는 코드의 양을 획기적으로 줄여줌
- 워크플로가 실행되는 Github Repo와 연동되는 Git Repo 를 가져오거나, 빌드 환경에 맞는 올바른 Tool-Chain을 설정하거나, 클라우드 제공업체에 대한 authentication 을 설정 가능
- Github 마켓플레이스에서 워크플로에 사용할 액션을 찾을 수 있고, 직접 작성도 가능
- action 생성에 대한 더 자세한 정보
→ https://docs.github.com/en/actions/sharing-automations
Runners (러너)
: 워크플로가 트리거될 때, 해당 워크플로를 실행하는 주체가 되는 서버
- 각 러너는 한 번에 하나의 job을 실행할 수 있음
- Github은 자체적으로 워크플로를 실행할 수 있는 Ubuntu, Windows, macOS 러너를 제공
- 각 워크플로 실행마다 깔끔하게 프로비저닝된 새삥(?) VM에서 실행됨
- 다른 OS 또는 특정 H/W 구성이 필요한 경우, ‘self-hosted’ runner 구성 가능
→ https://docs.github.com/en/actions/hosting-your-own-runners - ‘larger runner’ 에 대한 더 자세한 정보
→ https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners
참고
https://docs.github.com/en/actions/about-github-actions/understanding-github-actions
'DevOps > Github' 카테고리의 다른 글
[Git] 브랜치(branch) 전략 - git-flow 방식 / github-flow 방식 / git-lab 방식 (1) | 2022.10.07 |
---|---|
[Git] Git의 기본 개념과 용어 정리 (1) | 2022.10.07 |
최근댓글