githubのpull requestがmergeされた際にCodeBuildによるビルドが実行されるようにしたい
必要なこと
- CodeBUildでプロジェクトを作成。「ソース」の設定内にWebHookを設定することができる。
- buildspec.yaml をリポジトリのルートに配置
- buildspec.yaml の中身の修正
- docker buildを実行する際にDockerfileを置く場所を変更しないとだめ??
- buildspec.yaml内で使う環境変数をAWSのGUI上で設定する
- ECR(ElasticContainerRegistory)のURLを設定
- ECRへpushする際のTag名を指定
- ECRにアクセスするための権限をIAMで設定
- codebuild-test3-service-role という名前のロールをCodeBuildで設定していたが、このロールに「AmazonEC2ContainerRegistryPowerUser 」を付与する必要があった
buildspec.yaml
version: 0.2
phases:
pre_build:
commands:
- echo Logging into ECR
- echo AWS_DEFAULT_REGION is $AWS_DEFAULT_REGION
- echo AWS_ACCOUNT_ID is $AWS_ACCOUNT_ID
- echo IMAGE_REPO_NAME is $IMAGE_REPO_NAME
- echo IMAGE_TAG is $IMAGE_TAG
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
build:
commands:
- echo Starting build at `date`
- echo Building the Docker image...
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG lesson-3-microservices/exercises/1_codebuild/starter
- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
post_build:
commands:
- echo Completed build at `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG