Topiqlo ロゴ

GitHub ActionsでCI/CD構築

公開日: 2025/06/03

GitHub ActionsでCI/CD構築:開発・テスト・デプロイを自動化しよう

はじめに

CI/CD(継続的インテグレーション/継続的デリバリー)は、現代のソフトウェア開発において不可欠なプロセスです。GitHub Actionsを使えば、GitHub上で直接CI/CDパイプラインを構築でき、外部サービスを使わずに自動化が可能です。本記事では、基本構成から応用までを解説します。

基本情報・概要

GitHub Actionsは、GitHubリポジトリ内の

.github/workflows/
ディレクトリにYAMLファイルを追加するだけで、以下のようなワークフローが構築できます:

  • コードのプッシュやPRをトリガーにして自動実行
  • テストやビルドの自動化
  • デプロイ(Heroku、Firebase、AWS、Dockerなど)にも対応
  • マトリクスビルドやシークレット管理も可能

比較・分類・特徴の表形式まとめ

項目内容
トリガーpush, pull_request, schedule など
実行環境Ubuntu, macOS, Windows 対応
CI用途lint, test, build
CD用途Docker build, GitHub Pages deploy 等
シークレット管理GitHubリポジトリの「Secrets」に登録可能

深掘り解説

まずは、Node.jsプロジェクト向けのCI例を見てみましょう:

name: Node.js CI

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

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x, 18.x]

    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm run lint
      - run: npm test

上記のワークフローでは、mainブランチへのpushやPRをトリガーにして、複数のNodeバージョンでビルド・テストを行います。

次に、静的サイトをGitHub Pagesに自動デプロイするCD例です:

name: Deploy to GitHub Pages

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Build static files
        run: npm run build
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist

応用・発展的な使い方

  • Dockerビルド&プッシュ:

    • run: docker build -t myapp .
    • run: docker tag myapp myrepo/myapp:latest
    • run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
    • run: docker push myrepo/myapp:latest
  • AWS, Firebase, Vercelなどへの自動デプロイ(各公式Actionあり)

  • cronで定期実行(バックアップや監視スクリプトなど)

よくある誤解と注意点

  • 実行時間は無料枠を超えると課金対象(特にmacOSランナー)
  • Secretsは明示的に
    secrets.*
    形式で参照する
  • GITHUB_TOKEN
    はデフォルトで使えるが、権限に注意(必要に応じてPersonal Access Token使用)

まとめ

GitHub ActionsはGitHubに完全統合されたCI/CDプラットフォームであり、セットアップも簡単、機能も豊富です。小規模な個人開発からチームの本番運用まで幅広く対応できます。まずはテストの自動化から始めて、徐々にビルド・デプロイ・通知などを組み込んでいきましょう。