使用前操纵Jenkins作业参数

时间:2017-03-17 16:06:38

标签: jenkins

我希望定义一个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,但似乎不允许来自提供参数的输入

1 个答案:

答案 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的值,请将其用作键值对中的一个键。