我创建了一个工具链,它从 bitbucket 存储库下载代码并在 IBM Cloud 中构建 docker 映像。
代码生成映像后,生成阶段在生成项目时失败。
Error:
Preparing the build artifacts...
Customer script does not exist for the job, exitting
我已指定"构建存档目录"作为文件夹名称。我是否需要编写任何用于存档的脚本?
当我们的一项检查(/home/pipeline/$TASK_ID/_customer_script.sh
的存在(失败时,就会发生该特定错误。
存档会自动进行,但该文件需要存在,因为我们将其用作有关工件创建方式的可追溯性的一部分。文件是否有可能被删除?(还将考虑删除或使支票非致命,但这需要时间(
此问题似乎是由为作业设置工作目录引起的。 _customer_script.sh
被放入工作目录,但 Simon 引用的脚本 (/opt/IBM/pipeline/bin/ids-buildables-notify.sh
( 只检查代码输入所在的顶级目录 (/home/pipeline/$TASK_ID/
(。
选项可以解决此问题,假设你正在执行容器注册表作业:
在脚本中运行
cp _customer_script.sh /home/pipeline/$TASK_ID
。ids-buildables-notify.sh
脚本会为您的bx cr build
调用执行一些处理,因此请确保它仍然存在。touch /home/pipeline/$TASK_ID/_customer_script.sh
和export PIPELINE_IMAGE_URL=<your image url>
.如果设置了PIPELINE_IMAGE_URL,通知脚本就不会因为聪明而烦恼,我更喜欢聪明。不要更改工作目录。
一个对我有用的脚本:
#!/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