CI/CDとは?テスト・公開を自動化する手順を実践解説

  • 2026.10.16
       
【CI/CD】開発環境を効率化する

「CI/CD」は、コードの変更をきっかけにテストや公開(デプロイ)を自動で実行し、ソフトウェアを素早く安全に届けるための仕組みです。
CIでは変更のたびに自動テストで不具合を早期に見つけ、CDではテストに合格した変更をリリースや本番環境への公開まで自動で進められます。
チーム開発での品質管理はもちろん、個人開発やポートフォリオの更新作業を効率化したい場面でも役立ちます。
本記事では、CI/CDの基本を解説したうえで、GitHub Actionsを使って「pushするとテストが動き、成功したらWebページが自動で公開される」流れを実際の画面とあわせて紹介します。

CI/CDとは

CI/CDとは、ソフトウェアの開発からテスト、リリースまでの作業を自動化し、継続的にソフトウェアを改善・提供するための考え方や仕組みです。
CIは「Continuous Integration(継続的インテグレーション)」、CDは「Continuous Delivery(継続的デリバリー)」または「Continuous Deployment(継続的デプロイ)」を意味します。

CI/CDは、開発チームと運用チームが連携して素早く安全にリリースする「DevOps」を支える代表的な取り組みでもあります。

▼こちらもチェック▼
DevOpsとは?【入門】アジャイル開発との違い、メリットを解説 DevOpsとは?【入門】アジャイル開発との違い、メリットを解説 ▶

CI(継続的インテグレーション)とは

CIとは、開発者が作成・変更したコードを共有リポジトリ(コードを保存・共有する場所)に統合する際に、ビルドやテストなどを自動的に実行する仕組みです。

複数の開発者が同じソフトウェアを開発する場合、それぞれの変更をまとめたときに、コード同士が競合したり、既存の機能に不具合が発生したりすることがあります。
変更を長期間統合せずに開発を進めると、問題が発生した箇所を特定することも難しくなります。

CIでは、コードをリポジトリにpush(送信)したときなどにテストを実行し、変更によって不具合が発生していないかを早い段階で確認します。
これにより、不具合の早期発見や修正にかかる負担の軽減が期待できます。

CD(継続的デリバリー/継続的デプロイ)とは

CDには、継続的デリバリーと継続的デプロイという2つの意味があります。
どちらもCIの後に続く工程で、テストなどを通過したソフトウェアをリリースできる状態にする、または実際に公開するまでの作業を自動化します。

継続的デリバリー(Continuous Delivery)は、変更されたコードを自動でビルド・テストし、いつでもリリースできる状態に保つことを目指します。
本番環境への公開は、担当者の承認や手動操作をきっかけに行います。

一方、継続的デプロイ(Continuous Deployment)は、テストなどの条件を満たした変更を、本番環境へ自動的にデプロイ(公開)する仕組みです。
所定の検証を通過すれば、人によるリリース操作を挟まずに公開されます。

両者の違いは、本番環境へ公開する前に、人による判断や操作を挟むかどうかにあります。
CIを含めた3つの違いを整理すると、次のとおりです。

種類自動化する範囲本番環境への公開
CI(継続的インテグレーション)コードの統合時のビルド・テスト対象外
継続的デリバリーCI+いつでもリリースできる状態にするまで人が判断・操作して公開
継続的デプロイCI+本番環境への公開までテストに合格すれば自動で公開

本記事の実践では、3章でCI(テストの自動実行)を作成し、4章でテストに合格した変更をGitHub Pagesへ自動公開する継続的デプロイの構成に発展させます。

▼こちらもチェック▼
デプロイとは【3分でわかる】ビルドやリリースとの違い|IT用語 デプロイとは【3分でわかる】ビルドやリリースとの違い|IT用語 ▶

CI/CDパイプラインの流れ

CI/CDパイプラインとは、コードの変更からテスト、デプロイまでの一連の処理を、あらかじめ定義した順序で実行する仕組みです。
一般的なCI/CDパイプラインは、次のような流れで構成されます。

  1. コードを変更する:開発者が機能の追加や不具合の修正を行います。
  2. リポジトリにpushする:変更したコードをGitHubなどのリポジトリに送信します。
  3. 自動テストを実行する:テストやビルドを実行し、問題がないか確認します。
  4. 結果を判定する:テストが失敗した場合は処理を停止し、成功した場合は次の工程へ進みます。
  5. デプロイする:条件を満たしたコードをWebサーバーなどに配置し、利用できる状態にします。

これらの作業を手作業で行う場合とCI/CDで自動化した場合を比べると、次のような違いがあります。

作業手作業の場合CI/CDで自動化した場合
テスト担当者が実行するため、実行忘れや確認漏れが起こりやすいpushのたびに同じ手順で必ず実行される
不具合の発見まとめて確認すると、どの変更が原因か特定しにくい変更ごとに結果が残るため、原因を絞り込みやすい
デプロイファイルの配置ミスや更新漏れが起こりやすい決められた手順で毎回同じように公開される
作業の記録誰がいつ何をしたかが残りにくい実行履歴とログが自動で残る

このような仕組みを導入することで、コードの変更から公開までの作業を効率化できます。
ただし、実際の工程や順序は、プロジェクトの規模や採用するツールによって異なります。

GitHub ActionsでCI/CDを実践するための準備

ここからは、GitHubが提供する自動化機能「GitHub Actions」を使い、CI/CDの仕組みを実践していきます。
今回は、簡単なWebサイトに対して自動テストを実行し、テストに合格した場合にGitHub Pages(GitHubが提供する無料のWebサイト公開機能)で公開する構成を作成します。

必要なものと事前準備

今回の実践で必要なものは、以下の2つです。

  • GitHubアカウント(無料のGitHub Freeプランで可)
  • Webブラウザー

GitHubアカウントをお持ちでない場合は、事前に登録が必要です。
登録方法はGitHubでのアカウントの作成(GitHub公式ドキュメント)を参照してください。

今回はGitHub上のファイル編集機能を利用するため、ローカル環境(自分のPC)への開発ツールのインストールは必須ではありません。
テストの実行に必要なNode.jsも、GitHub Actionsの実行環境に自動でセットアップします。

また、今回のようにパブリック(公開)リポジトリで標準の実行環境を使う場合、GitHub Actionsは無料で利用できます(料金の詳細は5章で解説します)。

▼こちらもチェック▼
【画像付き】GitHubの使い方|設定・基本操作 【画像付き】GitHubの使い方|設定・基本操作 ▶

リポジトリを作成する

まずは、実践で使用するリポジトリを作成します。
GitHubにログインし、画面右上の「+」メニューから「New repository」を選択します。

作成画面が表示されたら、次のように設定し、「Create repository」をクリックしてリポジトリを作成します。

項目設定値説明
Repository nameci-cd-practiceリポジトリ名(任意の名前で可)
Choose visibilityPublicリポジトリの公開範囲
Add READMEOnREADMEファイルを作成し、mainブランチが用意された状態で始める
GitHubのリポジトリ新規作成画面。Repository nameにci-cd-practiceを入力し、公開範囲をPublic、Add READMEをOnにした状態
リポジトリ名・公開範囲・READMEを設定してCreate repositoryを押す

今回は、GitHub PagesでWebサイトを公開するため、Publicリポジトリを使用します。
GitHub Freeプランの場合、GitHub Pagesを利用できるのはパブリックリポジトリのみです。
公開したWebサイトは誰でも閲覧できるため、パスワードなどの機密情報は含めないようにしましょう。

【CI】pushするたびにテストを自動実行する

GitHub Actionsでは、「ワークフロー」と呼ばれる設定ファイルを作成することで、特定の操作をきっかけに処理を自動実行できます。
この章では、リポジトリへのpushをきっかけにJavaScriptのテストを実行するワークフローを作成します。
なお、この章で自動化するのはテストの実行(CI)までで、Webサイトの公開はまだ行いません。

テスト対象のコードとテストを追加する

まずは、テスト対象となるJavaScriptファイルと、動作を確認するためのテストファイルを用意します。
今回は、2つの数値を足し算する簡単な関数を作成し、計算結果が正しいかをテストします。

GitHubのリポジトリ画面で「Add file」から「Create new file」を選択し、ファイル名に「sum.js」と入力して、以下のコードを記述します。

sum.js
function sum(a, b) {
  return a + b;
}

if (typeof module !== "undefined") {
  module.exports = { sum };
}
GitHubのファイル作成画面。ファイル名にsum.jsを入力し、足し算を行うsum関数のコードを記述した状態
「Add file」からsum.jsを作成してコードを記述

後半のif文は、作成したsum関数をテストファイルなど別のファイルから読み込めるようにするための記述です。

コードを入力したら、画面右上の「Commit changes…」をクリックします。
表示されたダイアログで「Commit directly to the main branch」が選択されていることを確認し、「Commit changes」をクリックして保存します。

続いて、同じ手順で「test.js」というファイルを作成し、以下のコードを記述してコミットします。

test.js
const { sum } = require("./sum");

function testSum() {
  const result = sum(2, 3);

  if (result !== 5) {
    throw new Error(
      `Expected 5, but got ${result}`
    );
  }

  console.log("Test passed!");
}

testSum();
GitHubのファイル作成画面。ファイル名にtest.jsを入力し、sum(2, 3)の結果が5かどうかを確認するテストコードを記述した状態
同じ手順でtest.jsを作成してテストコードを記述

このテストでは、sum(2, 3)の結果が5であれば「Test passed!」と表示し、5以外であればエラーを発生させます。
エラーが発生するとプログラムが異常終了するため、GitHub Actionsはこれを「テスト失敗」として扱います。

これで、テスト対象のコードとテストコードの用意は完了です。

ワークフローファイル(YAML)を作成する

次に、GitHub Actionsにテストの実行方法を指示するワークフローファイルを作成します。
「Add file」から「Create new file」を選択し、ファイル名に「.github/workflows/ci.yml」と入力します。
ファイル名の欄に「/」を入力すると、自動的にフォルダーとして区切られ、.githubフォルダーとworkflowsフォルダーがまとめて作成されます。

GitHub Actionsでは、.github/workflows/ディレクトリ内にYAML形式(.ymlまたは.yaml)のファイルを配置することで、ワークフローを定義できます。
YAMLは、インデント(行頭の空白)で設定の階層を表すテキスト形式です。
以下のコードを記述してください。

.github/workflows/ci.yml
name: CI Test

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Set up Node.js
        uses: actions/setup-node@v7
        with:
          node-version: 22

      - name: Run tests
        run: node test.js
GitHubのファイル作成画面。ファイル名欄に.github/workflows/ci.ymlを入力し、テストを実行するワークフローを記述した状態
ファイル名に.github/workflows/ci.ymlと入力するとフォルダーも作成される

インデントは半角スペース2つずつで揃え、タブ文字は使わないようにしましょう。
インデントがずれると、ワークフローが正しく読み込まれません。

それぞれの設定内容は以下のとおりです。

設定項目意味
nameワークフロー名(Actionsタブに表示される名前)
onワークフローの実行タイミング(今回はmainブランチへのpushをきっかけに実行)
jobs実行する処理のまとまり(ジョブ)を定義する。今回は「test」というジョブを1つ定義
runs-onジョブを実行する環境。ubuntu-latestは、GitHubが提供するUbuntuの実行環境(ランナー)を使用する設定
stepsジョブ内で実行する処理を、上から順に定義する
actions/checkout@v6リポジトリのコードを実行環境に取得する
actions/setup-node@v7指定したバージョン(今回は22)のNode.jsを実行環境にセットアップする
run指定したコマンドを実行する(今回はnode test.jsでテストを実行)

なお、branchesにmainを指定しているため、今回のワークフローはmainブランチへのpushで実行されます。
別のブランチ名を使用している場合は、実際のブランチ名に合わせて変更してください。
書き方の詳細は、ワークフロー構文(GitHub公式ドキュメント)で確認できます。

設定を入力したら、「Commit changes」をクリックして保存します。
このコミットもmainブランチへのpushとして扱われるため、保存した時点でワークフローが実行されます。

Actionsタブで実行結果を確認する

ワークフローファイルを保存したら、リポジトリ上部の「Actions」タブを開きます。
ワークフローが正常に認識されていれば、左側のメニューに「CI Test」が表示され、一覧にコミットメッセージ(ここでは「Create ci.yml」)の名前で実行履歴が追加されます。

GitHubのActionsタブ。CI TestワークフローのCreate ci.ymlの実行が緑のチェックマーク付きで成功している状態
Actionsタブに実行履歴が表示される(緑のチェックマークは成功)

成功すると緑のチェックマーク、失敗すると赤いバツ印が表示されます。
実行履歴をクリックし、左側の「test」ジョブを選択すると、各ステップの処理状況やログを確認できます。
「Run tests」のステップを開き、次のように表示されていればテストは成功です。

実行結果(Run testsのログ)
Test passed!

ログの見方は、ワークフロー実行ログの使用(GitHub公式ドキュメント)も参考にしてください。

わざとテストを失敗させてCIの役割を確かめる

次に、テスト対象のコードに問題がある場合、CIがどのように動作するのかを確認しましょう。
リポジトリの「sum.js」を開き、右上の鉛筆アイコンから編集画面を開いて、足し算(a + b)を引き算(a – b)に変更します。

sum.js(わざとテストを失敗させる変更)
function sum(a, b) {
  return a - b;
}

if (typeof module !== "undefined") {
  module.exports = { sum };
}

変更をコミットすると、mainブランチへのpushをきっかけにGitHub Actionsが再び実行されます。
今回のコードでは、sum(2, 3)の結果が-1になるため、テストで期待値の5と一致せず、エラーが発生します。

Actionsタブの実行一覧。Update sum.jsの実行が赤いバツ印で失敗し、その下にCreate ci.ymlの成功した実行が並んでいる状態
テストが失敗した実行には赤いバツ印が付く

失敗した実行履歴を選択し、「test」ジョブを確認すると、「Run tests」のステップで失敗していることがわかります。

testジョブの実行ログ。Run testsのステップが失敗し、Error: Expected 5, but got -1とProcess completed with exit code 1が表示されている状態
失敗したステップのログでエラーの原因を確認できる
実行結果(Run testsのログ・一部抜粋)
/home/runner/work/ci-cd-practice/ci-cd-practice/test.js:7
    throw new Error(
    ^

Error: Expected 5, but got -1
    at testSum (/home/runner/work/ci-cd-practice/ci-cd-practice/test.js:7:11)
(中略)

Node.js v22.23.3
Error: Process completed with exit code 1.

ログでは、「Error: Expected 5, but got -1」の行に注目します。
test.jsで用意したエラーメッセージで、期待値5に対して結果が-1だったことを示しています。
最終行の「exit code 1」はコマンドが異常終了したことを表し、GitHub Actionsはこれを受けてステップを失敗と判定しています。

このように、CIではコードの変更によって発生した問題を自動で検知できます。
テストが失敗した場合は、ログから原因を確認し、コードを修正して再度テストを実行することが重要です。

確認が終わったら、sum.jsを元のコード(a + b)に戻してコミットし、Actionsタブでテストが再び成功することを確認しておきましょう。
コードを戻さないまま次の章に進むと、テストが失敗してWebサイトが公開されません。

【CD】テストが通ったら自動でWebサイトを公開する

この章では、3章で作成したCIのワークフローにデプロイの処理を追加し、テストに合格した変更をGitHub Pagesへ自動で公開します。
mainブランチへのpushから公開までを人の操作なしで行うため、継続的デプロイにあたる構成です。

GitHub Pagesの公開元を「GitHub Actions」に設定する

まずは、Webサイトを公開するための設定を行います。

リポジトリの「Settings」タブを選択し、左側のメニューから「Pages」を開きます。
設定画面を開いたら、「Build and deployment」の「Source」から、「GitHub Actions」を選択します。

SettingsタブのPages設定画面。Build and deploymentのSourceでGitHub Actionsを選択した状態
Settings→PagesのSourceを「GitHub Actions」に変更

これで、GitHub Actionsを通じてWebサイトを公開できるようになります。
画面に表示される「Static HTML」などのテンプレートは使用しないため、「Configure」をクリックする必要はありません。
詳細は、GitHub Pagesサイトの公開元の設定(GitHub公式ドキュメント)で確認できます。

「テスト→デプロイ」のワークフローに書き換える

次に、3章で作成したワークフローファイル「.github/workflows/ci.yml」を編集します。
今回は、テストに合格した場合にのみGitHub Pagesへのデプロイを実行する構成に変更します。

まず、Webサイトとして表示するHTMLファイルを用意しましょう。
リポジトリで「Add file」から「Create new file」を選択し、ファイル名に「index.html」と入力して、以下のコードを記述します。

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CI/CD Practice</title>
</head>
<body>
  <h1>CI/CDの実践</h1>
  <p>GitHub Actionsによる自動テストと自動デプロイが完了しました。</p>
</body>
</html>
GitHubのファイル作成画面。ファイル名にindex.htmlを入力し、CI/CDの実践と表示するHTMLを記述した状態
公開するページとしてindex.htmlを作成

作成したHTMLファイルをコミットして保存したら、続いて「.github/workflows/ci.yml」を開き、鉛筆アイコンから編集画面を開きます。
既存のtestジョブの下に、deployジョブを追加します。
追加後のファイル全体は、次のとおりです。

.github/workflows/ci.yml(deployジョブを追加した全体)
name: CI Test

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Set up Node.js
        uses: actions/setup-node@v7
        with:
          node-version: 22

      - name: Run tests
        run: node test.js

  # ここから追加(deployジョブ)
  deploy:
    needs: test
    runs-on: ubuntu-latest

    permissions:
      contents: read
      pages: write
      id-token: write

    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Configure GitHub Pages
        uses: actions/configure-pages@v6

      - name: Upload site artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: .

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v5

このワークフローでは、テストとデプロイを別々のジョブとして定義しています。
追加した主な設定の意味は、次のとおりです。

設定項目意味
needs: testtestジョブが成功した場合にのみ、deployジョブを実行する
permissionsワークフローに与える権限。GitHub Pagesへのデプロイには、pages: writeとid-token: writeが必要
environmentデプロイ先の環境。github-pagesを指定し、公開URLを実行結果に表示する
actions/configure-pages@v6GitHub Pagesの設定情報を読み込む
actions/upload-pages-artifact@v5公開するファイルをまとめてアップロードする。path: .はリポジトリ直下のファイルを対象にする設定(.githubフォルダーなどは自動で除外される)
actions/deploy-pages@v5アップロードしたファイルをGitHub Pagesに公開する

特に重要なのは、needs: testの設定です。
この指定により、テストが成功しなければデプロイのジョブは実行されないようになっています。
各設定の詳細は、GitHub Pagesでのカスタムワークフローの使用(GitHub公式ドキュメント)で確認できます。

編集が完了したら、「Commit changes」をクリックして保存します。
このコミットをきっかけに、書き換えたワークフローがすぐに実行されます。

公開URLで動作を確認する

ワークフローの書き換えが完了したら、「Actions」タブを開いて最新の実行履歴を選択し、testとdeployの両方のジョブが成功しているかを確認してください。
ジョブが無事に成功していれば、以下のようにtestからdeployへ線でつながった図が表示され、deployの下に公開されたWebサイトのURLが表示されます。

ワークフローの実行詳細画面。testジョブとdeployジョブが線でつながって両方成功し、deployの下に公開URLが表示されている状態
testとdeployが成功するとdeployの下に公開URLが表示される

URLは「https://ユーザー名.github.io/リポジトリ名/」の形式です。
表示されたURLにアクセスし、作成したHTMLファイルの内容が表示されていれば成功です。

GitHub Pagesで公開されたWebページ。CI/CDの実践という見出しと、GitHub Actionsによる自動テストと自動デプロイが完了しましたという文章が表示されている
GitHub Pagesで公開されたWebページ

なお、テストが失敗した場合は、deployジョブが実行されないため、新しい変更はデプロイされません。
試しに、3章と同じようにsum.jsを引き算に変更してコミットすると、testジョブが失敗し、deployジョブはスキップ(斜線のアイコン)されます。
確認後は、sum.jsを元のコードに戻しておきましょう。

ワークフローの実行詳細画面。testジョブが赤いバツ印で失敗し、deployジョブがスキップされて実行されていない状態
テストが失敗するとdeployジョブはスキップされる

このように、CIとCDを連携させることで、コードの検証から公開までを一連の流れとして自動化できます。

うまく動かないときの確認ポイント

手順どおりに進めてもワークフローが動かない場合は、次の点を確認してください。

症状主な原因と対処法
Actionsタブに実行履歴が表示されないファイルの場所が「.github/workflows/」になっているか、拡張子が「.yml」か、branchesの指定が実際のブランチ名と一致しているかを確認する
ワークフローファイルのエラーが表示されるインデントのずれやタブ文字の混入が多い原因。本記事のコードをコピーして貼り付け直す
Run testsのステップで失敗するログの「Error:」の行を確認し、sum.jsやtest.jsの内容を見直す
「Get Pages site failed」と表示されるSettings→PagesのSourceが「GitHub Actions」になっているかを確認する
deployジョブで権限に関するエラーが表示されるdeployジョブのpermissionsに、pages: writeとid-token: writeが書かれているかを確認する

CI/CDのメリットと注意点

CI/CDを導入するメリット

CI/CDを導入する主なメリットは、次の3つです。

  1. 不具合を早期に発見できる
    コードの変更時にテストを自動実行することで、既存機能への影響や想定外の動作を早い段階で検知できます。
    問題が発生したタイミングと変更内容を照らし合わせやすくなるため、原因の特定や修正も進めやすくなります。
  2. 手作業による負担を減らせる
    テストやデプロイを手動で行う場合、実行漏れや設定ミスが発生する可能性があります。
    CI/CDによって定型作業を自動化すれば、開発者が繰り返し行う作業を減らし、機能開発や品質改善に時間を使いやすくなります。
  3. リリースを迅速化できる
    テストからデプロイまでの流れを自動化することで、公開作業にかかる時間を短縮できます。
    小さな変更を継続的にリリースしやすくなるため、利用者からのフィードバックを取り入れながら改善を進められます。

デメリットと導入時の注意点

CI/CDは便利な一方で、導入や運用には手間もかかります。
効果的に活用するために、次の点に注意しましょう。

  • テストの品質を確保する
    自動テストを導入しても、テスト対象や確認内容が不十分であれば、不具合を見逃す可能性があります。
    正常系だけでなく、異常系や境界値なども考慮し、実際のアプリケーションに必要なテストを用意することが重要です。
  • ワークフローの保守が必要になる
    依存ライブラリや実行環境の変更、外部サービスの仕様変更などによって、ワークフローが正常に動作しなくなる場合があります。
    GitHub Actionsでも、利用しているアクションのバージョンが古くなると動作しなくなることがあるため、定期的に見直しましょう。
  • 権限や機密情報を適切に管理する
    デプロイに必要な認証情報やAPIキーなどはソースコードに直接記入せず、GitHub ActionsのSecretsなどを利用し、必要な処理に限り参照できるようにしておきましょう。
    また、ワークフローに付与する権限も必要最小限に設定することが大切です。
  • 導入・運用コストを考慮する
    自動化には、ワークフローの作成やテストの整備、実行環境の維持などのコストがかかります。
    小規模なプロジェクトの場合は、まずテストの自動実行など、効果が大きい部分から導入するとよいでしょう。

GitHub Actionsの無料枠と料金プラン

GitHub Actionsの料金は、リポジトリの公開設定や実行環境、利用するプランによって異なります。
GitHub Actionsの課金(GitHub公式ドキュメント)によると、パブリックリポジトリで標準の実行環境(GitHubホステッドランナー)を使う場合は無料です。
本記事の実践もパブリックリポジトリで行っているため、料金はかかりません。

プライベートリポジトリで利用する場合は、プランごとに次の無料枠が毎月付与されます(2026年10月時点)。

プラン実行時間(1か月あたり)成果物ストレージ
GitHub Free2,000分500MB
GitHub Pro3,000分1GB
GitHub Team3,000分2GB
GitHub Enterprise Cloud50,000分50GB

無料枠を超えた場合は、追加の利用分に料金が発生します。
支払い方法を登録していない場合は、無料枠を使い切った時点で利用がブロックされるため、利用状況を確認しておくことが重要です。

主なCI/CDツールの比較と選び方

CI/CDを実現するツールには、GitHub Actions以外にもさまざまな選択肢があります。
以下は、代表的なツールの一例です。

ツール特徴向いているケース
GitHub ActionsGitHubに統合されており、リポジトリ内のYAMLファイルでワークフローを管理できるGitHubでソースコードを管理している場合
GitLab CI/CDGitLabに統合されており、パイプラインやジョブをまとめて管理できるGitLabでソースコード管理からCI/CDまで運用したい場合
Jenkinsプラグインによる拡張性が高く、実行環境を柔軟に構築できる独自の要件や既存の開発環境に合わせて細かく構成したい場合
CircleCICI/CD向けの実行環境やワークフロー管理機能を提供するビルドやテストを効率的に自動化したい場合

ツールを選ぶ際は、既存のソースコード管理サービスとの相性、必要な機能、運用のしやすさ、料金などを比較することが大切です。
既に利用しているサービスとの連携を重視する場合は、そのサービスに統合されたCI/CD機能から検討するとよいでしょう。

CI/CDに関するよくある質問

Q. CIとCDは必ずセットで導入する必要がありますか?

A. 必ずしもセットで導入する必要はありません。
まずはCIによる自動テストから始め、テストやリリースの運用が整ってきた段階でCDを導入する方法もあります。
特に、公開前に人の確認が必要なプロジェクトでは、テストだけを自動化し、デプロイは人が確認してから実行する構成も有効です。

Q. テストに失敗した場合、コードは自動的に元に戻りますか?

A. 通常、テストが失敗しても、リポジトリにコミットされたコードが自動的に取り消されるわけではありません。
CI/CDのワークフローでは、失敗したジョブの後続処理を停止するのが一般的です。
不具合のあるコードがmainブランチに入ること自体を防ぎたい場合は、ブランチ保護ルールやプルリクエストの必須チェックなどを組み合わせて設定します。

Q. GitHub Actionsを使うために、ローカル環境の構築は必要ですか?

A. 必須ではありません。
ただし、実際の開発ではローカル環境でコードを実行・検証してからpushする運用も一般的です。
ローカルとCIの実行環境(Node.jsのバージョンなど)をできるだけ一致させると、環境の違いによる問題を減らしやすくなります。

Q. GitHub Pages以外へのデプロイも自動化できますか?

A. 可能です。
GitHub Actionsは、さまざまなクラウドサービスやホスティングサービスと連携できます。
ただし、デプロイ先によって必要な設定や認証方法が異なるため、利用するサービスの公式ドキュメントを確認し、認証情報や権限を適切に設定することが重要です。
また、VercelのようにGitHubと連携するだけでpush時の自動デプロイを行えるサービスもあります。

▼こちらもチェック▼
Vercelとは?Webサイトをデプロイする方法を初心者向けに実践解説 Vercelとは?Webサイトをデプロイする方法を初心者向けに実践解説 ▶

まとめ

CI/CDは、ソフトウェアのテストやリリースに関する作業を自動化し、開発の効率化と品質の維持を支援する仕組みです。
本記事では、GitHub Actionsを使って、pushをきっかけにテストを実行するCIと、テストに合格した変更をGitHub Pagesへ自動公開する継続的デプロイを実践しました。

CI/CDを導入する際は、すべての工程を一度に自動化するのではなく、まずはテストの自動実行など、取り組みやすい部分から始めることが大切です。
プロジェクトの規模や要件に合わせて段階的に自動化を進めることで、継続的に改善できる開発環境を整えやすくなります。

     

Programmingカテゴリの最新記事