每当我的 Jenkins 收到有关我的存储库有新的 git 提交的通知时富,我在触发客户端上收到以下日志/错误响应:
Scheduled polling of foo
No git consumers for URI ssh://git@localhost:9777/path/to/foo.git
此失败通知不会开始构建。使用手动“立即构建”可成功开始构建。
设置
- 我有一个正在监听的詹金斯实例
localhost:8666
。 - 我有一个 SSH 守护进程正在监听
localhost:9777
。 - 在 Jenkins 中,我有一个基于 git 的 Maven 项目:
- “Maven 项目名称”是富。
- “Git 存储库 URL” 是
ssh://git@localhost:9777/path/to/foo.git
。
- “Git 存储库 URL” 是
- 在那里面裸存储库,我有一个钩子文件,
hooks/post-receive
内容如下:
。
# this is file post-receive
curl http://localhost:8666/git/notifyCommit?url=ssh://git@localhost:9777/path/to/foo.git
这建立承诺通知以前运行良好。我感觉,一旦我从标准 SSH 端口 22 移至非标准 9777,它就不再运行良好了。
我必须做什么才能使提交通知导致成功构建触发?
可能相关的源代码文件:
答案1
将钩子连接到 Jenkins 时需要记住的事项:
在“构建触发器”中选择
Poll SCM
选项,将“计划”文本区域留空该
url=xxx
参数必须与作业配置中指定的“存储库 URL”匹配。如果它以 ssh:// 为前缀,则应将其保留在通知调用中不要忘记
push a change to the repo
配置!要验证您是否进行了更改:http://jenkins-url:jenkins-port/job/JOB-NAME/scmPollLog/
最后一行应包含“发现更改”。
来源:Git 插件文档
答案2
我也遇到了同样的问题。
问题是自上次构建以来,您的 git 没有任何变化。只需进行一些更改,然后使用 jenkins 通知 URL,它就会起作用。
我用了:
http://<jenkins-server_link>/git/notifyCommiturl=http://<gitrepo>.git
答案3
您不需要 ssh:// 部分。
尝试:
curl http://localhost:8666/git/notifyCommit?url=git@localhost:9777/path/to/foo.git