我有一个MSBuild
,其中包含一个组件中带有签名代码的Jenkins。
当我在启动Jenkins作为Visual Studio项目最初构建的用户之后运行构建时,它运行正常。但是,当我通过另一个本地管理员启动的计划任务将该项目作为同一用户运行时,即使进程列表中的用户名相同,构建也会失败。
因此,例如,假设该项目在用户Admin
中构建正常,在Visual Studio中以及在用户{{1}启动的Tomcat上通过Jenkins实例启动MSBuild
时}。
当我将用户切换到Admin
(本地管理员)并运行以用户John.admin
启动Tomcat的计划任务时,它会因以下SignTool错误而失败:
Admin
在进程列表中,它使Tomcat作为VCBUILD: SignTool error : ISignedCode::Sign returned error: 0x80092006
用户运行,就像Admin
使用Admin
启动它一样(Tomcat是独立安装)。
我已经尝试了一段时间,但无法弄清楚为什么在通过任务启动时构建失败。有谁能看到这个问题?重启机器并通过另一个本地管理员启动后,Jenkins构建必须成功。
编辑:我复制了startup.bat
用户的所有证书(使用管理单元),所有Admin
,%PATH%
,{{ 1}}变量是相同的,并且任务是从同一个文件夹运行的。我能看到的唯一区别是用户会话ID不同。我知道这一点,因为如果我使用%CD%
启动计划任务,然后以%USERPROFILE%
身份登录,则在我点击“显示所有用户的进程”之前,java.exe不在进程列表中,然后显示它以用户John.admin
运行。
我几乎没有想法,所以我可以尝试任何事情。
答案 0 :(得分:1)
很难肯定地说,但如果我正确地理解了这个问题,我建议您将精力集中在任何环境变量或其他特定于用户的配置上,这些配置会从父进程(计划任务)传递出来产生子进程(Tomcat)。即使Tomcat作为管理员运行,也可能会将%USERNAME%
传递给它,因为John.admin,或者%USERPROFILE%
甚至%PATH%
传递不正确。
另一种可能性:特别是对于计划任务,即使可以找到程序/脚本,我也没有正确设置“start in”文件夹而被烧毁。
要进行故障排除,可以通过临时修改startup.bat
将环境变量,当前目录和其他相关配置信息的值写入日志文件。
我对SignTool并不十分熟悉,但这也有帮助 - SignTool Error: ISignedCode::Sign returned error: 0x80092006 - 答案讨论私钥存储与搜索的位置。