Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 带有批处理阶段的Jenkins作业有一个僵尸环境变量_Windows_Jenkins - Fatal编程技术网

Windows 带有批处理阶段的Jenkins作业有一个僵尸环境变量

Windows 带有批处理阶段的Jenkins作业有一个僵尸环境变量,windows,jenkins,Windows,Jenkins,我有一个python命令行程序,可以为我检索密码。 我可以从命令行运行它并获取密码。 命令示例: passwordmanpro_cli javaprops OpenWeatherMap_DEV 反应很好 我在机器上安装了詹金斯代理。我有一个“执行Windows批处理命令”步骤,它调用完全相同的命令行 这过去是没有问题的。一个月前它停止工作了。有一个错误: ERROR Success not returned from passwordmanagerpro Using URL - https:/

我有一个python命令行程序,可以为我检索密码。 我可以从命令行运行它并获取密码。 命令示例:

passwordmanpro_cli javaprops OpenWeatherMap_DEV
反应很好

我在机器上安装了詹金斯代理。我有一个“执行Windows批处理命令”步骤,它调用完全相同的命令行

这过去是没有问题的。一个月前它停止工作了。有一个错误:

ERROR Success not returned from passwordmanagerpro
Using URL - https://icsecpws.cc.ic.ac.uk:443/restapi/json/v1/resources (AUTHTOKEN ommitted - 36)
ResponseCode - 200
resJSON - {'operation': {'name': 'Authentication', 'result': {'status': 'Failed', 'message': 'User is not allowed to access from this host'}}}
IP Being used to send message might be: 155.198.31.184
与此请求通过windows终端发送的方式以及从Jenkins中的windows批处理步骤发送的方式不同

我已验证windows批处理命令是否以正确的用户身份运行。 我已验证所传递的用户名和密码凭据是否相同 我通过在python中添加调试行来验证源IP

我们正在使用的密码管理器具有API用户设置,您可以输入允许调用API的IP地址。显然,限制不是在源IP上完成的,而是反向主机名查找

有没有人能给我一些关于如何进一步调试的建议

更新1 更多的调试表明,原因是环境设置错误。主机是windows 10。我有一个名为PASSMANCLI\u AUTHTOKEN的环境变量和另一个名为PASSMANCLI\u URL的环境变量

在控制面板中,我在系统范围内设置这两个变量。不适用于特定用户。 真正奇怪的是PASSMANCLI_URL正在更改并被正常拾取,但PASSMANCLI_AUTHTOKEN变量却没有。我已经在配置中添加了一个“set”windows批处理命令,并且我已经确认PASSMANCLI_AUTHTOKEN值不是来自系统设置,而是来自其他地方。我想知道詹金斯是否对这个有什么特别的看法

顺便说一句:我还使用了whoami命令作为项目配置的一部分,并确认Jenkins正在以相同的用户身份运行

更新2 我浏览了整个windows注册表,查看了所有环境条目,并删除了PASSMANCLI_AUTHTOKEN。我已确认它不在环境控制台中。我已经重新启动了Jenkins代理和整个服务器。然后,我用一个命令“Set”运行jenkins作业,它会读回令牌的旧值

更新3 我用一个步骤创建了一个全新的Jenkins作业,即windows批处理命令。它只是“设置”了环境变量。我可以看到PASSMANCLI_AUTHTOKEN仍在设置中,尽管我已将其从机器上完全擦除

更新4 我认为这可能与Jenkins runner使用JAVA的方式有关。(我们的Jenkins runner使用Java 8 32位)。我编写了一个运行

processBuilder.command("cmd.exe", "/c", "set");
并输出结果。 我检查了输出,变量没有按预期设置。 当通过Jenkins执行时,我仍然不知道这个变量来自哪里