🚀

GitHub ActionsでCI/CDパイプラインを構築する方法

2025/02/27に公開

こんにちは!この記事では、GitHub Actionsを使ってCI/CD(継続的インテグレーション/継続的デリバリー)パイプラインを構築する方法について、初心者向けに詳しく説明します。CI/CDは、ソフトウェア開発のプロセスを自動化し、コードの品質を向上させるための重要な手法です。

目次

  1. CI/CDとは?
  2. GitHub Actionsとは?
  3. GitHubリポジトリの準備
  4. GitHub Actionsの基本的な使い方
  5. CI/CDパイプラインの構築
  6. 実践的な例:Node.jsアプリのCI/CDパイプライン
  7. まとめ

CI/CDとは?

CI/CDは、ソフトウェア開発のプロセスを効率化するための手法です。

  • CI(継続的インテグレーション): 開発者がコードをリポジトリに頻繁に統合することを指します。これにより、バグを早期に発見し、修正することができます。
  • CD(継続的デリバリーまたは継続的デプロイ): コードがリポジトリに統合された後、自動的にテストを実行し、ステージング環境や本番環境にデプロイするプロセスです。

このプロセスを自動化することで、開発の効率が向上し、品質が保たれます。

GitHub Actionsとは?

GitHub Actionsは、GitHubが提供するCI/CDツールです。リポジトリ内で直接ワークフローを定義し、コードのビルド、テスト、デプロイを自動化できます。

主な特徴

  • 簡単な設定: YAML形式でワークフローを定義します。
  • 豊富なコミュニティアクション: 他の開発者が作成したアクションを利用できます。
  • GitHubとの統合: GitHubリポジトリとシームレスに連携します。

GitHubリポジトリの準備

まずは、GitHubにリポジトリを作成しましょう。

  1. GitHubにログインします。
  2. 右上の「+」アイコンをクリックし、「New repository」を選択します。
  3. リポジトリ名を入力し、PublicまたはPrivateを選択します。
  4. 「Create repository」をクリックします。

これで新しいリポジトリが作成されました。

GitHub Actionsの基本的な使い方

GitHub Actionsを使うためには、ワークフローを定義する必要があります。ワークフローは、特定のイベントが発生したときに実行される一連のアクションです。

ワークフローの作成

  1. リポジトリのルートディレクトリに .github/workflows フォルダを作成します。
  2. 新しいYAMLファイル(例: ci.yml)を作成します。

以下は、基本的なワークフローの例です。

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

このワークフローは、リポジトリにプッシュされたときに実行されます。以下のステップがあります。

  • Checkout code: コードをリポジトリからチェックアウトします。
  • Set up Node.js: Node.jsのバージョンを設定します。
  • Install dependencies: 依存関係をインストールします。
  • Run tests: テストを実行します。

CI/CDパイプラインの構築

次に、CI/CDパイプラインを構築します。ここでは、コードのビルド、テスト、デプロイを自動化するためのワークフローを作成します。

ステップ1: ビルドとテスト

以下のように、ビルドとテストを行うワークフローを作成します。

name: CI/CD

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

ステップ2: デプロイ

次に、ビルドが成功した後にデプロイを行うステップを追加します。ここでは、Herokuにデプロイする例を示します。

name: CI/CD

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

    - name: Deploy to Heroku
      uses: akhileshns/heroku-deploy@v3.12.9
      with:
        heroku_app_name: YOUR_HEROKU_APP_NAME
        heroku_email: YOUR_HEROKU_EMAIL
        heroku_api_key: ${{ secrets.HEROKU_API_KEY }}

このワークフローでは、テストが成功した後にHerokuにデプロイします。YOUR_HEROKU_APP_NAMEYOUR_HEROKU_EMAILは、あなたのHerokuアプリの名前とメールアドレスに置き換えてください。また、Heroku APIキーはGitHubのSecretsに設定する必要があります。

実践的な例:Node.jsアプリのCI/CDパイプライン

ここでは、Node.jsアプリケーションのCI/CDパイプラインを具体的に構築してみましょう。

1. Node.jsアプリの作成

まず、簡単なNode.jsアプリを作成します。

mkdir my-node-app
cd my-node-app
npm init -y
npm install express --save

次に、以下のコードを index.js というファイルに保存します。

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

2. テストの追加

テストを追加するために、jestをインストールします。

npm install --save-dev jest

次に、test.jsというファイルを作成し、以下のコードを追加します。

test('adds 1 + 2 to equal 3', () => {
  expect(1 + 2).toBe(3);
});

package.jsonにテストスクリプトを追加します。

"scripts": {
  "test": "jest"
}

3. GitHub Actionsの設定

次に、先ほど作成したNode.jsアプリのリポジトリにGitHub Actionsの設定を追加します。

.github/workflows/ci-cd.ymlに以下の内容を追加します。

name: CI/CD

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

    - name: Deploy to Heroku
      uses: akhileshns/heroku-deploy@v3.12.9
      with:
        heroku_app_name: YOUR_HEROKU_APP_NAME
        heroku_email: YOUR_HEROKU_EMAIL
        heroku_api_key: ${{ secrets.HEROKU_API_KEY }}

4. GitHub Secretsの設定

Heroku APIキーをGitHub Secretsに追加します。

  1. リポジトリの「Settings」タブをクリックします。
  2. 左側のメニューから「Secrets and variables」を選択し、「Actions」をクリックします。
  3. 「New repository secret」をクリックし、以下の情報を入力します。
    • Name: HEROKU_API_KEY
    • Value: あなたのHeroku APIキー

これで、CI/CDパイプラインの設定が完了しました。

まとめ

この記事では、GitHub Actionsを使用してCI/CDパイプラインを構築する方法を説明しました。CI/CDを導入することで、開発プロセスが効率化され、コードの品質が向上します。ぜひ、自分のプロジェクトにGitHub Actionsを取り入れてみてください。

もし質問や疑問があれば、コメント欄でお気軽にお知らせください。Happy Coding!

Discussion