작업 탐색
작업은 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를 선택하십시오
- 문제가 발생할 때 유연하게 처리하기: 조건부 실행을 활용하여 오류 발생 시 계속 진행
- 효율적으로 데이터 공유: 아티팩트 또는 출력을 사용하여 작업 간에 데이터 전달
포괄적인 작업 구성 옵션은 워크플로에서 작업 사용을 참조하세요.