【2026年版】GitHub Actions完全入門ガイド|CI/CDパイプライン構築から自動デプロイまで実践解説

GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション・継続的デリバリー)プラットフォームです。コードのプッシュやプルリクエストをトリガーに、自動でテスト・ビルド・デプロイを実行できます。本記事では、GitHub Actionsの基礎から実践的なCI/CDパイプライン構築まで、エンジニアが知っておくべき全知識を解説します。

GitHub Actionsとは?基礎知識

GitHub Actionsは2019年11月に正式リリースされたGitHub公式のCI/CDツールです。GitHubとのネイティブな統合、豊富なマーケットプレイス、大きな無料枠が特徴です。

GitHub Actionsの主要概念

  • Workflow:自動化する処理全体の定義。YAMLファイルで記述します
  • Event:ワークフローをトリガーするGitHubのイベント(push, pull_request等)
  • Job:ワークフロー内の処理単位。並列・直列で実行可能
  • Step:ジョブ内の個別タスク
  • Action:再利用可能な処理単位
  • Runner:ジョブを実行する仮想マシン

GitHub Actionsの基本的なワークフロー作成

ワークフローは.github/workflows/ディレクトリにYAMLファイルを配置します。以下にNode.jsアプリの基本CI設定例を示します。

name: Node.js CI

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18.x, 20.x]
    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: npm
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

実践的なCI/CDパイプライン:AWS S3自動デプロイ

フロントエンドアプリをAWS S3にデプロイし、CloudFrontで配信する構成は多くのプロジェクトで採用されています。

name: Deploy to AWS S3

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: 20
        cache: npm
    - name: Install and Build
      run: |
        npm ci
        npm run build
    - name: Configure AWS Credentials
      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: Deploy to S3
      run: aws s3 sync ./build s3://${{ secrets.S3_BUCKET }} --delete
    - name: Invalidate CloudFront
      run: |
        aws cloudfront create-invalidation \
          --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} \
          --paths /*

DockerイメージビルドとECRへのプッシュ

name: Build and Push to ECR

on:
  push:
    branches: [ main ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Configure AWS credentials
      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: Login to Amazon ECR
      id: login-ecr
      uses: aws-actions/amazon-ecr-login@v2
    - name: Build, tag, and push image
      env:
        ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
        IMAGE_TAG: ${{ github.sha }}
      run: |
        docker build -t $ECR_REGISTRY/my-app:$IMAGE_TAG .
        docker push $ECR_REGISTRY/my-app:$IMAGE_TAG
        docker tag $ECR_REGISTRY/my-app:$IMAGE_TAG $ECR_REGISTRY/my-app:latest
        docker push $ECR_REGISTRY/my-app:latest

GitHub Actionsの便利な機能・テクニック

1. キャッシュを活用してビルドを高速化

- name: Cache node modules
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles(**/package-lock.json) }}
    restore-keys: |
      ${{ runner.os }}-node-

2. Secretsを使って機密情報を安全に管理

APIキー・パスワードなどの機密情報は、リポジトリのSettings → Secrets and variables → Actionsから登録します。ワークフロー内では${{ secrets.SECRET_NAME }}で参照します。

3. matrix strategyで複数環境を並列テスト

strategy:
  matrix:
    os: [ubuntu-latest, windows-latest, macos-latest]
    node: [18, 20, 22]
  fail-fast: false

GitHub Actionsの料金・無料枠

プラン無料枠(分/月)Linux超過料金
Free(パブリック)無制限無料
Free(プライベート)2,000分$0.008/分
Pro3,000分$0.008/分
Team3,000分$0.008/分
Enterprise50,000分$0.008/分

まとめ

GitHub Actionsを活用することで、コードプッシュから本番環境へのデプロイまでを完全自動化できます。まずはシンプルなCI(テスト自動化)から始めて、徐々にCD(デプロイ自動化)へ拡張していくことをおすすめします。本記事の設定例を参考に、ぜひCI/CDパイプラインを構築してみてください。

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です