将值设置为环境变量并在Jenkins中使用条件插件

时间:2013-10-22 11:40:50

标签: batch-file jenkins

我有一个小批量代码,它将可执行文件的许可证信息打印到文件version.txt,并检查许可证是否为Product is licensed to MyOrg。如果它们不相等,我显式抛出exit 1并使构建失败,否则回显变量的值。以下是工作代码。

@echo off
product_executable --version 1>version.txt 2>&1
FOR /F "SKIP=1 TOKENS=*" %%L IN (version.txt) DO set checkstr=%%L
del /q /f version.txt
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

但我需要的是,不是将变量保存到文件并从中读取行并删除文件,而是将其保存到环境变量license_info并在{{3}中访问它像${license_info}这样的插件。但我无法这样做。

3 个答案:

答案 0 :(得分:1)

我不知道在shell脚本(或Windows批处理脚本)中创建环境变量的任何直接方法,并在稍后的构建步骤中使用它。绕过它的唯一方法是在属性文件中写出信息并让下一个构建步骤读取属性文件。作为smlstvnh,您需要使用EnvInject plugin来读取属性文件。我在一些构建中使用了这种繁琐的方法。

答案 1 :(得分:0)

您应该可以批量执行此操作,无需编写文本文件...

@echo off
FOR /F "SKIP=1 TOKENS=*" %%L IN ('product_executable --version') DO set checkstr=%%L
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

但是,如果您尝试完全删除批处理文件,这将无济于事。

答案 2 :(得分:0)

我过去所做的是使用EnvInject Plugin,并将key=value信息写入a .properites formatted file

java .properties文件基本上只是

key_1=value_1
key_2=value_2
license_info=someinterestinglicenseinfo
key_n=value_n

字符串值不需要引号。

然后,使用该插件,您可以引用该文件,可能写入您的${WORKSPACE},并可以访问表格中的那些环境变量la ${license_info}

相关问题