GitHub ActionsでCI/CDパイプラインを構築する方法
こんにちは!この記事では、GitHub Actionsを使ってCI/CD(継続的インテグレーション/継続的デリバリー)パイプラインを構築する方法について、初心者向けに詳しく説明します。CI/CDは、ソフトウェア開発のプロセスを自動化し、コードの品質を向上させるための重要な手法です。
目次
- CI/CDとは?
- GitHub Actionsとは?
- GitHubリポジトリの準備
- GitHub Actionsの基本的な使い方
- CI/CDパイプラインの構築
- 実践的な例:Node.jsアプリのCI/CDパイプライン
- まとめ
CI/CDとは?
CI/CDは、ソフトウェア開発のプロセスを効率化するための手法です。
- CI(継続的インテグレーション): 開発者がコードをリポジトリに頻繁に統合することを指します。これにより、バグを早期に発見し、修正することができます。
- CD(継続的デリバリーまたは継続的デプロイ): コードがリポジトリに統合された後、自動的にテストを実行し、ステージング環境や本番環境にデプロイするプロセスです。
このプロセスを自動化することで、開発の効率が向上し、品質が保たれます。
GitHub Actionsとは?
GitHub Actionsは、GitHubが提供するCI/CDツールです。リポジトリ内で直接ワークフローを定義し、コードのビルド、テスト、デプロイを自動化できます。
主な特徴
- 簡単な設定: YAML形式でワークフローを定義します。
- 豊富なコミュニティアクション: 他の開発者が作成したアクションを利用できます。
- GitHubとの統合: GitHubリポジトリとシームレスに連携します。
GitHubリポジトリの準備
まずは、GitHubにリポジトリを作成しましょう。
- GitHubにログインします。
- 右上の「+」アイコンをクリックし、「New repository」を選択します。
- リポジトリ名を入力し、PublicまたはPrivateを選択します。
- 「Create repository」をクリックします。
これで新しいリポジトリが作成されました。
GitHub Actionsの基本的な使い方
GitHub Actionsを使うためには、ワークフローを定義する必要があります。ワークフローは、特定のイベントが発生したときに実行される一連のアクションです。
ワークフローの作成
- リポジトリのルートディレクトリに
.github/workflows
フォルダを作成します。 - 新しい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_NAME
とYOUR_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に追加します。
- リポジトリの「Settings」タブをクリックします。
- 左側のメニューから「Secrets and variables」を選択し、「Actions」をクリックします。
- 「New repository secret」をクリックし、以下の情報を入力します。
-
Name:
HEROKU_API_KEY
- Value: あなたのHeroku APIキー
-
Name:
これで、CI/CDパイプラインの設定が完了しました。
まとめ
この記事では、GitHub Actionsを使用してCI/CDパイプラインを構築する方法を説明しました。CI/CDを導入することで、開発プロセスが効率化され、コードの品質が向上します。ぜひ、自分のプロジェクトにGitHub Actionsを取り入れてみてください。
もし質問や疑問があれば、コメント欄でお気軽にお知らせください。Happy Coding!
Discussion