2.1.3.2 GitHub Actions 워크플로우 구성
GitHub Actions를 사용하여 CI/CD 워크플로우를 구성하는 과정은 .github/workflows
디렉토리에 YAML 파일을 생성하고, 이 파일 내에서 필요한 작업을 정의하는 것으로 시작됩니다. 워크플로우 파일은 여러 섹션으로 구성되며, 각 섹션은 워크플로우의 다양한 측면을 제어합니다.
워크플로우 파일의 기본 구조
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
run: mvn clean install
- name: Run Tests
run: mvn test
핵심 섹션 설명
-
name
: 워크플로우의 이름을 지정합니다. GitHub UI에서 이 이름이 표시됩니다. -
on
: 워크플로우가 어떤 이벤트에 반응하여 실행될지 정의합니다. 예를 들어,push
나pull_request
이벤트에 대해 특정 브랜치를 지정할 수 있습니다. -
jobs
: 워크플로우에서 실행할 작업을 정의합니다. 각 작업은 독립적인 환경에서 실행될 수 있으며, 여러steps
로 구성됩니다. -
runs-on
: 작업이 실행될 환경(운영 체제)을 지정합니다. 예를 들어,ubuntu-latest
,windows-latest
,macos-latest
등을 지정할 수 있습니다. -
steps
: 각 작업에서 실행할 단계를 정의합니다.uses
를 사용하여 다른 Actions를 호출할 수 있으며,run
을 사용하여 쉘 명령어를 실행할 수 있습니다.
GitHub Actions 워크플로우 구성 팁
-
재사용 가능한 워크플로우 작성: 공통 작업을 재사용할 수 있도록 커스텀 Actions를 만들거나, 마켓플레이스에서 제공하는 Actions를 활용하세요.
-
비밀과 환경 변수 관리: 민감한 정보는 GitHub Secrets를 사용하여 안전하게 관리하고, 워크플로우 파일에서 참조하세요.
-
매트릭스 빌드 사용: 다양한 환경에서 테스트하려면
strategy
와matrix
키워드를 사용하여 여러 환경을 조합해 빌드할 수 있습니다.
GitHub Actions의 워크플로우 파일을 통해 복잡한 CI/CD 파이프라인을 간편하게 구성할 수 있으며, 이는 개발 팀이 보다 효율적으로 작업을 수행하고, 소프트웨어의 품질을 지속적으로 개선할 수 있게 도와줍니다. GitHub Actions의 강력한 기능을 활용하여 개발 프로세스의 자동화 및 최적화를 실현할 수 있습니다.
매트릭스 빌드 예시
매트릭스 빌드를 사용하면 여러 버전의 언어나 다양한 운영 체제에서 동시에 빌드와 테스트를 수행할 수 있습니다. 이는 코드가 다양한 환경에서도 예상대로 동작하는지 검증하는 데 유용합니다.
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x, 12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js $
uses: actions/setup-node@v1
with:
node-version: $
- run: npm install
- run: npm test
이 예시에서는 세 가지 버전의 Node.js를 사용하여 테스트를 실행합니다. 매트릭스 전략을 통해 여러 버전을 한 번에 정의하고, 각각에 대해 테스트를 수행할 수 있습니다.
워크플로우 최적화 팁
- 캐싱 사용하기: 의존성 다운로드 시간을 줄이기 위해 캐싱 기능을 사용하세요. 예를 들어,
actions/cache
를 사용해 Node.js 프로젝트의node_modules
디렉토리나 Maven 프로젝트의.m2
디렉토리를 캐시할 수 있습니다.
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: ~/.m2
key: $-m2-$
restore-keys: |
$-m2
- name: Build with Maven
run: mvn -B package --file pom.xml
- 조건부 실행 활용하기:
if
조건을 사용하여 특정 조건 하에서만 작업이 실행되도록 설정할 수 있습니다. 예를 들어, 특정 브랜치에 푸시되었을 때나 특정 라벨이 있는 경우에만 배포 작업을 수행하도록 할 수 있습니다.
GitHub Actions를 통한 워크플로우 구성과 최적화를 통해, 개발 팀은 소프트웨어를 더 신속하고 안정적으로 배포할 수 있으며, 프로젝트 관리를 더욱 효과적으로 수행할 수 있습니다.
source: DevOps/2.Continuous_Integration_(CI)/2.1.Jenkins_TravisCI_GitHubActions/2.1.3.GithubActions/2.1.3.2.md