0

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

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

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

我已将构建存档目录指定为文件夹名称。我需要为存档编写任何脚本吗?

4

2 回答 2

1

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

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

于 2018-04-09T15:11:38.383 回答
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_ID在您的脚本中运行。该ids-buildables-notify.sh脚本会为您的呼叫做一些 grepping bx cr build,因此请确保它仍然存在。

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

  3. 不要更改工作目录。

一个适合我的脚本:

#!/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

于 2018-05-19T01:01:57.453 回答