GitHub Actionsを使ってみた:CI/CDパイプラインの構築と自動化

GitHub Actionsは、GitHubリポジトリにおけるCI/CD(継続的インテグレーション/継続的デリバリー)を自動化するための強力なツールです。コードのビルド、テスト、デプロイメントなどをワークフローとして定義し、リポジトリにプッシュやプルリクエストが行われるたびに自動で実行できます。GitHub Actionsを使うことで、開発の効率を大幅に向上させることができます。 この記事では、GitHub Actionsの基本的な使い方と、実際にCI/CDパイプラインを構築した体験を元に解説します。

#1. GitHub Actionsとは?

GitHub Actionsは、GitHubのリポジトリ内でワークフローを定義し、イベントに基づいて自動で実行する機能です。CI/CDの自動化、コードの品質チェック、デプロイなどを簡単に行うことができます。

主な特徴は以下の通りです:

  • 自動化: GitHubリポジトリで発生するイベント(プッシュ、プルリクエスト、リリースなど)に基づいてワークフローをトリガーできます。
  • 簡単な設定: YAML形式の設定ファイルでワークフローを定義します。
  • 柔軟性: 様々なアクションやジョブを組み合わせて、複雑なワークフローを作成できます。

#2. GitHub Actionsを使う準備

まず、GitHub Actionsを使用するための準備を行います。

2.1 GitHubリポジトリの作成

GitHub Actionsを使うには、GitHub上にリポジトリが必要です。まず、自分のリポジトリを作成します。

  • GitHubにログインして、新しいリポジトリを作成します。

2.2 GitHub Actionsファイルの作成

GitHub Actionsは、リポジトリ内の .github/workflows/ ディレクトリにYAMLファイルを配置して設定します。このYAMLファイルで、ジョブやステップ、実行するアクションなどを定義します。

例えば、リポジトリのルートに .github/workflows フォルダを作成し、その中に ci.yml ファイルを作成します。

.github/ └── workflows/ └── ci.yml

2.3 YAMLファイルの基本構造

GitHub Actionsのワークフローは、YAML形式で記述します。基本的な構成は以下の通りです:

name: CI Workflow on: [push, pull_request] 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: ワークフローの名前。
  • on: ワークフローをトリガーするイベント(例:push、pull_request)。
  • jobs: 複数のジョブを定義するセクション。ジョブごとに実行されるステップ(アクションやシェルコマンド)を指定します。
  • runs-on: ジョブが実行される環境(例:ubuntu-latest、macos-latest、windows-latest)。
  • steps: 各ジョブで実行する具体的なステップ。

#3. GitHub Actionsの実行フロー

3.1 イベントのトリガー

GitHub Actionsは、リポジトリで発生する特定のイベント(プッシュ、プルリクエスト、リリースなど)をトリガーとして、ワークフローを実行します。

例えば、上記の設定では、pushpull_request イベントが発生したときにワークフローが実行されます。

on: [push, pull_request]

これにより、コードがプッシュされたり、プルリクエストが作成されたりするたびに、定義されたアクションが自動で実行されます。

3.2 ステップの実行

GitHub Actionsは、定義されたステップを順番に実行します。例えば、actions/checkout を使用してリポジトリのコードをチェックアウトし、次に actions/setup-node を使ってNode.jsの環境を整え、その後 npm installnpm test で依存関係のインストールとテストを実行します。

#4. 実際にCI/CDパイプラインを構築してみた

私が実際にGitHub Actionsを使って、Node.jsアプリケーションのCIパイプラインを構築した経験を元に、具体的な手順を紹介します。

4.1 Node.jsアプリケーションのセットアップ

  1. リポジトリ作成: 新しいリポジトリを作成し、Node.jsの基本的なアプリケーション(例えば、express を使った簡単なサーバー)を作成します。
  2. ci.yml の作成: 上記のように、.github/workflows/ci.yml にYAMLファイルを作成し、CIの設定を記述します。
name: Node.js CI on: push: branches: - main pull_request: 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

4.2 テストの自動実行

  • テストスクリプトの作成: package.json にテストスクリプトを追加します。
{ "scripts": { "test": "jest" } }
  • テストの実行: npm test を使ってテストを実行します。このコマンドがGitHub Actionsで自動的に実行されます。

4.3 プッシュ後にCIが実行される

リポジトリにコードをプッシュすると、GitHub Actionsが自動でCIパイプラインを実行します。GitHubのリポジトリページから、Actionsタブをクリックすると、ジョブの進行状況や結果を確認できます。

#5. まとめ

GitHub Actionsを使用することで、開発者は手動で行うことなく、コードのビルド、テスト、デプロイなどの一連の作業を自動化することができます。CI/CDのパイプラインを自動化することで、開発の効率が向上し、バグやミスを減らすことができます。

  • 簡単な設定: YAMLファイルで簡単にCI/CDを設定できます。
  • 拡張性: さまざまなアクションを組み合わせて、複雑なワークフローを構築できます。
  • 無料で使用: GitHub Actionsは、GitHubの無料プランでも利用できます。

GitHub Actionsを使ってCI/CDを導入することで、ソフトウェア開発がより効率的に、信頼性高く進められるようになります。

タグ一覧