首页 > 解决方案 > CodeBuild 显示成功;但是,使用 Packer 时应该说 FAILED

问题描述

我遇到了一个我知道与我的buildspec.yml文件有关的问题:

phases:
  install:
    runtime-versions:
      python: 3.8
  pre_build:
    commands:
      - echo "Installing Packer"
      - curl -o packer.zip https://releases.hashicorp.com/packer/1.7.2/packer_1.7.2_linux_amd64.zip && unzip packer.zip
      - echo "Validating Packer template"
      - ./packer validate pipeline/build/${FUNCTION}-build.json
  build:
    commands:
      - ./packer build -color=false pipeline/build/${FUNCTION}-build.json | tee build.log
  post_build:
    commands:
      # Get the ARN of our Lambda notifier
      - SLACK_ARN=$(aws cloudformation list-exports | jq -r '.["Exports"][] | select(.Name == "notify_slack_arn") | .Value')
      # Send a Slack notification
      - |
        if [ "${CODEBUILD_BUILD_SUCCEEDING}" -eq 1 ]
        then
          aws lambda invoke --cli-binary-format raw-in-base64-out --function-name ${SLACK_ARN} --payload "{ \"LambdaInvokeEvent\": { \"message\": \"Daily AMI Build for ${FUNCTION} SUCCESSFUL!\", \"slack_url\": \"${SLACK_URL}\" } }" slack_output.log
        else
          aws lambda invoke --cli-binary-format raw-in-base64-out --function-name ${SLACK_ARN} --payload "{ \"LambdaInvokeEvent\": { \"message\": \"Daily AMI Build for ${FUNCTION} FAILED!\", \"slack_url\": \"${SLACK_URL}\" } }" slack_output.log
        fi
      - echo "Build completed on $(date)"
artifacts:
  files:
    - "**/*"
  discard-paths: no

因此,根据我在 CodeBuild 中构建的代码,会发生以下情况:在此处输入图像描述

即使它失败了,CodeBuild 说成功了,这让我发疯了!假设失败并发出失败通知。这与我的buildspec.yml文件或正在运行的 bash 脚本有关吗?谢谢!

标签: amazon-web-servicesaws-codebuildpacker

解决方案


我认为这是因为您的| tee build.log. 打包器失败,但 tee 工作,因此这是执行的最后一个命令,构建阶段成功。


推荐阅读