GitHub Actionsで自動化するCI/CDパイプライン

1. はじめに

CI/CD(継続的インテグレーション/継続的デリバリー)は、モダンなソフトウェア開発において欠かせないプロセスです。GitHub Actionsを活用すれば、リポジトリのイベント(プッシュやプルリクエスト)に応じて、テストやデプロイなどを自動実行するワークフローを簡単に構築できます。

本記事では、GitHub Actionsの基本構造とYAML記述法を解説し、プッシュ時の自動ビルド・テスト・デプロイの設定を実践します。また、よく使われるアクション(checkout, setup-node, actions/cacheなど)や、Secretsを利用したセキュアな環境変数管理についても詳しく紹介します。


2. GitHub Actionsの基本構造とYAML記述法

2.1 GitHub Actionsとは?

GitHub Actionsは、GitHubリポジトリで発生するイベントをトリガーとして、特定の処理を自動実行できるCI/CDツールです。ワークフローはYAML形式で記述され、.github/workflows/ディレクトリに配置されます。

2.2 YAMLファイルの基本構成

GitHub ActionsのYAMLファイルは、主に以下のような構造になっています。

name: CI/CD Pipeline  # ワークフローの名前
on:
push: # push イベント時に実行
branches:
- main # main ブランチにプッシュされた場合のみ
jobs:
build: # ビルドジョブの定義
runs-on: ubuntu-latest # 実行環境(仮想マシン)
steps:
- name: Checkout repository
uses: actions/checkout@v4 # リポジトリのコードを取得
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18' # Node.jsのバージョン指定
- name: Install dependencies
run: npm install # 依存関係のインストール
- name: Run tests
run: npm test # テスト実行
- name: Deploy application
run: echo "Deploying..." # 実際のデプロイコマンドを記述

3. プッシュ時の自動ビルド・テスト・デプロイの設定

3.1 自動ビルドの設定

ビルドプロセスでは、ソースコードを取得し、環境をセットアップした後に、アプリケーションをコンパイル・ビルドします。

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: npm install

3.2 自動テストの設定

ビルド後に、アプリケーションが正しく動作するかをテストします。

test:
runs-on: ubuntu-latest
needs: build # buildジョブが完了した後に実行
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test

3.3 自動デプロイの設定

テストが成功したら、デプロイ処理を実行します。
例えば、GitHub Pagesにデプロイする場合は以下のようになります。

deploy:
runs-on: ubuntu-latest
needs: test # testジョブが成功したら実行
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist # デプロイ対象ディレクトリ

4. よく使われるアクション

GitHub Actionsには、さまざまな公式・サードパーティ製のアクションが用意されています。ここでは特によく使われるものを紹介します。

4.1 actions/checkout

リポジトリのコードを取得するためのアクションです。

name: Checkout repository
uses: actions/checkout@v4

4.2 actions/setup-node

Node.jsのバージョンを指定してセットアップできます。

name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'

4.3 actions/cache

依存関係をキャッシュし、ビルド時間を短縮できます。

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

5. Secretsを使ったセキュアな環境変数管理

デプロイ時に認証情報(APIキーやパスワードなど)を扱う場合は、GitHubのSecrets機能を利用することで、安全に管理できます。

5.1 Secretsの設定方法

  1. リポジトリの「Settings」→「Secrets and variables」→「Actions」を開く
  2. 「New repository secret」をクリック
  3. 名前(例: AWS_ACCESS_KEY_ID)と値を入力し保存

5.2 SecretsをYAMLで参照する方法

登録したSecretsは、${{ secrets.<シークレット名> }} の形式でアクセスできます。

name: Deploy to AWS
run: aws s3 sync ./dist s3://my-bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

これにより、機密情報をソースコードに直接含めることなく、安全に使用できます。


6. まとめ

GitHub Actionsを活用すると、コードのプッシュ時に自動でビルド・テスト・デプロイを行うCI/CDパイプラインを構築できます。
本記事では、以下の内容を詳しく解説しました。

✅ GitHub Actionsの基本構造とYAML記述法
✅ 自動ビルド・テスト・デプロイの設定
✅ よく使われるアクション(checkout, setup-node, actions/cache など)
✅ Secretsを使った環境変数のセキュアな管理方法

採用情報 長谷川 横バージョン
SHARE