Github Actions
Github Actions
특정 이벤트가 발생했을 때 원하는 작업을 자동으로 수행하게 만들어주는 도구
프로젝트 루트 경로에
.github/workflows/
디렉토리를 생성하고.yml
파일을 만들어 워크플로우를 정의한다.
// workflows 이름
name: CI
// workflows를 실행시킬 트리거
// 각 이벤트 하위에 지정하는 상세 설정은 AND 연산자를 사용하여 조건이 충족되어야 실행됨
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
// job을 실행시킬 환경을 지정
runs-on: ubuntu-latest
steps:
// uses는 이미 만들어둔 Action을 사용하겠다는 것
// checkout은 'runs-on'에 명시한 워크플로우 실행 환경에서 해당 프로젝트를 불러오는 동작을 의미
// 워크플로우의 첫 번째 단계에서 사용되며 꼭 필요하다.
- name: Checkout
uses: actions/checkout@v3
// node.js 환경 세팅
- name: Set up Node.js
uses: actions/setup-node@v3
// with을 사용하여 액션에 값 전달
with:
node-version: '16'
// 종속성을 관리하고 캐싱할 패키지매니저 지정
cache: npm
// 종속성 설치
- name: Install dependencies
// run은 package.json에 정의한 스크립트 명령어를 실행시키기 위해 사용됨
run: npm ci
- name: Lint
run: npx eslint --ext .js,.jsx,.ts,.tsx .
- name: Compile to check syntax
run: npx tsc --noEmit
- name: Run tests
run: npx jest --verbose --coverage
- name: Build
run: npm run build
- name: Run E2E test
run: HEADLESS=true npm run ci
Events
When - 수행할 작업이 트리거되는 상황
github에서 발생되는 대부분의 이벤트를 지정할 수 있다.
ex) push, merge, pr 생성 등
이벤트가 호출되면 워크플로우가 실행된다.
Workflow
특정 이벤트가 발생했을 때 실행되는 작업들의 집합
하나의
workflows
는 하나 또는 다수의job
을 갖는다.
Job
워크플로우 내에서 실행되는 독립적인 작업
기본적으로 병렬로 실행된다.
job
은 하나 이상의step
으로 구성된다.shell script
또는npm 명령어
작성 가능
Actions
특정 작업, 명령어를 실행하는 단위
자주 수행되는 작업을 액션으로 정의하여 재사용성을 높힌다.
Github actions 에는 사전에 정의된 다양한 액션들을 제공한다.
Composite Action
여러 개의 단일 액션으로 구성되어 더 복잡한 작업을 수행하기 위해 사용된다.
Composite Action은 워크플로우와 독립적으로 관리하기 위해 별도의 디렉토리를 생성하여 관리하자.
Composit Action마다 개별 폴더를 만들고
action.yml
파일을 생성하여 정의한다.using: 'composite'
로 선언해야 한다.해당 액션을 사용하는 곳에서
uses
를 통해 액션의 상대 경로를 지정하여 사용한다.uses: ./.github/actions/yarn-install
Runner
작업을 수행할 실행 환경으로 github에서 호스팅하여 워크플로우를 실행시키기 위해 사용된다.
job
을 실행하는 것이 바로Runner
,job
은 독립적인Runner Container
에서 실행된다.
Last updated