构建 Artifactory 在交付管道中的构建阶段失败
Building Artifactory fails for Build Stage in Delivery Pipeline
我创建了一个工具链,它从 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
是否存在)失败时,就会出现该特定错误。
存档是自动进行的,但该文件需要存在,因为我们将其用作围绕工件创建方式的可追溯性的一部分。文件是否有可能被删除? (还将考虑删除或进行检查 non-fatal 但这需要时间)
这个问题似乎是由为作业设置工作目录引起的。 _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
调用做一些 grepping,因此请确保它仍然存在。
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
我创建了一个工具链,它从 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
是否存在)失败时,就会出现该特定错误。
存档是自动进行的,但该文件需要存在,因为我们将其用作围绕工件创建方式的可追溯性的一部分。文件是否有可能被删除? (还将考虑删除或进行检查 non-fatal 但这需要时间)
这个问题似乎是由为作业设置工作目录引起的。 _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
调用做一些 grepping,因此请确保它仍然存在。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