问题描述
有一个上游的自由风格任务和一个下游的流水线任务。自由风格任务通过 Bitbucket 钩子触发,以在将代码推送到 Bitbucket 时运行。自由风格任务应该捕获提交的 SHA 和分支名称,并将两者传递给流水线任务。它还会生成一个基于分支作者的变量,该变量也应该传递给流水线任务。在自由风格任务中,用户使用类似以下的方式,可以工作并输出预期的参数。
cd $WORKSPACE/prancer/
GIT_AUTHOR=$(git show --format="%an" | head -1)
echo '-------------'
echo 'git_commit is '$GIT_COMMIT
echo 'git_branch is '$GIT_BRANCH
echo 'git_author is '$GIT_AUTHOR
echo '-------------'
用户已经将任务配置为通过类似以下方式触发流水线任务:
在下游的流水线任务中,提交的GIT_COMMIT
和分支GIT_BRANCH
可以正常获取,但是生成的变量GIT_AUTHOR
只会输出变量名,而不是变量值。
尽管通过保存GIT_AUTHOR
到属性文件中,在自由风格任务的工作区查看文件内容(包含作者信息),仍然无法将其传递到流水线任务。
问题是:如何在构建下游的流水线任务时使用来自上游自由风格任务的生成变量的值?
解决方案
以下解决方案可能需要根据具体的使用环境进行微调,并可能受到工具版本和配置的影响。
方案1:将变量保存到属性文件并传递参数
- 在自由风格任务中,将生成的变量保存到一个属性文件中。可以在脚本中添加以下内容:
cd $WORKSPACE/prancer/
GIT_AUTHOR=$(git show --format="%an" | head -1)
echo '-------------'
echo 'git_commit is '$GIT_COMMIT
echo 'git_branch is '$GIT_BRANCH
echo 'git_author is '$GIT_AUTHOR
echo '-------------'
cat > git_variables.properties <<EOF
GIT_COMMIT=$GIT_COMMIT
GIT_BRANCH=$GIT_BRANCH
GIT_AUTHOR=$GIT_AUTHOR
EOF
-
在自由风格任务的构建后步骤中,将属性文件归档起来,确保它在构建的工作区可见。
-
在触发下游流水线任务的步骤中,将预定义的参数更改为“从属性文件中获取参数”(或类似的选项,具体取决于工具)。然后选择上一步中生成的属性文件。
方案2:使用环境变量传递参数
- 在自由风格任务中,将生成的变量添加到环境变量中。这可以通过修改构建后步骤的 shell 脚本实现:
cd $WORKSPACE/prancer/
export GIT_AUTHOR=$(git show --format="%an" | head -1)
- 在触发下游流水线任务的步骤中,设置与环境变量对应的参数。这可能需要查阅工具的文档,以了解如何在流水线任务中引用上游构建的环境变量。
无论使用哪种方案,都需要确保环境和工具的配置是正确的。如果仍然遇到问题,请确保查看工具的文档和社区支持资源,以获取针对特定工具和环境的详细指导。
以上是如何在上游自由风格任务中使用生成的变量值来构建下游流水线任务的解决方案。根据实际情况选择适合你的方法,确保参数在任务之间正确传递。
正文完