如何使用Groovy打印Windows10的用户定义变量?

时间:2018-06-23 05:40:42

标签: windows jenkins groovy

我正在使用Windows 10,并已使用“为您的帐户编辑环境变量”添加了“ BRANCH_OUTPUT”用户定义的变量

我从'Jenkins'创建了一个小小的'groovy脚本',并试图打印'USER DEFINED VARIABLE'。但是,脚本会打印'null'而不是值

脚本

println "PATH=" + System.getenv("PATH")
println "TMP=" + System.getenv("TMP")
println "User Var=" + System.getenv("BRANCH_OUTPUT")

脚本输出

Building in workspace C:\Program Files (x86)\Jenkins\workspace\printEnvVar
PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;

TMP=C:\windows\TEMP

User Var=null

“ SET”的输出

C:\Users>set
ALLUSERSPROFILE=C:\ProgramData
BRANCH_OUTPUT=C:\Temp

(1)打印系统定义的变量 (2)打印“已经存在”的用户定义变量

它不会仅打印“我添加的内容”。我重新启动了Jenkins和Windows,但没有任何效果。用户定义的变量未打印

我应该在Windows中进行哪些更改(或者我做错了什么?

3 个答案:

答案 0 :(得分:0)

我猜您是先启动jenkins,然后尝试在另一个shell中设置用户定义的变量。这是行不通的,因为shell和jenkins在不同的上下文中运行。

按Windows键并搜索“环境”。您会发现一个可以用来设置用户环境变量的工具。在上下文重新启动后,这些变量在所有上下文中均可用。因此,您需要在以后重新启动您的詹金斯。

希望这会有所帮助

答案 1 :(得分:0)

如何定义“用户定义变量”?我的猜测是您在Windows环境变量applet中定义了它,如上一个答案的注释中所述。在您的原始注释中,您提到它打印了一个已经存在的用户定义变量的值,但尚不清楚它是什么。 TMP显示为C:\ Windows \ TEMP,对于用户-甚至对于系统管理员来说,将TMP设置为该文件夹并不常见。只有服务帐户才能获得该值。您没有在“ set”命令的输出中包含TMP,但是set通常显示大约50个变量;例如,set大约显示50个变量。因为只显示了2个,所以我假设输出被修剪了。

要在Jenkins中显示用户名的用户定义环境变量,必须使用用户名将Jenkins作为服务运行。打开服务小程序,选择Jenkins服务,然后右键单击“属性”,转到“登录”选项卡,选择“此帐户”单选按钮,然后输入您的用户名和密码。

如果Jenkins已经在系统的本地服务帐户下运行(即使有一段时间),则可能存在权限问题,因为您的帐户肯定没有相同的权限,并且Jenkins MIGHT已创建了无法在您的帐户下访问的文件。您可能必须进行全新安装,并确保在首次启动Jenkins之前更改服务配置。我不知道这是有必要的(除非您已配置安全性,否则我认为这是不可能的),但是我可以想象这是有可能的。

这可能不是您想要为他人使用的Jenkins实例执行的操作;为此,您将让Jenkins作为服务在本地系统帐户下运行,并与IT / InfoSecurity部门一起获取定义为系统变量的变量,就像您与响应早期答案的人员一样。如果仅在Jenkins中需要知道变量,则可以在Jenkins中全局定义(将应用于所有作业:转到“管理Jenkins”,“配置系统”,滚动到“全局属性”,选中“环境变量”,然后在作业中添加“ BUILD_OUTPUT”并为其分配值(仅适用于该作业:在作业配置中添加一个参数,该参数作为环境变量传递给该作业)。如果希望用户能够在请求构建时进行更改,则可以使用“隐藏参数插件”(默认情况下Jenkins中不包含,但很容易添加)。)

答案 2 :(得分:0)

您的Jenkins服务正在与系统用户一起运行,但是您为Windows用户设置了环境变量。最简单的解决方案是更改Jenkins服务,使其与您为其设置变量的WIndows帐户一起运行。