GitHub Actionsとは?CI/CDを自動化する仕組み
GitHub ActionsはGitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォームです。コードのpush・PRのマージ・スケジュール実行など様々なイベントをトリガーに、テスト・ビルド・デプロイなどのワークフローを自動実行できます。パブリックリポジトリは無料で利用可能、プライベートリポジトリも月2,000分まで無料です。
GitHub Actionsの基本用語
- Workflow:自動化されたプロセス全体(YAMLファイルで定義)
- Event:ワークフローのトリガー(push・pull_request・scheduleなど)
- Job:ワークフロー内の独立したタスクグループ
- Step:Jobを構成する個々のタスク
- Action:再利用可能なステップのパッケージ
- Runner:ジョブを実行する仮想マシン(ubuntu・windows・macOS)
基本的なワークフロー:Node.jsアプリのCI
# .github/workflows/nodejs-ci.yml
name: Node.js CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- name: Node.js セットアップ
uses: actions/setup-node@v4
with:
node-version: {{ matrix.node-version }}
cache: "npm"
- run: npm ci
- run: npm run lint
- run: npm test -- --coverage
DockerビルドとContainer Registryへのプッシュ
# .github/workflows/docker-build-push.yml
name: Docker Build and Push
on:
push:
branches: [ main ]
tags: [ "v*.*.*" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Docker Buildx セットアップ
uses: docker/setup-buildx-action@v3
- name: GitHub Container Registryにログイン
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: ビルドとプッシュ
uses: docker/build-push-action@v5
with:
context: .
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
AWSへの自動デプロイ(ECSへのデプロイ)
# .github/workflows/deploy-aws-ecs.yml
name: Deploy to Amazon ECS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: AWS認証情報の設定
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- name: Amazon ECRにログイン
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Dockerイメージをビルドしてプッシュ
run: |
docker build -t $ECR_REGISTRY/my-app:${{ github.sha }} .
docker push $ECR_REGISTRY/my-app:${{ github.sha }}
- name: Amazon ECSサービスにデプロイ
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
GitHub Actionsのコスト最適化
- キャッシュの活用:actions/cacheでnode_modules・pip・Dockerレイヤーをキャッシュ
- 並列実行の活用:独立したジョブを並列実行してパイプライン時間を短縮
- セルフホストランナー:大量のビルドにはセルフホストランナーでコスト削減
- 条件付き実行:if条件で不要なジョブをスキップ
まとめ
GitHub ActionsはCI/CDの自動化に欠かせないツールです。本記事で解説したNode.js・Python・Docker・AWSへのデプロイパターンを活用することで、開発サイクルを大幅に効率化できます。まずはシンプルなテスト自動化から始め、段階的にデプロイパイプラインを構築していくのがおすすめです。