我为名为“ Job_Name”的詹金作业配置了一个字符串参数。

我想检查jenkins的“执行shell命令”部分中传递给参数的值。

我当前的shell命令如下所示。



Shell命令:

if [ "${Job_Name}" == "RSProductPreprocessor" ]; then
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook  -i hosts/dev playbook_deployRSProductPreProcessor.yml -v --extra-vars "RSProductPreProcessorVersion=${Number_Of_RSProductPreProcessor_Build_To_Deploy}"
fi


但是当我执行工作时,我得到的响应如下。

+ '[' '' == RSProductPreprocessor ']'
Finished: SUCCESS


要使if条件正常工作,应该怎么做。请指教。

最佳答案

您有几件事需要解决

单击外壳下的链接以查看可用的环境变量

这是我的一些

BUILD_NUMBER
The current build number, such as "153"
BUILD_ID
The current build id, such as "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
BUILD_DISPLAY_NAME
The display name of the current build, which is something like "#153" by default.
JOB_NAME
Name of the project of this build, such as "foo" or "foo/bar". (To strip off folder paths from a Bourne shell script, try: ${JOB_NAME##*/})


因此,您必须全部使用${JOB_NAME}

和外壳的比较是

if [ "${JOB_NAME}"="xxxx" ]; then
    ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook  -i hosts/dev playbook_deployRSProductPreProcessor.yml -v --extra-vars "RSProductPreProcessorVersion=${Number_Of_RSProductPreProcessor_Build_To_Deploy}"
fi


所以只有一个=

您的Jenkins可能正在使用其他外壳来进行挖掘,因此您可以通过在第一行中添加shebang来强制bash

#!/bin/bash

10-06 15:36