워크플로 이해
워크플로는 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위해 정의하는 자동화된 프로세스입니다. 리포지토리의 특정 이벤트에 대한 응답으로 실행되는 하나 이상의 작업으로 구성됩니다.
워크플로 구조
모든 워크플로에는 다음과 같은 주요 구성 요소가 포함됩니다.
트리거(이벤트)
푸시, 끌어오기 요청, 일정 또는 수동 트리거에서 워크플로가 실행되어야 하는 시기를 정의합니다.
Jobs
동일한 실행기에서 실행되는 단계 집합입니다. 작업은 기본적으로 병렬로 실행되지만 순차적으로 실행되도록 구성할 수 있습니다.
Steps
명령을 실행하거나, 작업을 설정하거나, 작업을 사용할 수 있는 작업 내의 개별 작업입니다.
실행기
작업이 실행되는 컴퓨팅 환경(GitHub 호스팅 또는 자체 호스팅)입니다.
워크플로 위치 및 이름 지정
워크플로는 리포지토리의 디렉터리에 YAML 파일 .github/workflows 로 저장됩니다. 파일 이름은 GitHub UI의 워크플로 식별자가 됩니다.
최신 워크플로 예제
다음은 현재 모범 사례를 사용하는 포괄적인 예제입니다.
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
schedule:
- cron: "0 2 * * 0" # Weekly dependency check
env:
NODE_VERSION: "20"
jobs:
test:
name: Test and Lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
build:
name: Build Application
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-files
path: dist/
최신 워크플로의 주요 개선 사항
이 예제에서는 현재 모범 사례를 보여 줍니다.
-
최신 작업 버전: 인기 있는 작업 버전 사용
@v4 - 종속성 캐싱: 워크플로 실행 속도 향상
- 환경 변수: 중앙 집중식 구성 관리
-
작업 종속성:
build작업이 성공한 후에test만 실행됩니다. - 아티팩트 처리: 빌드 출력의 적절한 스토리지 및 공유
- 보안: 토큰과 같은 중요한 데이터에 비밀 사용
추가 리소스
이러한 리소스를 탐색하여 워크플로 지식을 향상시킵니다.
- 시작 워크플로 - 일반적인 시나리오를 위한 미리 빌드된 템플릿
- 워크플로 구문 참조 - 전체 구문 설명서
- Marketplace 작업 - 커뮤니티에서 기여한 작업