워크플로 이해

완료됨

워크플로는 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위해 정의하는 자동화된 프로세스입니다. 리포지토리의 특정 이벤트에 대한 응답으로 실행되는 하나 이상의 작업으로 구성됩니다.

워크플로 구조

모든 워크플로에는 다음과 같은 주요 구성 요소가 포함됩니다.

트리거(이벤트)

푸시, 끌어오기 요청, 일정 또는 수동 트리거에서 워크플로가 실행되어야 하는 시기를 정의합니다.

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 만 실행됩니다.
  • 아티팩트 처리: 빌드 출력의 적절한 스토리지 및 공유
  • 보안: 토큰과 같은 중요한 데이터에 비밀 사용

추가 리소스

이러한 리소스를 탐색하여 워크플로 지식을 향상시킵니다.