작업 탐색

완료됨

작업은 GitHub Actions 워크플로의 구성 요소입니다. 각 작업은 파일 시스템 및 환경 변수를 공유하여 동일한 실행기에서 순차적으로 실행되는 단계의 컬렉션입니다.

작업 수행 이해

작업의 주요 특징

  • 순차적 단계: 작업 내의 단계가 차례로 실행됩니다.
  • 공유 환경: 모든 단계가 동일한 실행기 및 파일 시스템을 공유합니다.
  • 격리된 실행: 각 작업이 새 가상 환경을 가져옵니다.
  • 검색 가능한 로그: 작업 출력이 자동으로 캡처되고 검색 가능
  • 아티팩트 지원: 작업은 워크플로 실행 간에 파일을 저장하고 공유할 수 있습니다.

기본 작업 구조

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test

병렬 및 순차적 실행

병렬 실행(기본값)

기본적으로 여러 작업이 동시에 실행되어 워크플로 기간을 최소화합니다.

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Run linter
        run: npm run lint

  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Run tests
        run: npm test

  # Both lint and test jobs run simultaneously

종속성을 사용하여 순차적 실행

키워드를 needs 사용하여 작업 종속성을 만듭니다.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Build application
        run: ./build.sh

  test:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Run integration tests
        run: ./test.sh

  deploy:
    needs: [build, test] # Waits for multiple jobs
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to production
        run: ./deploy.sh

고급 작업 패턴

여러 구성에 대한 매트릭스 전략

여러 환경에서 동시에 작업을 실행합니다.

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        node-version: [18, 20, 22]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm test

조건부 작업 실행

특정 조건이 충족되는 경우에만 작업을 실행합니다.

jobs:
  deploy:
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to production
        run: echo "Deploying to production"

  notify:
    needs: deploy
    if: failure() # Only runs if deploy job fails
    runs-on: ubuntu-latest
    steps:
      - name: Send failure notification
        run: echo "Deployment failed!"

작업 오류 처리

기본 동작

  • 단계가 실패하면 전체 작업이 실패합니다.
  • 필수 구성 요소가 실패하면 종속 작업이 실행되지 않습니다.
  • 워크플로가 실패한 것으로 표시됨

오류 동작 제어

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Run tests (continue on error)
        run: npm test
        continue-on-error: true

      - name: Upload test results
        if: always() # Runs regardless of previous step outcome
        uses: actions/upload-artifact@v4
        with:
          name: test-results
          path: test-results.xml

작업에 대한 모범 사례

  • 작업 집중 유지: 각 작업에는 단일 책임이 있어야 합니다.
  • 설명이 포함된 이름 사용: 워크플로 UI에서 작업 목적을 명확하게 지정
  • 종속성 최적화: 진정으로 필요한 경우에만 종속성 만들기
  • 적절한 러너 선택: 애플리케이션의 요구 사항에 맞춰 러너 OS를 선택하십시오
  • 문제가 발생할 때 유연하게 처리하기: 조건부 실행을 활용하여 오류 발생 시 계속 진행
  • 효율적으로 데이터 공유: 아티팩트 또는 출력을 사용하여 작업 간에 데이터 전달

포괄적인 작업 구성 옵션은 워크플로에서 작업 사용을 참조하세요.