我们使用 Mercurial (hg) 通过中央存储库进行源代码控制(每个开发人员也有自己的本地存储库)。我正在尝试在中央存储库中设置一个钩子,以便它启动 Jenkins CI 构建。
钩子在 hgrc 文件中显示为:
[hooks]
incoming.jenkins = java -jar C:/buildServerJar/jenkins-cli.jar -s http://ctc-jenkins:8080/ -i C:/buildServerJar/id_rsa build "All Working Projects"
[ui]
verbose = True
debug = True
现在,我已经测试了从托管中央存储库的机器的命令行上的钩子调用的命令,它按预期工作。
但是,当我通过推送到中央存储库来触发挂钩时,我会看到以下输出:
% hg --repository D:\dev\hg\******\source push W:\Repository\*********
pushing to W:\Repository\**********
searching for changes
adding changesets
add changeset 62784303122b
adding manifests
adding file changes
adding ****/CMakeLists.txt revisions
added 1 changesets with 1 changes to 1 files
updating the branch cache
running hook incoming.jenkins: java -jar C:/buildServerJar/jenkins-cli.jar -s http://ctc-jenkins:8080/ -i C:/buildServerJar/id_rsa build "All Working Projects"
warning: incoming.jenkins hook exited with status 1
[command completed successfully Fri Jul 26 15:24:58 2013]
有问题的服务器是一台 Windows 机器。有什么想法可能会出错或如何获取有关错误的更多详细信息?
更新:
所以我修改了钩子以获取更多信息:
incoming.jenkins = java -jar C:/buildServerJar/jenkins-cli.jar -s http://ctc-jenkins:8080/ -i C:/buildServerJar/id_rsa build "All Working Projects" > hg_output.log 2> hg_errors.log
它说它无法找到 jarfile,它显然在指示的位置。让我想知道这是否是权限问题。有谁知道 Mercurial 在哪个用户帐户下运行它的钩子?
Error: Unable to access jarfile C:/buildServerJar/jenkins-cli.jar