GitHub Actions는 GitHub에서 제공하는 지속적인 통합(Continuous Integration, CI) 및 지속적인 배포(Continuous Deployment, CD) 서비스입니다. 이를 통해 코드의 변경 사항을 자동으로 빌드, 테스트, 배포할 수 있습니다.
GitHub Actions 워크플로우는 .github/workflows 디렉토리에 YAML 형식의 파일로 정의됩니다.
기본 구성 요소
예시
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 종속성 설치
run: npm install
- name: 빌드
run: npm run build
- name: 테스트
run: npm test
GitHub Actions에서는 다양한 빌드, 테스트, 배포 등의 작업을 수행하는 액션을 제공합니다.
미리 정의된 작업 단위를 캡슐화하고 재사용 가능하게 만듭니다.
종류
예시 1
- uses: actions/checkout@v2
예시 2
- uses: actions/setup-node@v2
with:
node-version: '14'
GitHub Actions에서는 시크릿과 환경 변수를 안전하게 관리하고 사용할 수 있습니다.
시크릿 관리
환경 변수
여러 환경에서 동시에 빌드를 실행하여 테스트의 다양성을 확보할 수 있습니다.
사용 방법
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v2
- name: 테스트 실행
run: npm test
코드가 메인 브랜치에 푸시되면 자동으로 배포하는 워크플로우를 설정할 수 있습니다
예시
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 프로덕션
빌드 시간을 단축하기 위해 종속성 패키지나 빌드 캐시를 저장하고 재사용할 수 있습니다.
액션은 워크플로우 내에서 uses 키워드를 사용하여 참조할 수 있습니다. with 키워드를 통해 액션에 필요한 입력을 제공하고, name 키워드를 통해 액션의 이름을 지정할 수 있습니다.
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- name: 종속성 캐싱
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: 빌드
run: npm run build
- name: 테스트
run: npm test
- name: 배포
uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
with:
project_id: my-project
credentials: ${{ secrets.GCP_AUTH }}
이와 같은 기능을 통해 빌드, 테스트, 배포 등의 CI, CD의 작업을 편리하게 할 수 있도록 도와주는 도구였다.
다음에는 Git Action을 적용하게 되면 그와 관련된 사건사고로 돌아오겠습니다. 감사합니다.