2.1.3.4 GitHub Actions의 고급 기능
GitHub Actions는 개발 워크플로우를 자동화하고 최적화하는 강력한 도구입니다. 여기서는 GitHub Actions의 고급 기능들과 관련된 꿀팁을 포함하여 자세히 설명합니다.
조건부 실행
if
조건을 사용하여 특정 조건에서만 작업이나 단계가 실행되도록 할 수 있습니다. 이를 통해 불필요한 작업 실행을 방지하고, 리소스를 효율적으로 사용할 수 있습니다.
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build
run: make build
if: github.ref == 'refs/heads/main'
이 예시에서는 main
브랜치에 코드가 푸시될 때만 빌드 작업이 실행됩니다.
매트릭스 빌드
매트릭스 전략을 사용하면 여러 버전의 언어나 다양한 운영 체제에서 동시에 빌드와 테스트를 수행할 수 있습니다. 이는 프로젝트가 다양한 환경에서도 정상적으로 작동하는지 검증하는 데 유용합니다.
jobs:
build:
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@v2
with:
node-version: $
- run: npm install
- run: npm test
이 예시에서는 다른 버전의 Node.js를 사용하여 테스트를 동시에 실행합니다.
캐싱
의존성 파일을 캐시하여 빌드 시간을 단축할 수 있습니다. 예를 들어, Node.js 프로젝트의 node_modules
폴더나 Maven 프로젝트의 .m2
폴더를 캐시할 수 있습니다.
steps:
- uses: actions/checkout@v2
- name: Cache node modules
uses: actions/cache@v2
with:
path: ~/.npm
key: $-node-$
restore-keys: |
$-node-
이 예시에서는 package-lock.json
파일의 해시를 기반으로 npm 캐시를 구성하고 있습니다.
비밀 관리
GitHub Actions는 민감한 정보를 안전하게 관리할 수 있는 Secrets
기능을 제공합니다. 이는 워크플로우에서 환경 변수로 사용될 수 있으며, API 키나 암호와 같은 데이터를 보호하는 데 사용됩니다.
steps:
- name: Deploy to AWS
run: |
aws s3 cp myapp.zip s3://my-bucket/myapp.zip
env:
AWS_ACCESS_KEY_ID: $
AWS_SECRET_ACCESS_KEY: $
이 예시에서는 AWS 자격증명을 Secrets로부터 가져와 AWS S3 버킷에 파일을 업로드하는 작업을 실행합니다.
유용한 팁
- 리소스 제한 조정: 특정 작업에 대해 더 많은 CPU 또는 메모리가 필요한 경우, 리소스 제한을 조정할 수 있습니다. 이를 통해 더 빠른 빌드 시간을 달성할 수 있습니다.
- 동적으로 작업 생성: fromJSON() 함수를 사용하여 동적으로 작업 목록을 생성할 수 있습니다. 이를 통해 워크플로우 내에서 복잡한 로직을 구현할 수 있습니다.
- GitHub Actions 워크플로우에서의 재사용: GitHub Actions에서는 워크플로우, 작업, 단계를 재사용할 수 있는 기능을 제공합니다. 이를 통해 중복을 줄이고, 워크플로우 관리를 더 효율적으로 할 수 있습니다.
jobs:
call-another-repo-workflow:
uses: my-org/my-repo/.github/workflows/another-workflow.yml@main
with:
some-input: some-value
secrets:
a-secret: $
이 기능을 통해 다른 저장소의 워크플로우를 현재 워크플로우에서 직접 호출할 수 있습니다.
마지막으로…
- 워크플로우의 모듈화 및 재사용을 최대화하세요: 재사용 가능한 컴포넌트를 만들어 관리 포인트를 줄이고, 워크플로우를 더 유지보수하기 쉽게 만듭니다.
- 문서화를 게을리하지 마세요: 워크플로우 파일 자체뿐만 아니라, 개별 작업이나 단계에 대한 주석도 적극적으로 추가하여, 나중에 코드를 다시 방문했을 때나 다른 팀원이 이해하기 쉽게 만드세요.
- 커뮤니티와 공유된 리소스를 활용하세요: GitHub Actions 커뮤니티는 수많은 준비된 액션과 워크플로우 예시를 제공합니다. 가능한 한 이들을 활용하여 시간을 절약하고, 자주 발생하는 문제들에 대한 해결책을 찾으세요.
GitHub Actions의 고급 기능들을 통해 복잡한 CI/CD 파이프라인을 구성하고, 자동화 워크플로우를 효율적으로 관리할 수 있습니다. 이러한 기능들을 잘 활용하면 개발 프로세스를 더욱 강력하고 유연하게 만들 수 있습니다.
source: DevOps/2.Continuous_Integration_(CI)/2.1.Jenkins_TravisCI_GitHubActions/2.1.3.GithubActions/2.1.3.4.md