EventBridgeもしくはサードパーティーのWebHookを利用して、ビルド開始のトリガーを設定。
EventBridgeでは、コードのコミットなどのルールかcron式でスケジュールを指定してトリガーを設定。
ソースコードのコミットID、ブランチを指定。
ソースコードのコミットID、ブランチを指定。
ビルドで実行する内容を定義
YAMLファイルの場合、デフォルトではソースリポジトリのルートディレクトリにbuildspec.ymlのファイル名で格納。
version: 0.2 phases: install: commands: # SSH接続時のホストキーチェックを無効にする - sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config # EC2の秘密鍵をAWS Secrets Managerから取得し、.sshディレクトリに保存 - aws secretsmanager get-secret-value --secret-id ec2-privatekey --query 'SecretBinary' --output text | base64 -d > ~/.ssh/id_rsa # 秘密鍵のパーミッションを設定 - chmod 400 ~/.ssh/id_rsa pre_build: commands: - cd ${CODEBUILD_SRC_DIR}/ansible build: commands: # Ansibleプレイブックを実行 - ansible-playbook -i inventory.ini site.yml -u ec2-user -v
version: 0.2 phases: install: runtime-version: docker: 20 pre_build: commands: # # ECRリポジトリのURIを環境変数に設定 - REPO_URI_NGINX="${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ENV}-${SERVICE}-ecr/nginx" - REPO_URI_PHPFPM="${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ENV}-${SERVICE}-ecr/php-fpm" # # タグ名にgitのコミットハッシュを利用 - IMAGE_TAG=$(echo ${CODEBUILD_RESOLVED_SOURCE_VERSION} | cut -c 1-7) - TAG="${ENV}-${IMAGE_TAG}" # # aws cliの設定 - aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com build: commands: # # docker buildを実行 - docker build -f ./infra/nginx/Dockerfile -t src_nginx:latest . - docker build -f ./infra/php/Dockerfile -t src_php:latest . # # doeckr imageのタグ付け - docker tag src_nginx:latest ${REPO_URI_NGINX}:${ENV}-${IMAGE_TAG} - docker tag src_php:latest ${REPO_URI_PHPFPM}:${ENV}-${IMAGE_TAG} - docker images post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... # # dockr pushを実行 - docker push ${REPO_URI_NGINX}:${ENV}-${IMAGE_TAG} - docker push ${REPO_URI_PHPFPM}:${ENV}-${IMAGE_TAG} artifacts: files: - appspec.yml - taskdef.json
env: variables: REGION: "ap-northeast-1" parameter-store: Account_Id: "ACCOUNT_ID" secrets-manager: AWS_ACCESS_KEY_ID: "access" AWS_SECRET_ACCESS_KEY: "secret"
https://d1.awsstatic.com/webinars/jp/pdf/services/20201125_AWS_BlackBelt_AWS_CodeBuild.pdf
CodeBuild上で定義した環境変数になります。
AWS管理コンソールの画面から定義できます。
Codebuildでは環境変数を設定することで、それら環境変数をbuildspec.yml上で使用することができます。
${AWS_ACCOUNT_ID} ${REGION} ${ENV} ${SERVICE}
プロジェクト名 | |
ソース | ソースプロバイダ:CodeCommit リポジトリ:api-serverless リファレンスタイプ:ブランチ ブランチ :main |
環境 | 環境イメージ :マネージド型イメージ オペレーティングシステム :Amazon Linux 2 ランタイム :Standard イメージ :aws/codebuild/amazonlinux2-x86_64-standard:4.0 イメージのバージョン :最新のイメージ 環境タイプ :Linux |
アーティファクト | タイプ:CodeCommit バケット名:api-serverless セマンティックバージョニングの有効化:有効 パス :指定なし 暗号化キー:デフォルト(AWS管理キー) キャッシュタイプ:S3 キャッシュバケット:abetest-cache |
ログ | CloudWatch Logs |