变量您创建和更改特定buildstep的作用域只是到构建步骤。如果您想在脚本步骤之后将编辑的变量公开到构建步骤,则需要将该变量放回到环境中。我通常通过将值写入文件作为关键值对并使用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
这将产生一个包含两行(我假设干净END_TARGET是空的,开始用)的文本文件。
CLEAN =:A:B:C:
END_TARGET =:A:B:C:
添加Envinject立即生成步骤脚本之后和路径放置在文件属性文件路径字段。如果您的脚本在您的工作区的根目录下运行,则可以使用${WORKSPACE}\newEnvironmentVariables.txt
作为您的路径。
这将在您的jenkins构建作业的环境中创建两个新变量,称为CLEAN和END_TARGET,您可以在随后的构建步骤中像其他任何变量一样使用它。如果您想要更改SUBPROJ的值,则将其用作键值对中的一个键。
听起来像envinject会填补账单。谢谢。当我有机会时,我会尝试。 –
这工作,差不多。由于我配置了工作区,只是写入newEnvironmentVariables.txt并没有将它放到我的项目工作区中。为此,我不得不使用$ WORKSPACE env var,并且在预生成步骤中无法访问它。所以我把它作为envinject之前的一个普通构建步骤,然后按预期工作。感谢您的正确解决方案。然后,我想每次都创建一个新的env var文件而不是>>。但足够接近赢得奖品!谢谢你的帮助。 –
嗯,是的,这是有道理的,我们的构建总是删除工作区,并做一个新的结帐。我想我没有考虑>> vs>。很高兴它的工作。 – Tuffwer