从以前的版本

时间:2016-03-29 21:38:46

标签: batch-file jenkins build environment-variables

我正在使用EnvInject Jenkins插件在我们的部署管道中的构建步骤中设置环境变量。下一个项目(根据订单)是一个部署的手动步骤。我需要访问构建步骤中设置的环境变量。

根据控制台输出我正确地做到了:

[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content 
FOR=%%i IN ("%NewFile%") DO ( SET FileName=%%~ni )
FILE_NAME=%FileName%

[EnvInject] - Variables injected successfully.

然而,在我的下一步中,我需要访问$FILE_NAME变量以便从scp指定正确的文件夹,我得到以下输出:

[SCP] No file(s) found: releases\$FILE_NAME\*

是否有我缺少的设置或我是否尝试错误地访问变量?

我在下面看到这个选项 - “注入环境变量” - 但这与我之前用来创建$FILE_NAME变量的步骤相同。如果这是正确的步骤...我如何使用它来获取变量? :)

修改

点击下面的选项...

enter image description here

...我可以在项目构建时获得以下控制台输出。

 [EnvInject] - Loading node environment variables.
 [EnvInject] - Preparing an environment for the build.
 [EnvInject] - Keeping Jenkins system variables.
 [EnvInject] - Keeping Jenkins build variables.
 [EnvInject] - Injecting contributions.
 [EnvInject] - Unset unresolved 'USERNAME' variable.

但是我仍然无法访问$FILE_NAME。下面是我选择在上一个构建步骤中设置变量的选项。

enter image description here

以下是“属性内容”中的脚本:

FOR /F "delims=|" %%I IN ('DIR "C:\Jenkins\workspace\Project\releases\*.nupkg" /B /O:D') DO SET NewFile=%%I
FOR %%i IN ("%NewFile%") DO ( SET FileName=%%~ni )
FILE_NAME = %FileName% 

1 个答案:

答案 0 :(得分:2)

在之前的构建步骤中,我查找最新的文件名。在那一步中,我只输出我正在使用的文件的当前版本,如下所示:

@echo FILE_NAME=%FileName%>CurrentVersion.txt

然后我添加一个“Inject Environment Variables”构建步骤并指向输出文件。这增加了我希望的环境变量。

enter image description here