对于交付管道中的构建阶段,构建工件失败

时间:2018-04-05 12:28:00

标签: ibm-cloud toolchain ibm-cloud-tools devops-services

我创建了一个工具链,它从bitbucket存储库下载代码并在IBM Cloud中构建docker镜像。

代码构建映像后,构建阶段在构建工件时失败。

Error:
Preparing the build artifacts...
Customer script does not exist for the job, exitting

我已将Build存档目录指定为文件夹名称。我是否需要编写任何用于存档的脚本?

2 个答案:

答案 0 :(得分:1)

当我们的一项检查 - /home/pipeline/$TASK_ID/_customer_script.sh的存在 - 失败时,会发生该特定错误。

存档会自动发生,但该文件需要存在,因为我们将其用作有关如何创建工件的可跟踪性的一部分。文件是否可能被删除? (也会考虑删除或使检查不致命,但需要时间)

答案 1 :(得分:0)

此问题似乎是由为作业设置工作目录引起的。 _customer_script.sh被放入工作目录,但Simon所指的脚本(/opt/IBM/pipeline/bin/ids-buildables-notify.sh)只检查代码输入所在的顶级目录(/home/pipeline/$TASK_ID/)。

解决此问题的三个选项,假设您正在执行容器注册表作业:

  1. 在脚本中运行cp _customer_script.sh /home/pipeline/$TASK_IDids-buildables-notify.sh脚本会对您的bx cr build电话进行一些调整,因此请确保它仍在那里。

  2. touch /home/pipeline/$TASK_ID/_customer_script.shexport PIPELINE_IMAGE_URL=<your image url>。如果设置了PIPELINE_IMAGE_URL,则通知脚本不会因为我更喜欢聪明而烦恼。

  3. 请勿更改工作目录。

  4. 适用于我的脚本:

    #!/bin/bash
    echo -e "Build environment variables:"
    echo "REGISTRY_URL=${REGISTRY_URL}"
    echo "REGISTRY_NAMESPACE=${REGISTRY_NAMESPACE}"
    echo "IMAGE_NAME=${IMAGE_NAME}"
    echo "BUILD_NUMBER=${BUILD_NUMBER}"
    
    echo -e "Building container image"
    set -x
    export PIPELINE_IMAGE_URL=$REGISTRY_URL/$REGISTRY_NAMESPACE/$IMAGE_NAME:$BUILD_NUMBER
    bx cr build -t $PIPELINE_IMAGE_URL .
    set +x
    
    touch /home/pipeline/$TASK_ID/_customer_script.sh