# CodeCommit
## HTTPS方式でアクセスする場合
予め、~/.aws/configファイルにプロファイルを作成し、リージョンや、アクセスキーを設定しておく。
```
[profile git]
region = us-east-1
output = json
aws_access_key_id = xxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxx
```
以下のコマンドでローカルにあるIAMのクレデンシャル情報を用いてGitリポジトリに接続(git clone等)できるようになる。
```
$ git config --global credential.helper "!aws --profile git codecommit credential-helper $@"
$ git config --global credential.UseHttpPath true
```
## index.html, buildspec.yml, appspec.ymlをリポジトリへ格納
* buildspec.yaml
[CodeBuild のビルド仕様に関するリファレンス](https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html)
[ビルド環境の環境変数](https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref-env-vars.html)
```
version: 0.2
phases:
build:
commands:
- echo "Build step (optional)"
artifacts:
files:
- index.html
- appspec.yml
```
* appspec.yml
[CodeDeploy AppSpec ファイルのリファレンス](https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file.html)
```
version: 0.0
os: linux
files:
- source: index.html
destination: /var/www/html
```
# EC2設定
## EC2インスタンス作成
- AMI:Amazon Linux 2
- インスタンスタイプ:t2.micro
- セキュリティグループ:
- ポート 22(SSH)
- ポート 80(HTTP)
## Apache設定
```
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
curl http://localhost
```
## CodeDeployエージェント
[Amazon Linux または RHEL 用の CodeDeploy エージェントをインストールする](https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html)
```
sudo yum install -y ruby wget
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo systemctl start codedeploy-agent
sudo systemctl enable codedeploy-agent
sudo systemctl status codedeploy-agent
```
## IAMロール
- EC2にアタッチするIAMロールに以下のポリシーを付与:
- AmazonEC2RoleforAWSCodeDeploy
## 次のステップ
- EC2がApacheで /var/www/html/index.html を表示できる状態にあること
- CodeDeploy Agentが起動していること
- EC2にタグ(例:Name=ATDemoInstance)を付けて、CodeDeployのデプロイグループでターゲットに指定できるようにする
# CodeBuildの設定
## CodeBuildに与えるロール
[CodeBuild が他の AWS のサービスとやり取りすることを許可](https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/setting-up-service-role.html)
```
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/TestSiteBuild",
"arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/TestSiteBuild:*"
],
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketAcl",
"s3:GetBucketLocation"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:codecommit:us-east-1:123456789012:repos_tmp"
],
"Action": [
"codecommit:GitPull"
]
},
{
"Effect": "Allow",
"Action": [
"codebuild:CreateReportGroup",
"codebuild:CreateReport",
"codebuild:UpdateReport",
"codebuild:BatchPutTestCases",
"codebuild:BatchPutCodeCoverages"
],
"Resource": [
"arn:aws:codebuild:us-east-1:123456789012:report-group/TestSiteBuild-*"
]
}
]
}
```
1. プロジェクト作成
- AWSコンソール → CodeBuild → 「プロジェクトを作成」
- 名前:TestSiteBuild
- ソースプロバイダー:CodeCommit
- リポジトリ:先ほど作成したもの
- ブランチ:main(または使用中のブランチ)
2. 環境設定
- 環境イメージ:マネージド型イメージ
- OS:Amazon Linux 2
- ランタイム:Standard
- イメージ:aws/codebuild/standard:7.0(または最新)
- ビルド仕様:buildspec.yml を使用
3. アーティファクト
- アーティファクトタイプ:Amazon S3
- 新しいS3バケットを作成するか、既存のものを選択
- 出力場所:TestSiteBuildArtifact(任意)
> このステージでアーティファクトをS3に出力する。
# CodeDeployの設定
[CodeDeployのサービスのロールを作成する](https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/getting-started-create-service-role.html)
1. アプリケーション作成
- AWSコンソール → CodeDeploy → 「アプリケーションを作成」
- 名前:TestSiteDeploy
- コンピューティングプラットフォーム:EC2/オンプレミス
2. デプロイグループ作成
- 名前:TestSiteGroup
- サービスロール:CodeDeployServiceRole(必要なら新規作成)
- ポリシー:AWSCodeDeployRole
- ターゲット:EC2インスタンスのタグ
- 例:Name=ATDemoInstance
- デプロイタイプ:インプレース
- アプリケーションのリビジョン場所:Amazon S3
> S3に保存されたCodeBuildの出力(アーティファクト)をCodeDeployが取得してEC2に配置する。
## CodeDeploy時のEC2側のログ
```
sudo less /opt/codedeploy-agent/deployment-root/deployment-logs//log
sudo less /var/log/aws/codedeploy-agent/codedeploy-agent.log
```
# CodePipelineの設定
[CodePipeline サービスロールを管理する](https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/how-to-custom-role.html)
1. パイプライン作成
- AWSコンソール → CodePipeline → 「パイプラインを作成」
- 名前:TestSitePipeline
- サービスロール:新規作成(自動でOK)
ソースステージ(CodeCommit)
- ソースプロバイダー:CodeCommit
- リポジトリ:先ほど作成したもの
- ブランチ:main(または使用中のブランチ)
- 変更検出:Amazon CloudWatch Events(自動トリガー)
※複数リポジトリから資産を取得するには、パイプライン作成後にソースステージからアクショングループを追加し、セカンダリソースを追加する。
[複数の入力ソースと出力アーティファクトのサンプル](https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-multi-in-out.html)
ビルドステージ(CodeBuild)
- ビルドプロバイダー:AWS CodeBuild
- プロジェクト:TestSiteBuild(先ほど作成したもの)
- 出力アーティファクト名:例)BuildArtifact
デプロイステージ(CodeDeploy)
- デプロイプロバイダー:AWS CodeDeploy
- アプリケーション名:TestSiteDeploy
- デプロイグループ:TestSiteGroup
- 入力アーティファクト名:CodeBuildの出力名と一致させる(例:BuildArtifact)
## CodePipelineのPollForSourceChangesをCLIでfalseする方法
[PollForSourceChanges パラメータのデフォルト動作について](https://repost.aws/ja/knowledge-center/codepipeline-running-twice)
1. 現在のパイプライン定義を取得
対象のパイプライン(例: MyPipeline)のJSON定義を取得し、ファイルに保存する
```bash
aws codepipeline get-pipeline --name MyPipeline --query pipeline > pipeline.json
```
2. JSONファイルを編集
PollForSourceChangesの値を"true"から"false"に変更する
編集前:
```json
"configuration": {
"BranchName": "main",
"PollForSourceChanges": "true",
"RepositoryName": "MyRepo"
},
```
編集後:
```json
"configuration": {
"BranchName": "main",
"PollForSourceChanges": "false",
"RepositoryName": "MyRepo"
},
```
※注: get-pipeline で取得した JSON の構造が update-pipeline が期待する形式({"pipeline": { ... }})になっていないので追加が要る
3. パイプライン定義を更新
編集したJSONファイルを使って、パイプラインを更新する
```
aws --profile tokyo codepipeline update-pipeline --cli-input-json file://pipeline.json
```
# push時にCodePipelineをトリガーする
[Create an EventBridge rule for a CodeCommit source](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-trigger-source-repo-changes-console.html)
## EventBridgeに与えるロールを作成
```
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "codepipeline:StartPipelineExecution",
"Resource": "arn:aws:codepipeline:us-east-1:123456789012:TestSitePipeline"
}
]
}
```
## EventBridgeを作成
イベントパターン:対象ブランチのpushイベントを指定(下記)
ターゲット:CodePipelineのARNを指定
```
{
"source": ["aws.codecommit"],
"detail-type": ["CodeCommit Repository State Change"],
"resources": ["arn:aws:codecommit:us-east-1:123456789012:repos_tmp"],
"detail": {
"event": ["referenceUpdated"],
"referenceType": ["branch"],
"referenceName": ["master"]
}
}
```
2025/10/11
CodePipelineによるCI/CD
登録:
コメントの投稿 (Atom)
人気の投稿
-
## 作業前確認 [Amazon Linux 2023 リリースノート](https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/relnotes.html) ### インスタンスのネットワーク設定 ``` ...
-
EVMの概念 EVMの概念 EVMの用語と計算式 略語 正式名称 訳語 計算式 BAC Budget At Completion 完了までの当初予算 - ...
-
## 使用するOSバージョンとAMIの選定 [AWS が Amazon EC2 での Microsoft Windows Server 2025 イメージの提供開始を発表](https://aws.amazon.com/jp/about-aws/whats-new/2024/1...
-
## 基本構文 ``` Test-NetConnection [-ComputerName] <string> [-Port <int>] [-InformationLevel <string>] [-TraceRoute] ``` ## ...
-
# CodeCommit ## HTTPS方式でアクセスする場合 予め、~/.aws/configファイルにプロファイルを作成し、リージョンや、アクセスキーを設定しておく。 ``` [profile git] region = us-east-1 output = json a...
0 件のコメント:
コメントを投稿