2.1.3.3 GitHub Actions를 이용한 다양한 자동화 작업
GitHub Actions는 개발 워크플로우를 자동화하고 최적화하는 데 있어 매우 유용한 도구입니다. 이 섹션에서는 테스트, 빌드, 배포를 포함한 다양한 자동화 작업을 구현하는 방법에 대해 설명합니다.
코드 테스트 자동화
코드 변경이 발생할 때마다 자동으로 유닛 테스트를 실행하여 코드의 신뢰성을 확보할 수 있습니다.
name: Automated Testing
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: python -m unittest
이 예시에서는 Python 유닛 테스트를 자동으로 실행합니다.
빌드 자동화
빌드 프로세스를 자동화하여 소프트웨어 빌드를 보다 신속하고 효율적으로 수행할 수 있습니다.
name: Automated Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build Docker Image
run: docker build . --file Dockerfile --tag myapp:latest
이 예시에서는 Docker 이미지를 빌드하는 과정을 자동화합니다.
배포 자동화
테스트와 빌드가 성공적으로 완료되면, 코드를 자동으로 배포할 수 있습니다.
name: Automated Deployment
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Heroku
uses: akhileshns/heroku-deploy@v3.12.12
with:
heroku_api_key: $
heroku_app_name: "your-heroku-app-name"
heroku_email: "your-email@example.com"
이 예시에서는 Heroku에 애플리케이션을 배포합니다.
보안 취약점 스캔
코드를 정기적으로 스캔하여 보안 취약점을 탐지하고 해결할 수 있습니다.
name: Security Scan
on: [push]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run ZAP Scan
uses: zaproxy/action-baseline@v0.4.0
with:
token: $
이 예시에서는 OWASP ZAP을 사용하여 보안 취약점을 스캔합니다.
문서 자동화
문서를 자동으로 생성하고 업데이트하여 프로젝트 문서를 최신 상태로 유지할 수 있습니다.
name: Documentation
on:
push:
branches:
- main
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Generate Docs
run: doxygen Doxyfile
- name: Deploy Docs
uses: peaceiris/actions-gh-pages@v3
with:
github_token: $
publish_dir: ./docs
이 예시에서는 Doxygen을 사용하여 문서를 생성하고, GitHub Pages에 배포합니다.
알림 설정
작업의 성공, 실패, 또는 다른 상태 변경에 따라 개발자에게 알림을 보내는 것도 중요한 자동화 작업입니다. Slack이나 이메일로 알림을 보낼 수 있습니다.
name: Notification
on: [push]
jobs:
notify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Send Success Notification
if: success()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: general
SLACK_COLOR: good
SLACK_MESSAGE: 'Deployment successful! :tada:'
SLACK_WEBHOOK: $
- name: Send Failure Notification
if: failure()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: general
SLACK_COLOR: danger
SLACK_MESSAGE: 'Deployment failed. :x:'
SLACK_WEBHOOK: $
이 예시에서는 배포 작업이 성공하거나 실패할 때 Slack 채널에 알림을 보냅니다. 작업의 결과에 따라 다른 메시지와 색상을 사용하여 팀에 알림을 제공합니다.
결론
GitHub Actions를 통한 자동화는 개발 팀이 더 효율적으로 작업하고, 개발 프로세스의 안정성을 높이며, 프로젝트의 품질을 지속적으로 관리할 수 있게 해줍니다. 각 프로젝트의 요구사항과 팀의 작업 흐름에 맞춰서 다양한 자동화 워크플로우를 설계하고 구현하세요. GitHub Actions는 이러한 과정을 단순화하고, 더 나은 개발 경험을 제공하기 위한 강력한 도구입니다.
source: DevOps/2.Continuous_Integration_(CI)/2.1.Jenkins_TravisCI_GitHubActions/2.1.3.GithubActions/2.1.3.3.md