我在一个项目中使用了一个buildspec.yml文件来构建Docker映像并将其推送到
ECR
version: 0.2
phases:
pre_build:
commands:
- $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- COMMIT_HASH="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)"
- IMAGE_TAG="${COMMIT_HASH:=latest}"
- printenv
build:
commands:
- docker build -f infrastructure/Dockerfile -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- export IMAGE_NAME='projectName'
- export IMAGE_URI=$REPOSITORY_URI:$IMAGE_TAG
- "printf '[{\"name\":\"%s\",\"imageUri\":\"%s\"}]' \"$IMAGE_NAME\" \"$IMAGE_URI\" > imagedefinitions.json"
artifacts:
files:
- imagedefinitions.json
我希望它能帮助你开始。你显然需要根据自己的需要修改它。检查
buildspec syntax
如果要添加更多阶段。
我使用
aws/codebuild/docker:17.09.0
CodeBuild项目的图像。我通过考试
$REPOSITORY_URI
我的代码管道中的环境变量。看起来有点像
123456789012.dkr.ecr.us-east-1.amazonaws.com/projectName
.
这个
imagedefinitions.json
然后在以后的代码管道阶段使用,将映像部署到Fargate。