1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

最終更新日

【AWS】AWS CodePipelineを利用した、CI/CD運用の構築

  • このエントリーをはてなブックマークに追加

はじめに

こんにちは。DXソリューション営業本部の後藤です。
本記事では、AWS CodePipelineを利用したCI/CD運用の構築方法についてご説明したいと思います。

AWS CodePipelineとは

AWS CodePipeline は、ソフトウェアのリリースに必要なステップをモデル化、視覚化、自動化するために使用できる継続的な配信サービスです。ソフトウェアリリースプロセスのさまざまな段階を迅速にモデル化して設定できます。https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/welcome.html

 

今回行いたいこと&構成図

行いたいこと

・CodeCommitへのpushをトリガーにしてビルドプロジェクトを実行するパイプラインを作成する。
・CodeBuildで、差分のあったファイルの情報を取得しS3に出力する。

構成図

2024-10-04 092049.png

 

環境の事前準備

リポジトリの作成

①git cloneするためのIAMユーザーの作成

ローカル環境で操作する場合は、リモートの情報をローカル環境へクローンする必要があります。以下の手順でリモートの認証情報を取得してください。
IAMユーザー画面から自身のIAMユーザーを選択、セキュリティ認証情報に進みます⇒【HTTPS Git 認証情報】の項目右上の【生成】をクリック⇒以下のように認証情報が生成されますので認証情報をダウンロードし保管してください
2024-10-4 091000.png

 

②CodeCommitでリポジトリを作成します。
CodeCommitの画面から【リポジトリを作成】をクリック。リポジトリ名を入力します。
2024-10-03 162220.png

作成後、以下のような画面になります。ステップ3のGitコマンドをコピーしてください。
スクリーンショット 2024-10-03 131940.png

Gitコマンドラインでコピーしたものを張り付け、認証情報が求められるので①でダウンロードした認証情報を入力してください。これによりローカル環境でファイルの編集・追加・削除が可能になります。
2024-10-03 132256.png

③ローカル環境でtest.txtファイルを作成して、CodeCommitにpushしてみましょう。
以下のGitコマンドを入力してください。

$ cd <レポジトリ名>
$ git init
$ echo version1 > test.txt
$ git add test.txt
$ git commit -m "テスト"
$ git push origin main


コマンドを入力すると、CodeCommitのリポジトリにtest.txtがpushされたことが確認できます。
2024-10-03 141103.png

 

④CodeCommitはGitコマンドだけでなくGUIで直接ファイルを追加、編集することも可能です。試しにファイルを追加してみましょう。
リポジトリ画面から【ファイルを追加】をクリックすると以下の画面へ移動します。今回はdemofile.txtを作成してみます。
2024-10-03 154056.png

画面右下【変更のコミット】をクリックすると、demofile.txtファイルが新しく作成されました。
2024-10-03 154131.png

ビルドプロジェクトを作成

①ビルドプロジェクトの設定を入力していきます。

CodeBuildの画面から【プロジェクトを作成】をクリックし、ビルドの設定を入力してください。

・環境はLinuxを利用します。

2024-10-03 144538.png

 

・Buildspecの項目で【ビルドコマンドを挿入】を選択し、ビルドコマンドに以下のyamlコードを入力してください。

version: 0.2

phases:
pre_build:
commands:
#差分のあったファイルの取得
- diffList=$(git diff HEAD^ --name-only)
- echo $diffList
build:
commands:
- aws s3 cp $diffList s3://goto-test-codebuild/copy/

 

コード解説

git diffコマンドで前回のコミットとの比較をし、差分のあったファイルの情報を取得する。

 - diffList=$(git diff HEAD^ --name-only)

情報を取得したファイルを指定したS3に出力する。

 - aws s3 cp $diffList s3://goto-test-codebuild/copy/

 

・その他の設定はデフォルトの状態でビルドプロジェクトを作成します。

②IAMロールに許可ポリシーをアタッチする
CodeBuildに紐づけられているIAMロールにCodeCommitとS3へのアクセス許可ポリシーをアタッチしてください。今回は検証なので、どちらもFullAccessポリシーをアタッチします。
2024-10-03 144940.png

AWS CodePipelineの設定

環境の事前準備が完了したらCodePipelineの設定をします。

CodePipelineの画面から【パイプラインを作成】をクリックし、設定を入力してください。
①ソースステージの設定
環境の事前準備で作成したリポジトリ/ブランチを選択。出力アーティファクト形式は完全クローンを選択してください。
2024-10-03 151733.png


②ビルドステージの設定
環境の事前準備で作成したビルドプロジェクトを選択。単一ビルドを選択してください。
2024-10-03 152435.png


今回はデプロイステージは設定しませんので、【デプロイステージをスキップ】をクリックし、CodePipelineを作成してください。
これで、CodeCommitへのpushをトリガーとしビルドプロジェクトを実行させるパイプラインが完成しました。

 

動作実行

では実際にCodeCommitへpushをし、動作を確認してみましょう。

①今回はGUIで直接CodeCommitを操作しファイルを編集します。

demofile.txtを選択し、【編集】をクリックします。
2024-10-03 155220.png

ファイルの中身を編集します。<デモファイル2>を追加して、画面右下【変更のコミット】をクリックします。これでCodeCommitに変更内容がpushされます。
2024-10-4 05100.png

 

②CodePipelineを確認してみましょう

CodePipelineを見てみると、ソースステージが進行中であるのを確認できます。CodeCommitをトリガーにして、CodePipelineが自動実行していることが確認できます。

2024-10-04 051750.png

しばらく待つとソースステージが成功になり、ビルドステージが進行中になっていることが確認できます。

2024-10-04 051811.png

また、しばらく待つとビルドステージが成功になりました。【詳細を表示】から実行ログを確認することもできます。

2024-10-04 051841.png

 

③実際に処理が無事に成功しているのか確認してみましょう。

S3の画面へ行き、指定したS3バケット内にdemofile.txt(編集したファイル)のみが出力されているのを確認できました。

2024-10-04 051930.png

 

ファイルをダウンロードし中身を見てみると、編集した内容が反映されていることが確認できます。
2024-10-04 055922.png

 

まとめ

最後までお読みいただきありがとうございます。

今回はAWS CodePipelineを利用してCI/CD運用の構築をしてみました。AWS Codeシリーズはソフトウェアの開発とデプロイを効率化するためのサービスです。組み合わせて活用することで、ソースコードの管理、ビルドやテスト、デプロイを一連のワークフローで管理することが可能になります。ぜひ、CI/CDの運用をご検討されている方はご参考にして頂ければと思います。

最後に「このサービスについて知りたい」「AWS環境の構築、移行」などのリクエストがございましたら、弊社お問合せフォームまでお気軽にご連絡ください! のちほど当ブログにてご紹介させていただくか、複雑な内容に関するお問い合わせの内容の場合には直接営業からご連絡を差し上げます。

※Amazon Web Services、”Powered by Amazon Web Services”ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード