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
Understanding GitHub Actions - GitHub Docs
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged
docs.github.com
'DevOps > Github' 카테고리의 다른 글
[Git] 브랜치(branch) 전략 - git-flow 방식 / github-flow 방식 / git-lab 방식 (1) | 2022.10.07 |
---|---|
[Git] Git의 기본 개념과 용어 정리 (1) | 2022.10.07 |
최근댓글