我希望定义一个Jenkins构建参数,该参数通常由用户以特定方式输入。要使用此参数,必须通过以下简单函数进行转换(在shell脚本中)
if [ "" != "${SUBPROJ}" ]
then
CLEAN=`echo ":${SUBPROJ}:${CLEAN}" | sed 's|/|:|g' `
END_TARGET=`echo ":${SUBPROJ}:${END_TARGET}" | sed 's|/|:|g' `
fi
这会将a / b / c之类的内容转换为:a:b:c:
在使用参数之前,我如何在Jenkins中进行此转换。运行shell脚本步骤不会更改原始参数。
我查看了dynamic parameter plugin,但似乎不允许来自提供参数的输入
答案 0 :(得分:1)
您在特定构建步骤中创建和更改的变量仅限于该构建步骤。如果要在脚本步骤之后将编辑的变量公开给构建步骤,则需要获取变量并将新版本放回到环境中。我通常通过将值作为键值对写入文件并使用EnvInject Plugin来完成此操作。
举个例子,' CLEAN'变量现在成立:a:b:c:作为脚本的下一步,您需要将其写入文件(我将其称为newEnvironmentVariables.txt),如果要替换SUBPROJ字符串,则应执行以下操作:
if [ "" != "${SUBPROJ}" ]
then
CLEAN=`echo ":${SUBPROJ}:${CLEAN}" | sed 's|/|:|g' `
echo "CLEAN=${CLEAN}" > ${WORKSPACE}\newEnvironmentVariables.txt
END_TARGET=`echo ":${SUBPROJ}:${END_TARGET}" | sed 's|/|:|g' `
echo "END_TARGET=${END_TARGET}" >> ${WORKSPACE}\newEnvironmentVariables.txt
fi
这应该产生一个包含两行的文本文件(我假设CLEAN和END_TARGET一开始是空的。)
CLEAN =:A:B:C:
END_TARGET =:A:B:C:
在脚本之后立即添加Envinject构建步骤,并在“属性文件路径”字段中放置文件的路径。如果您的脚本在工作区的根目录下运行,则可以使用${WORKSPACE}\newEnvironmentVariables.txt
作为路径。
这将在jenkins构建作业的环境中创建两个新变量,称为CLEAN和END_TARGET,您可以在后续构建步骤中使用它,就像任何其他变量一样。如果要更改SUBPROJ的值,请将其用作键值对中的一个键。