はじめにCodeStarを利用したCodePipelineの流れを作成します。
その後、個別にAWSサービスを組み合わせたCodePipelineの流れを作成します。
Cloud9
CodeCommit
CodeBuild
CodeDeploy
CodePipline
CodeStar
マネージメントコンソール → VPC → 「VPCウィザードを起動」ボタン押下
「1個のパブリックサブネットを持つVPC」を選び「選択」ボタンを押下
以下を設定し、「VPCの作成」ボタンを押下
正常終了メッセージが表示されます。
正常終了以外の場合はVPCが既に5つ作成されていると思われます。
のどちらをお願いします。
マネージメントコンソール → EC2 → 左ウィンドウからキーペアを選択 → 「キーペアを作成」ボタンを押下
以下を設定し、「キーペアを作成」ボタンを押下
code-handson.pemがダウンロードされますが、ハンズオンでは利用しないので、放置して大丈夫です。
マネージメントコンソール → CodeStar → 「プロジェクトの作成」ボタンを押下
初めて実行される方は以下が表示されますので、「サービスロールの作成」ボタンを押下
2ページ目のHTMLを選択して、「Next」ボタンを押下
以下を設定し、「Next」ボタンを押下
内容を確認した上で「プロジェクト」の作成ボタン押下
興味があれば、CloudFormationを確認下さい。
CodeStarから関連するAWSサービスが立ち上がってくるのが確認することができます。
5分立っても「アプリケーションの表示」がアクティブにならない場合にはブラウザの再読み込みをしてください。
CodeStarの画面の右上にある「アプリケーションの表示」ボタンを押下
EC2上で稼働するWEBサイトが表示されます。
WEBサイトのアドレスは今後も行いますので、メモに取っておいてください。
↓
マネージメントコンソール → CodeStar → プロジェクト → code-handson → 概要TAB → 「AWS Cloud9の設定」ボタン押下
以下を設定し、「環境の作成」ボタンを押下
興味があれば、CloudFormationを確認下さい。
CodeStarからCloud9が立ち上がってくるのが確認することができます。
CodeStar → プロジェクト → code-handson → IDETAB → 「Open IDE」ボタンを押下
(3分立っても「Open IDE」が表示されないブラウザの再読み込みをしてください。)
Cloud9がCodeCommitへのgit連携がセッティングされた状態で起動されます。
プロジェクトのアクティビティを表示
プロジェクトコードにアクセス方法を紹介
今回はCloud9経由でアクセス
リポジトリ(CodeCommit)のアクティビティ表示
パイプラインのアクティビティ表示
プロジェクトが稼働しているEC2アクティビティ表示
問題追跡およびプロジェクト管理ツールとして、Jiraと連携
マネージメントコンソール → Cloud9 → code-handson → 「Open IDE」ボタン押下
/home/ec2-user/environment/code-handson/webpage/index.htmlを開きます。
ダブルクリックで編集可能になります。
61行目の「Congratulations!」を別の値に変更します。
「code-handson!」に変更し、ヘッダのFile⇨Saveで保存。
変更前
<div class="text">
<h1>Congratulations!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更後
<div class="text">
<h1>code-handson!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更内容をCodeCommitへ範囲します。
git操作が出来る人はconfig設定は任意に変更下さい、以下内容を画面下のbashと記載されているTABへCopy&PasteでもOKです。
git push後にEnterをお忘れなく
cd ~/environment/code-handson/
git config --global user.name "Your Name"
git config --global user.email you@example.com
git add .
git commit -m "first commit"
git push
マネージメントコンソール → CodeStar → プロジェクト → code-handson → パイプラインTAB
git pushをトリガーにCodePipelineが稼働し、
Source、Build、Deployが正常終了していることを確認下さい
メモしているWEBサイトにアクセスし
code-handson!と表示されていることを確認できれば成功です
↓
CodeStarで自動作成したので、実感が少ないかと思いますが、今回利用するAWSサービスの利用は完了しました。
ここからは各サービスを一つずつ作成しながら同様の機能を構築していきます。
マネージメントコンソール → IAM → ロール → 「ロールの作成」ボタン押下
以下を設定し、「次のステップ:アクセス権限」ボタンを押下
以下ポリシーを設定し、「次のステップ:タグ」ボタンを押下
「次のステップ:タグ」ボタンを押下
以下を設定し、「ロールの作成」ボタンを押下
検索バーで「code-handson2」と入力し、クリックする
信頼関係TABをクリックし、続いて、「信頼関係の編集」ボタンを押下
更新後の内容で更新し、「信頼ポリシーの更新」ボタン押下 更新前
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "codebuild.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
更新後
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"codepipeline.amazonaws.com",
"codebuild.amazonaws.com",
"codedeploy.amazonaws.com",
"events.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
更新結果
CodeStarで作成されたEC2にアタッチされたロール「CodeStarWorker-code-handson-WebApp」を 検索バーで検索し、クリックする
アクセス権限TABをクリックし、続いて、「ポリシーをアタッチします」ボタンを押下
以下ポリシーを設定し、「ポリシーのアタッチ」ボタンを押下
↓ 結果
マネージメントコンソール → S3 → 「バケットを作成」ボタンを押下
CodeBuildのアーティファクト先となるバケットを作成する
以下を設定し、「バケットを作成」ボタンを押下
マネージメントコンソール → CodeCommit → 「リポジトリを作成」ボタンを押下
以下を設定し、「作成」ボタンを押下
画面右上の「URLのクローン」ボタン⇨HTTPSのクローン
アドレスがコピーされるので、メモ帳などに貼り付け
手順書通りであるなら、以下となります
https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/code-handson2
マネージメントコンソール → AWS Cloud9 → code-handson → 「Open IDE」ボタン押下
Cloud9で新しいCodeCommitと連携します。
CodeCommitの手順書と違う名前で作成している場合には置き換えをお願いします。
cd ~/environment
pwd
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/code-handson2
ls -l
code-handsonの内容をcode-handson2にコピーします。
手順書と違う名前で作成している場合には置き換えをお願いします。
cd ~/environment
pwd
cp -pr ./code-handson/* ./code-handson2/
ls -l ./code-handson2/
/home/ec2-user/environment/code-handson2/webpage/index.htmlを開きます。
code-handsonディレクトリではないので注意
61行目の「code-handson!」を別の値に変更。
ここの例では「code-handson2!!2!!」に変更し、ヘッダのFile⇨Saveで保存。
変更前
<div class="text">
<h1>code-handson!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更後
<div class="text">
<h1>code-handson2!!2!!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更内容をCodeCommitへ範囲します。
cd ~/environment/code-handson2
git add .
git commit -m "first commit to code-handson2"
git push
マネージメントコンソール → CodeCommit → code-handson2
CodeCommitに反映されていることを確認
マネージメントコンソール → CodeBuild → 「ビルドプロジェクトを作成する」ボタンを押下
以下を設定し、「ビルドプロジェクトを作成する」ボタンを押下
プロジェクトの設定
ソース
環境
Buildspec
アーティファクト
ログ
buildspec.ymlを確認します。
(Cloud9の/home/ec2-user/environment/code-handson2/buildspec.ymlにあります)
buildspec.ymlはビルド仕様を記述するファイルです。
仕様についての詳細はこちらを確認下さい
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
post_build:
commands:
# Do not remove this statement. This command is required for AWS CodeStar projects.
# Update the AWS Partition, AWS Region, account ID and project ID in the project ARN in template-configuration.json file so AWS CloudFormation can tag project resources.
- sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json
artifacts:
files:
- '**/*'
- 'template-configuration.json'
version
buildspec のバージョンを表します。0.2 を使用することをお勧めします。
phases
ビルドの各段階で CodeBuild が実行するコマンドを表します。
phases/install
インストール時に CodeBuild が実行するコマンドがあれば、ここに記載します。
phases/install/runtime-versions
ランタイムバージョンを指定することが出来ます。
このハンズオンでは「java: corretto11」を指定しています。
phases/post_build
ビルドの後に CodeBuild が実行するコマンドがあれば、ここに記載します。
このハンズオンでtemplate-configuration.jsonファイルを更新して、CloudFormationがタグを付けれるようにしています。
CodeStar用のコマンドです
artifacts
CodeBuild がビルド出力を見つけることができる場所
artifacts/files
ビルド環境でのビルド出力アーティファクトを含む場所を示します
このハンズオンでは以下ファイルをアーティファクトします。
「ビルドを開始」ボタンを押下
設定されたビルド処理が正常終了することを確認
正常終了後にアーティファクトのアップロード場所のリンクをクリックすると、S3に保存されたアーティファクトを確認することが出来ます。
↓ 処理後 ↓ ビルドの詳細TAB ⇨ アーティファクト ⇨ アーティファクトのアップロード場所 ⇨ リンクをクリック
マネージメントコンソール → CodeDeploy → 左メニューで開始方法
以下を設定し、「アプリケーションの作成」ボタンを押下
デプロイグループTAB ⇨ 「デプロイグループの作成」ボタンを押下
以下を設定し、「デプロイグループの作成」ボタンを押下
デプロイグループ名
サービスロール
デプロイタイプ
環境設定
AWS Systems Manager を使用したエージェント設定
デプロイ設定
Load balancer
「デプロイの作成」ボタンを押下
以下を設定し、「デプロイの作成」ボタンを押下 デプロイ設定
追加のデプロイ動作設定
デプロイ処理が自動的に開始されます。
ここまでの設定が正しい場合には正常終了します。
異常終了する場合にはView eventsでのログを確認下さい。
↓ View eventsをクリック
エラーログはこちらを確認
CodeStarで作成したブラウザにアクセスしてみましょう
「code-handson2!!2!!」と表示されているかと思います。
マネージメントコンソール → CodePipeline → 「パイプラインを作成する」ボタン押下
以下を設定し、「次に」ボタンを押下
パイプラインの設定
高度な設定
以下を設定し、「次に」ボタンを押下
ソース
以下を設定し、「次に」ボタンを押下
ソース
以下を設定し、「次に」ボタンを押下
デプロイ
「パイプラインを作成」ボタン押下
処理が自動的に流れるので、Source、Build、Deployが正常終了することを確認して下さい
マネージメントコンソール → AWS Cloud9 → code-handson → 「Open IDE」ボタン押下
/home/ec2-user/environment/code-handson2/webpage/index.htmlを開きます。
61行目の「code-handson2!!2!!」を別の値に変更。
ここの例では「code-handson End!!!」に変更し、ヘッダのFile⇨Saveで保存。
変更前
<div class="text">
<h1>code-handson2!!2!!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更後
<div class="text">
<h1>code-handson End!!!</h1>
<h2>You just created an HTML5 web application</h2>
</div>
変更内容をCodeCommitへ範囲します。
cd ~/environment/code-handson2
git add .
git commit -m "end commit"
git push
マネージメントコンソール → CodePipeline → code-handson2
gitpushをトリガーにCodePipelineが稼働し、
Source、Build、Deployが正常終了していることを確認下さい
サイトにcode-handson End!!!と表示されていることを確認できれば成功です
ここまででハンズオンが終わりです。
とりあえず開発環境を作りたいのであれば、CodeStarでベースを作成し
既存環境にCICD環境を構築する場合には個々に設定することになります。
以下の削除を順にお願いします。
CodeStar
CloudFomation
IAM ロール
IAM ポリシー
CodeCommit
CodeBuild
CodeDeploy
CodePipeline
S3
EC2 キーペア
VPC