我正在尝试在aws codebuild上为我的项目设置构建,我正在使用terraform来设置所有实例,route53和ect ......但是在docker push之后,terraform脚本永远不会被执行。我想知道为什么。 (我是新来的......)
version: 0.2
phases:
install:
commands: |
echo Running docker daemon
nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay&
build:
commands: |
docker build -t mywebsite .
post_build:
commands: |
IMAGE_TAG=`echo $CODEBUILD_BUILD_ID`
IMAGE_PATH="$IMAGE_PATH_PREFIX:$IMAGE_TAG"
docker tag mywebsite $IMAGE_PATH
docker push $IMAGE_PATH
- cd ./buildTools/terraform
- terraform init
- terraform apply
构建历史记录末尾的输出:
sha256:xxxxxx size: 3066
[Container] 2018/01/11 22:33:08 Phase complete: POST_BUILD Success: true
[Container] 2018/01/11 22:33:08 Phase context status code: Message:
我的terraform脚本从未在最后运行过?请帮忙。
感谢
答案 0 :(得分:2)
在您的YAML中,您似乎正在尝试将单个多行值(IMAGE_TAG ...)与post_build命令的另一个值列表(您的terraform脚本)混合使用。结果是“命令”将仅设置为第一个单行多行值,并且列表被拒绝。
命令项目是YAML列表: https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
例如:
version: 0.2
phases:
install:
commands:
- echo Running docker daemon
- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay&
build:
commands:
- docker build -t mywebsite .
post_build:
commands:
- IMAGE_TAG=`echo $CODEBUILD_BUILD_ID`
- IMAGE_PATH="$IMAGE_PATH_PREFIX:$IMAGE_TAG"
- docker tag mywebsite $IMAGE_PATH
- docker push $IMAGE_PATH
- cd ./buildTools/terraform
- terraform init
- terraform apply
答案 1 :(得分:1)
您需要删除破折号“ - ”,因为您已经在使用批量shell脚本符号“|”。所以你的post_build步骤应如下所示:
post_build:
commands: |
IMAGE_TAG=`echo $CODEBUILD_BUILD_ID`
IMAGE_PATH="$IMAGE_PATH_PREFIX:$IMAGE_TAG"
docker tag mywebsite $IMAGE_PATH
docker push $IMAGE_PATH
cd ./buildTools/terraform
terraform init
tterraform apply