Github Action의 코어 개념
- Workflow
자동화된 전체 프로세스. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차를 말한다.
Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장된다. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다.
- Event
Workflow를 트리거(실행)하는 특정 활동이나 규칙. 예를 들어, 누군가가 커밋을 리포지토리에 푸시하거나 풀 요청이 생성 될 때 GitHub에서 활동이 시작될 수 있다.
- Job
Job은 여러 Step으로 구성되고, 단일 가상 환경에서 실행된다. 다른 Job에 의존 관계를 가질 수도 있고, 독립적으로 병렬로 실행될 수도 있다.
- Step
Job 안에서 순차적으로 실행되는 프로세스 단위. step에서 명령을 내리거나, action을 실행할 수 있다.
- Action
job을 구성하기 위한 step들의 조합으로 구성된 독립적인 명령. workflow의 가장 작은 빌드 단위이다. workflow에서 action을 사용하기 위해서는 action이 step을 포함해야 한다. action을 구성하기 위해서 레포지토리와 상호작용하는 커스텀 코드를 만들 수도 있다. 사용자가 직접 커스터마이징하거나, 마켓플레이스에 있는 action을 가져다 사용할 수도 있다. (더 자세한 설명은 아래에!)
- Runner
Gitbub Action Runner 어플리케이션이 설치된 머신으로, Workflow가 실행될 인스턴스
예제 workflow 만들기
GitHub Actions는 YAML 구문을 사용하여 워크플로를 정의합니다. 각 워크플로는 별도의 YAML 파일로 코드 리포지토리의 라는 디렉터리에 저장됩니다 .
코드가 푸시될 때마다 일련의 명령을 자동으로 트리거하는 예제 워크플로를 리포지토리에 만들 수 있습니다. 이 워크플로에서 GitHub Actions는 푸시된 코드를 확인하고 bats 테스트 프레임워크를 설치하고 기본 명령을 실행하여 bats 버전을 출력합니다.
- 리포지토리에서 .github/workflows/워크플로 파일을 저장할 디렉터리를 만듭니다.
- 디렉터리 에서 .github/workflows/라는 새 파일을 만들고 learn-github-actions.yml다음 코드를 추가합니다.
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
3.이러한 변경 사항을 커밋하고 GitHub 리포지토리에 푸시합니다.
워크플로 파일 이해
YAML 구문을 사용하여 워크플로 파일을 만드는 방법을 이해하는 데 도움이 되도록 이 섹션에서는 소개 예제의 각 줄에 대해 설명합니다.
on
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
- Event에 대해 작성하는 부분
- 어떤 조건에 Workflow를 Trigger 시킬지
- push(Branch or Tag), pull_request, schedule을 사용할 수 있음
- 단, 다른 CI/CD 도구에 있는 즉시 실행 버튼은 없음(추후에 생길 수도?)
- 단일 Event를 사용할 수도 있고, array로 작성할 수도 있음
on: push
# 또는
on: [pull_request, issues]
- jobs
- Workflow는 다양한 Job으로 구성됨
- 여러 Job이 있을 경우, Default로 병렬 실행
- build라는 job을 생성하고, 그 아래에 2개의 step이 존재하는 구조
- runs-on은 어떤 OS에서 실행될지 지정
- strategy - matrix 인자를 사용하면 어떤 파이썬 버전에서 테스트할지 확인할 수 있음. 자세한 내용은 밑 예제를 통해 확인할 수 있음
- 위 예제에선 run할 때 env(환경 변수)를 설정하는 예제가 없는데, 밑에서 환경 변수를 등록하는 방법에 대해 안내할 예정
- steps의 uses는 어떤 액션을 사용할지 지정함. 이미 만들어진 액션을 사용할 때 지정
-
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run a one-line script run: echo Hello, world! - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project.
워크플로 실행에 대한 활동 보기
워크플로가 트리거되면 워크플로를 실행하는 워크플로 실행 이 생성됩니다. 워크플로 실행이 시작된 후 실행 진행률의 시각화 그래프를 보고 GitHub에서 각 단계의 활동을 볼 수 있습니다.
1.GitHub.com에서 리포지토리의 기본 페이지로 이동합니다.
2.저장소 이름 아래에서 Actions을 클릭 합니다.
3.왼쪽 사이드바에서 보려는 워크플로를 클릭합니다.
4."워크플로 실행"에서 보고 싶은 실행의 이름을 클릭합니다.
5.Actions 또는 시각화 그래프 에서 보려는 작업을 클릭합니다.
6.각 단계의 결과를 봅니다.
'CI,CD' 카테고리의 다른 글
AWS code 시리즈 (CI/CD) (0) | 2023.02.21 |
---|---|
CI/CD란? (0) | 2022.09.04 |