Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Day 51: CI/CD pipeline pt 2

2025年09月18日に「Dev.to」が公開したITニュース「Day 51: CI/CD pipeline pt 2」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AWS CodeBuildは、ソースコードを自動でビルド・テストし、デプロイできる成果物を作るクラウドサービスだ。サーバー管理は不要で、CI/CDを実現する。buildspec.ymlファイルでビルド手順を定義し、簡単なWebサイトをNginxでビルドする例を通じて、自動化の基本を学ぶ。

出典: Day 51: CI/CD pipeline pt 2 | Dev.to公開日:

ITニュース解説

CI/CDとは、ソフトウェア開発のプロセスを自動化し、効率と品質を高めるための手法である。継続的インテグレーション(CI)は、開発者が書いたコードを頻繁に共有リポジトリに統合し、自動でビルドやテストを行うことで、問題を早期に発見し解決する。継続的デリバリー(CD)は、CIでビルドされたソフトウェアを、いつでもリリース可能な状態に保ち、自動的にテスト環境や本番環境にデプロイできる状態を目指す。この一連の自動化された流れを「CI/CDパイプライン」と呼ぶ。

AWS CodeBuildは、このCI/CDパイプラインの一部を担う、フルマネージドの継続的インテグレーションサービスである。フルマネージドとは、ビルドを実行するために必要なサーバーの準備や管理、スケーリングといったインフラの運用をAWSがすべて代行してくれることを意味する。開発者は、ビルド環境の構築やメンテナンスの手間から解放され、コードを書くことに集中できる。CodeBuildの主な役割は、ソースコードのコンパイル、単体テストの実行、そしてデプロイ可能な成果物(アーティファクト)の生成である。つまり、開発者がGitリポジトリにプッシュしたコードを受け取り、それを実際に動作するアプリケーションの一部へと変換する作業を自動で行う。このサービスは、AWSの他のCI/CD関連サービスであるCodeCommit(ソースコード管理)、CodePipeline(CI/CDパイプラインのオーケストレーション)、CodeDeploy(デプロイ)と組み合わせて使用されることが多い。

CodeBuildがソースコードをどのようにビルドするかは、「buildspec.yml」というファイルで定義される。このファイルは、YAML形式で記述され、通常はソースコードリポジトリのルートディレクトリに配置される。buildspec.ymlには、ビルドの各段階(フェーズ)で実行すべきコマンドや設定が細かく記述されている。

buildspec.ymlの基本的な構造は、以下の要素で構成される。まず「version」はbuildspecファイルのバージョンを指定する。次に「phases」セクションでは、ビルドプロセスを複数の段階に分けて定義する。一般的なフェーズとして、「install」、「pre_build」、「build」、「post_build」などがある。

「install」フェーズでは、ビルドに必要な依存関係やツールをインストールする。例えば、プログラミング言語のランタイムやライブラリ、データベースクライアントなどが含まれる。ニュース記事の例では、Nginxというウェブサーバーをインストールする指示が含まれている。

「build」フェーズは、実際のビルド作業が行われる段階である。ソースコードのコンパイルや、アプリケーションのパッケージングなど、成果物を生成するための主要な処理がここに記述される。ニュース記事の例では、「Compiling the application」と示されているが、具体的なコマンドは後述の「Task 02」でさらに詳細に記述されている。

「post_build」フェーズは、ビルドが完了した後の後処理を行う段階である。例えば、生成された成果物の最終的な検証や、デプロイメントの準備などがここで行われる。

そして「artifacts」セクションは、CodeBuildがビルドプロセスの中で生成した、最終的にデプロイする対象となるファイルやディレクトリを指定する。これらのファイルは、ビルドの出力として保存され、後のデプロイフェーズで使用される。例えば、ウェブサイトのHTMLファイルや、コンパイルされた実行可能ファイルなどがアーティファクトとして指定される。

具体的な例として、ウェブサイトの簡単なHTMLファイル「index.html」を作成し、それをCodeBuildでビルドするシナリオを考えてみよう。まず、シンプルなHTMLファイルを用意する。このファイルは、「Hello from AWS CodeBuild」という見出しを持つウェブページを構成する。

次に、このHTMLファイルをNginxというウェブサーバーを使って表示できるように、CodeBuild内でNginxをインストールし、HTMLファイルをNginxの公開ディレクトリに配置する計画を立てる。この計画を実行するためのbuildspec.ymlは以下のようになる。

「install」フェーズでは、「runtime-versions」としてDockerのバージョン18を指定し、さらに「commands」として「yum install -y nginx」を実行してNginxウェブサーバーをインストールする。これは、ビルド環境内でNginxが利用可能になるように準備するステップである。「echo Installing Nginx...」というコマンドは、ビルドログにメッセージを出力するためのもので、現在の作業内容を分かりやすくする役割がある。

「build」フェーズでは、Nginxの公開ディレクトリである「/usr/share/nginx/html」を作成し、先ほど作成した「index.html」ファイルをそのディレクトリにコピーする。これにより、NginxがこのHTMLファイルをウェブページとして提供できるようになる。「echo Build started on date」のようなコマンドは、ビルドの進行状況をログで確認するために使われる。

「post_build」フェーズでは、ビルドが完了したことを示すメッセージを出力する。「echo Build completed on date」や「echo Artifacts ready for deployment」といったメッセージがログに表示され、ビルドの終了と成果物の準備が整ったことを確認できる。

最後に、「artifacts」セクションで「files: - index.html」と指定する。これは、ビルド完了後、CodeBuildが「index.html」をビルドの成果物として保存することを意味する。この成果物は、S3バケットなどのストレージに保存され、後続のデプロイプロセスで利用される。

これらの変更(index.htmlとbuildspec.ymlの追加)をCodeCommitなどのソースコードリポジトリにプッシュする際には、「git add」、「git commit」、「git push」といったGitコマンドを使用する。これにより、ソースコードリポジトリに変更が反映され、CodeBuildがその変更を検知してビルドプロセスを開始できるようになる。

AWSコンソールでCodeBuildプロジェクトを作成する手順は、非常に直感的である。まず、新しいビルドプロジェクトを作成し、ソースプロバイダーとしてCodeCommitを選択して、先ほどのGitリポジトリと接続する。次に、ビルドを実行する環境を選択する。ニュース記事の例では、「Managed image」として「Amazon Linux 2」をベースにした「Standard runtime」が選ばれている。これは、CodeBuildが提供する準備済みのビルド環境イメージを利用することを意味する。そして、ビルド仕様として、リポジトリにコミットした「buildspec.yml」を使用するように指定する。これらの設定が完了したら、ビルドを開始するだけでよい。

ビルドが開始されると、CodeBuildはbuildspec.ymlに記述されたコマンドを順番に実行する。具体的には、Nginxのインストール、index.htmlの適切なディレクトリへのコピーといった処理がログに表示される。ビルドが無事に完了すれば、指定された「index.html」が成果物として生成されていることを確認できる。この一連のプロセスは、手動でサーバーにログインして作業する手間を省き、エラーの可能性を減らし、常に一貫した方法でアプリケーションをビルドできるという大きなメリットをもたらす。CodeBuildは、開発者が書いたコードを迅速かつ信頼性高く、デプロイ可能な形へと変換する強力なツールなのである。

関連コンテンツ

関連IT用語