从GitLab到Jenkins的Webhook返回HTTP 404

从GitLab到Jenkins的Webhook返回HTTP 404,jenkins,continuous-integration,gitlab,Jenkins,Continuous Integration,Gitlab,我正试图让Jenkins的工作在推送到gitlab存储库时自动生成。为此,我使用Jenkins的“GitLab插件” 以下是有效的方法: 我可以手动生成作业 Jenkins可以使用API密钥访问我的GitLab项目 问题是: 我配置了Jenkins项目,它给了我一个与GitLab webhook一起使用的URL。我还使用一个秘密令牌 在GitLab中,我使用插件提供给我的完全相同的url添加这个webhook,并且我还添加了秘密令牌。我禁用SSH。测试后,它返回HTTP 404,并显示以下消

我正试图让Jenkins的工作在推送到gitlab存储库时自动生成。为此,我使用Jenkins的“GitLab插件”

以下是有效的方法:

  • 我可以手动生成作业
  • Jenkins可以使用API密钥访问我的GitLab项目
问题是: 我配置了Jenkins项目,它给了我一个与GitLab webhook一起使用的URL。我还使用一个秘密令牌

在GitLab中,我使用插件提供给我的完全相同的url添加这个webhook,并且我还添加了秘密令牌。我禁用SSH。测试后,它返回HTTP 404,并显示以下消息:

 Hook executed successfully but returned HTTP 404 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 404 Not Found</title> </head> <body><h2>HTTP ERROR 404 Not Found</h2> <table> <tr><th>URI:</th><td>/project/UnitTestFramework%20-%20Gaspar%20Tamas</td></tr> <tr><th>STATUS:</th><td>404</td></tr> <tr><th>MESSAGE:</th><td>Not Found</td></tr> <tr><th>SERVLET:</th><td>Stapler</td></tr> </table> <hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.30.v20200611</a><hr/> </body> </html>

当然,在服务器名和项目名被替换后,将使用%20对空格进行转义。我看不出这个URL有什么问题,因为GitLab插件给了我这个URL,没有输入错误或任何东西。

我自己找到了一个解决方案。它完全依赖于GitLab插件,因为我无法使该URL正常工作。看答案,这对我很有效

如果链接出现在此处,请使用以下webhook url:

http://(jenkins_user):(jenkins_api_token)@(jenkins_server_address):(port)/job/(job_name)/build?delay=0sec
实际上,如果按照GitLab插件的建议设置Jenkins作业,除了使用此webhook而不是插件提供的webhook之外,提交状态将在GitLab中更新

http://(jenkins_user):(jenkins_api_token)@(jenkins_server_address):(port)/job/(job_name)/build?delay=0sec