QAエンジニアとして、学習のためAWSとGitHubを組み合わせたCI環境の構築を実践してみました。本記事では、その手順を共有します。
1. GitHubリポジトリの準備
ステップ 1: GitHubアカウントの作成
- GitHubの公式サイトにアクセスします。
- 右上の「Sign up」をクリックします。
- 必要な情報を入力してアカウントを作成します。
ステップ 2: 新しいリポジトリの作成
- GitHubにサインインします。
- 右上の「+」アイコンをクリックし、「New repository」を選択します。
- リポジトリ名を入力します(例:
ci-project
)。 - リポジトリの説明を追加します(任意)。
- 「Public」または「Private」を選択します。※今回は「Public」を指定しています。
- Public: 誰でも見ることができる。
- Private: 指定したユーザーのみがアクセスできる。
- 「Initialize this repository with a README」にチェックを入れると、初期ファイルが作成されます(任意)。
- 「Create repository」をクリックしてリポジトリを作成します。
ステップ 3: リポジトリのクローン
-
作成したリポジトリのページに移動します。
-
「Code」ボタンをクリックし、HTTPSまたはSSHのURLをコピーします。
-
コマンドラインまたはターミナルを開き、次のコマンドを実行してリポジトリをクローンします:
git clone https://github.com/username/ci-project.git
(
username
をあなたのGitHubユーザー名に置き換えます。)
ステップ 4: 必要なブランチの設定
-
クローンしたリポジトリのディレクトリに移動します:
cd ci-project
-
新しいブランチを作成します(例:
develop
):git checkout -b develop
-
新しいブランチをリモートリポジトリにプッシュします:
git push -u origin develop
ステップ 5: GitHubの準備完了
- GitHubのリポジトリページに戻り、「Branches」タブをクリックします。
- 作成した
develop
ブランチが表示されていることを確認します。
2. AWSアカウントの設定
AWSアカウントを作成し、CI/CDに必要な権限を持つユーザーを設定する手順については、以下のリンクを参照してください。
これらの手順に従って、AWSアカウントを設定してください。
3. AWS CodeBuildの設定
S3バケットの作成
AWS CodeBuildのアーティファクトを保存するために、S3バケットを作成します。
ステップ 1: S3を開く
- AWS Management Consoleにサインインします。
- サービス一覧から「S3」を選択します。
ステップ 2: バケットの作成
- 「Create bucket」をクリックします。
-
バケット名を入力します(例:
my-codebuild-artifacts
)。バケット名はユニークである必要があります。 - リージョンを選択します。CodeBuildプロジェクトと同じリージョンを選ぶことをお勧めします。
- オプションで、バケットの設定を調整します(例: パブリックアクセスのブロック、バージョニングなど)。
- 「バケット作成」をクリックしてバケットを作成します。
CodeBuildプロジェクトの作成
ステップ 1: CodeBuildを開く
- AWS Management Consoleにサインインします。
- サービス一覧から「CodeBuild」を検索して選択します。
ステップ 2: ビルドプロジェクトの作成
- CodeBuildダッシュボードで「Create build project」をクリックします。
ステップ 3: プロジェクト設定
-
プロジェクト名を入力します(例:
ci-build-project
)。 - 説明を追加します(任意)。
- ソースプロバイダーで「GitHub」を選択します。
- GitHubアカウントへのアクセスを許可するため、最初に「Connect to GitHub」をクリックします。
- GitHubにサインインし、AWS CodeBuildがリポジトリにアクセスできるように承認します。
- 許可した後、リポジトリのリストが表示されるので、使用するリポジトリを選択します。
ステップ 5: ビルド環境の設定
- 環境イメージで「Managed image」を選択します。
-
オペレーティングシステム、ランタイム、イメージのバージョンを選択します。
- 例:
- OS:
Amazon Linux
- Runtime:
Standard
- Image version:
aws/codebuild/amazonlinux2-x86_64-standard:5.0
(最新のバージョンを選択)
- OS:
- 例:
3. サービスロールで「Create a new service role」を選択するか、既存のロールを選択します。
ステップ 6: ビルド仕様の設定
-
Buildspecの設定を行います。
- **buildspecを選択します。
-
buildspec.yml
をBuildspec名を入力します。
ステップ 7: アーティファクトの設定
- アーティファクトの出力先を設定します。
- アーティファクトの種類(例:
No artifacts
,Amazon S3
など)を選択します。 - S3を選択した場合、出力先のバケットを指定します。
- アーティファクトの種類(例:
ステップ 8: CloudwatchとS3の設定
ステップ 9: 確認と作成
- 「ビルドプロジェクトを作成する」をクリックします。
ステップ 10: プロジェクトの確認
- 作成したプロジェクトがCodeBuildダッシュボードに表示されることを確認します。
4. AWS CodePipelineの設定
CodePipelineの作成
ステップ 1: CodePipelineを開く
- AWS Management Consoleにサインインします。
- サービス一覧から「CodePipeline」を検索して選択します。
ステップ 2: パイプラインの作成
- CodePipelineダッシュボードで「Create pipeline」をクリックします。
ステップ 3: パイプライン設定
-
パイプライン名を入力します(例:
ci-pipeline
)。 -
サービスロールを選択します。
- 「新しいサービスロールを作成」を選択します。
-
実行モードを選択します。
- 「キュー(パイプラインタイプV2が必須)」を選択します。
- 「次に」をクリックします。
ステップ 4: ソースステージの設定
- ソースプロバイダーとして「GitHub」を選択します。
- GitHubアカウントへのアクセスを許可するため、「Connect to GitHub」をクリックします。
- リポジトリの一覧から使用するリポジトリを選択します。
-
ブランチ名を指定します(例:
develop
)。 - トリガータイプ「フィルターを指定」イベントタイプ「プッシュ」フィルタータイプ「ブランチ」、含める「develop」
- 「次に」をクリックします。
ステップ 5: ビルドステージの追加
- ビルドプロバイダーとして「AWS CodeBuild」を選択します。
- 先ほど作成したCodeBuildプロジェクトを選択します。
- 「次に」をクリックします。
今回はデプロイは考慮しないため。
デプロイステージは「導入段階をスキップ」にする。
ステップ 7: パイプラインの設定の確認
- 「パイプラインを作成する」をクリックします。
ステップ 8: パイプラインの実行
- パイプラインが作成されたら、「develop」をリポジトリにプッシュして、パイプラインが自動的にトリガーされることを確認します。
- CodePipelineのダッシュボードで、各ステージが正しく実行されているか確認します。
5. テストの設定
AWS CodeBuildプロジェクトに自動テストを組み込むためには、buildspec.yml
ファイルにテストフェーズを追加します。このファイルは、ビルドプロセス全体を管理する重要な設定ファイルです。
テストフェーズの追加
以下は、テストを実行するためのbuildspec.yml
です:
version: 0.2
phases:
install:
runtime-versions:
python: 3.x # 使用するPythonのバージョンを指定します
commands:
- echo Installing dependencies...
- pip install -r requirements.txt # プロジェクトに必要な依存関係をインストールします
pre_build:
commands:
- echo Running connectivity tests... # テストを実行する準備をします
build:
commands:
- python -m unittest discover tests/ # testsディレクトリ内の全テストを自動で実行します
- echo Uploading duration to S3... # S3にアップロードする準備をします
- aws s3 cp test_duration.txt s3://cicd-kiki-bucket/test_duration.txt # テスト結果ファイルを指定したS3バケットにアップロードします
post_build:
commands:
- echo Tests completed # テストが完了したことを表示します
各ファイルの説明
-
buildspec.yml:
- AWS CodeBuildの設定ファイルです。ビルドプロセス、テストの実行、アーティファクトの出力先などを定義します。
-
tests/:
- テストスクリプトを格納するディレクトリです。ここにテストを追加することで、CI/CDパイプライン内で自動的にテストを実行できます。
-
requirements.txt:
- プロジェクトに必要なPythonライブラリを定義するファイルです。
pip install -r requirements.txt
コマンドを使用して、ライブラリをインストールします。
- プロジェクトに必要なPythonライブラリを定義するファイルです。