AWS codebuild没有在post_build上运行terraform

时间:2018-01-11 22:45:02

标签: terraform aws-codebuild

我正在尝试在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脚本从未在最后运行过?请帮忙。

感谢

2 个答案:

答案 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