Github action 이란
- Github에서 공식적으로 제공하는 CI / CD 툴
- 코드 변경 문제사항 검사
- 소프트웨어 빌드, 상용서버 배포
- 통계 데이터 수집
코어 개념
-
Workflow
자동화된 전체 프로세스. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차를 말한다. ex) deploy.yml
Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장된다. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다. -
Event
Workflow를 트리거(실행)하는 특정 활동이나 규칙. ex) pull request, push 시 event 실행 - Job
- Job은 여러 Step으로 구성되고, 단일 가상 환경에서 실행된다. 다른 Job에 의존 관계를 가질 수도 있고, 독립적으로 병렬로 실행
-
Step
Job 안에서 순차적으로 실행되는 프로세스 단위. step에서 명령을 내리거나, action을 실행할 수 있다. -
Action
job의 step에서uses로 호출하는 재사용 작업이다. Docker·JavaScript·Composite 세 형태가 있으며, 여러 step을 묶는 것은 Composite Action이다. action을 구성하기 위해서 레포지토리와 상호작용하는 커스텀 코드를 만들 수도 있다. 사용자가 직접 커스터마이징하거나, 마켓플레이스에 있는 action을 가져다 사용할 수도 있다. -
Runner
Gitbub Action Runner 어플리케이션이 설치된 머신으로, Workflow가 실행될 인스턴스
ex)
name: dmstjd1024-github-actions # WorkFlow 이름
on: # 트리거 하는 이벤트 명시
push: # push 이벤트일때
branches: [ master, dev ] # 어떤 브랜치들
pull_request: # 어떤 풀리퀘일때
branches: [ master ]
paths: # 특정 패턴을 설정하여 변경되었을 때 이벤트 실행
- "**.js"
schedule:
- cron: '0 01 * * *' # UTC 01:00 (한국 시간 10:00)
jobs:
build:
strategy:
matrix: # 테스트 배포를 위한 빌드 matrix 구성
node-version: [10.x, 12.x]
runs-on: ubuntu-latest # 어떤 OS로 실행
steps: # Job이 가질 수 있는 동작 나열 step 독립적 프로세스
- name: Checkout source code # Step 이름
uses: actions/checkout@v2 # Step에서 사용할 액션 (Github 마켓플레이스 action 사용가능)
- name: My First Step # step 이름
run: | # job에 할당된 자원 shell 이용하여 커맨드 라인 실행
npm install
npm test
npm run build
- name: Cache yarn dependencies
uses: actions/cache@v1
id: yarn-cache
with: # action에 정의되는 input 파라미터 (환경 변수)
path: node_modules
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
Code Pipeline
AWS에서 제공하는 CI/CD 서비스.
Source(CodeCommit, S3, GitHub 등) → Build(CodeBuild) → Deploy(CodeDeploy) 단계를 파이프라인으로 연결해 배포를 자동화한다.
가격 비교
| Github Action(Teams 플랜) | Code Pipeline | |
|---|---|---|
| 갯수별 비용 | X | 활성 파이프라인(사용기간 30일 이상, 코드 1회 변경) 개당 1.00 USD(생성 후 첫 30일간 무료) ※ 월별 무료 활성 파이프라인 1개 지원 |
| 패키지 스토리지 | 2GB | X |
| 분(월별) | 3,000분 | X |
| 분당 요금 | vCPU 2개 기준 $0.008 (약 10.80원) | X |
| 월별 총 비용 | $4 (연 결제 기준 $3.67) | Resource 에 따라 다양한 비용 발생 (측정 불가) ※ 월별 명세서로 측정 예정 |
추가) CodeDeploy 비용
AWS 답변 : AWS CodeDeploy를 통해 Amazon EC2 인스턴스에 코드를 배포하는 데는 추가 비용이 부과되지 않습니다.