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