gitea和jenkins webhook
我正在测试Gitea,并希望它能够触发Jenkins构建的非常基本的用例。我知道已经有了可以使用的GOGs webhook插件,但最近还发现Jenkins也有一个Gitea插件 如果是GOGS,您可以通过以下方式给Jenkins打电话: 在上面的示例中,显然需要根据需要更新Jenkins位置和作业名称 问题是没有Gitea插件的文档,但是根据源代码,URL应该是: 我认为应该发生的顺序如下:gitea和jenkins webhook,jenkins,jenkins-plugins,jenkins-blueocean,gitea,Jenkins,Jenkins Plugins,Jenkins Blueocean,Gitea,我正在测试Gitea,并希望它能够触发Jenkins构建的非常基本的用例。我知道已经有了可以使用的GOGs webhook插件,但最近还发现Jenkins也有一个Gitea插件 如果是GOGS,您可以通过以下方式给Jenkins打电话: 在上面的示例中,显然需要根据需要更新Jenkins位置和作业名称 问题是没有Gitea插件的文档,但是根据源代码,URL应该是: 我认为应该发生的顺序如下: Gitea看到推送活动并将信息发布到Jenkins webhook Jenkins Gitea we
感谢我最初在Jenkins中安装了Gitea插件,并尝试在Gitea中配置一个webhook来触发Jenkins管道项目(全部在本地完成),然后如上所述@PhilW(假设您在
http://localhost:8080
),触发<代码>http://localhost:8080/gitea-来自Gitea的webhook/?job=job\u name对我也不起作用
说到这里,我在Jenkins中安装了Gogs插件,在Gitea中重新配置了我的webhookhttp://localhost:8080/gogs-webhook/?job=job\u name
(注意区别)Jenkins顺利地构建了我的管道项目
同样值得一提的是,作为一个简单的肮脏伎俩,我发现如果您使用适当的webhook附件指定Jenkins服务器的基本URL(在web浏览器中),例如
(在Jenkins中安装并启用了Gogs插件),或http://localhost:8080/gogs-webhook/
(安装并启用了Bitbucket插件)http://localhost:8080/bitbucket-hook/
指定
http://localhost:8080/gitea-webhook/
(安装并启用了Gitea插件后)返回一个HTTP错误404,所以我怀疑(只是预感)这个插件可能有一两个错误。我在Jenkins上使用Gitea插件1.0.4,我对webhook没有问题。
我没有安装Gog插件
从GiteaUI(repository->settings->webhooks)中,我可以手动定义我的webhook,指示URL:
可以手动测试,运行“测试交付”,如图所示:
Jenkins side我已经为Gitea配置了凭据。
当Jenkins找到带有Jenkins文件的项目(我使用管道)时,它会自动为存储库(Gitea端)配置webhook(如果不存在)
Gitea将通过一篇包含大量JSON格式信息的帖子通知Jenkins
Jenkins必须有权访问GIT存储库,因此您需要为他创建GIT凭据。您可以使用
使用令牌功能,并为每个作业使用不同的令牌。我已经成功地使用相对较新的版本配置了Jenkins/Gitea组合(我使用基于alpine的docker容器来实现这两个功能)。我曾经当过导游。我在Jenkins中没有使用Gogs插件,只有Gitea插件。我也不使用管道,只使用经典的手动配置作业 在Jenkins中:在“作业设置”页面上,将“源代码管理”选项设置为“Git”,提供repo()的URL,并在“轮询触发器”部分检查“轮询SCM”选项,但不定义计划。这个设置基本上告诉Jenkins只有在通过webhook请求时才轮询您的Gitea回购 在Gitea中:在repo->Settings->webhook下,添加新的webhook,将URL设置为,然后清除秘密(保留为空) 此时,点击“测试交付”按钮应产生成功的交付尝试(绿色复选标记) 如果您的测试交付失败,请尝试查看是否可以发布到Jenkins webhook URL()。例如,使用卷曲或与卷曲一起使用:
curl -vvv -H "Content-Type: application/json" -H "X-Gitea-Event: push" -X POST http://jenkins.server.example.sk:8080/gitea-webhook/post -d "{}"
正确的响应应该只是简单的“已处理”字符串。如果你有别的东西,把它贴在这里
至于你问的关于Jenkins如何知道要构建什么工作的问题,我的理解是,链接是指向回购/分支机构的链接,Jenkins在内部查找该链接以查找引用该回购的工作(您在上面的“工作设置”页面中定义的内容)。介绍了更多关于通用钩子的信息,还有更多的链接可以解释引擎盖下发生了什么
要调试一些东西,您可以使用gitea存储库(或组织)设置中的“最近交付”(可单击整个post请求和响应!)。请记住,gitea有其/etc/gitea/app.ini文件,其中指定了ssh域、gitea服务器域和http url,您可以在jenkins中指定gitea srvers。这些URL必须匹配才能正常工作 在尝试了许多不同的指南让Webhook与Gitea插件一起工作后,我发现如果json请求中的Gitea主机名与Jenkins知道的主机名不匹配,则不会触发它。
我在连接到同一网桥网络的单独Docker容器中运行Jenkins和Gitea