当前位置: 首页 > 知识库问答 >
问题:

gitea和jenkins webhook

柴星津
2023-03-14

我正在测试Gitea,并希望它能够触发Jenkins构建,非常基本的用例。我知道已经有了可以使用的GOGs webhook插件,但最近还发现Jenkins也有一个Gitea插件。

在GOGS的情况下,您可以通过以下方式给Jenkins打电话:http://localhost:8080/gogs-webhook/?作业=作业名称

在上面的示例中,显然需要根据需要更新Jenkins位置和作业名称。

问题是没有Gitea插件的文档,但根据源代码,URL应该是:

http://jenkins-url/gitea-webhook/post

我认为应该发生的顺序如下:

  1. Gitea看到推送活动并将信息发布到Jenkins webhook

问题是gitea插件如何知道要执行什么作业?您如何指定它?现在我可以看到gitea正在通过上述URL向Jenkins发送POST,但什么都没有发生,Jenkins日志也没有信息来理解它失败的原因。

编辑:

我在这里遇到了一个问题,在将生成的公共SSH密钥复制到Gitea用户帐户后,Jenkins仍然无法访问repo以使用管道编辑器。我不确定我在这里遗漏了什么,因为我能够从本地主机(Docker环境之外)完美地推/拉,并且已经检查过容器确实也可以完美地看到彼此。。。。

谢谢

共有3个答案

澹台庆
2023-03-14

我在Jenkins上使用Gitea Plugin 1.0.4,我对webhooks没有问题。我没有安装Gog插件。

从Gitea UI(存储库-

这可以手动测试,运行“测试交付”,如图所示:

Jenkins方面,我已经为Gitea配置了凭据。当Jenkins找到一个包含Jenkins文件的项目(我使用管道)时,它会自动为存储库(Gitea端)配置webhook(如果不存在的话)。

Gitea将以JSON格式通知Jenkins一篇包含大量信息的帖子。

Jenkins必须能够访问GIT存储库,所以您需要为他创建GIT的凭据。

佴英奕
2023-03-14

当我最初在Jenkins中安装Gitea插件并尝试在Gitea中配置网络钩子以触发Jenkins Pipeline项目时(全部在本地完成),然后正如上面提到的@PhilW(假设您在http://localhost:8080运行Jenkins),从Gitea触发http://localhost:8080/gitea-webhook/?job=job_name对我也不起作用。

话虽如此,然后我在Jenkins中安装了GogsPlugin,在Giteahttp://localhost:8080/gogs-webhook/?job=job_name中重新配置了我的网络钩子(注意区别),Jenkins顺利地构建了我的Pipeline项目。

同样值得一提的是,作为一个简单的肮脏伎俩,我发现如果您使用适当的webhook附件指定Jenkins服务器的基本URL(在web浏览器中),例如。

  • http://localhost:8080/gogs-webhook/(在Jenkins中安装并启用了GogsPlugin),或者
  • http://localhost:8080/bitbucket-hook/(安装并启用了比特桶插件),

你得到的只是一个空白页面,这似乎表明Jenkins中的相关webhook很可能按预期运行。

指定<代码>http://localhost:8080/gitea-webhook//code>(安装并启用了Gitea插件)返回了一个HTTP错误404,所以我怀疑(只是预感)这个插件可能有一两个bug。

鲜于意
2023-03-14

我已经成功地使用相对较新的版本配置了Jenkins/Gitea组合(我使用基于alpine的docker容器来实现这两个版本)。我用这期Gitea作为指南。我在Jenkins中没有使用Gogs插件,只有Gitea插件。我也不使用流水线,只使用经典的手动配置作业。

在Jenkins中:在“作业设置”页面上,将“源代码管理”选项设置为“Git”,提供您的repo的URL(http://gitea-url.your.org/username/repo.git),并在“轮询触发器”部分选中“轮询SCM”选项,但未定义时间表。这个设置基本上告诉Jenkins只有在通过webhook请求时才轮询您的GiteaRepo。

在Gitea:回购下-

此时,点击“测试交付”按钮应产生成功的交付尝试(绿色复选标记)。

如果您的测试交付失败,请尝试查看您是否可以发布到Jenkins webhook URL(http://jenkins_url.your.org/gitea-webhook/post). E、 g.使用邮递员或卷发:

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如何知道要构建什么作业的问题,我的理解是,POST请求正文包含一个指向回购/分支的链接,Jenkins在内部查找该链接以找到引用该回购的作业(您在上面的作业设置页面中定义的内容)。这个Jenkins wiki页面介绍了更多关于通用钩子的信息,还有这个答案,还有更多的链接,可以解释引擎盖下发生了什么。

要稍微调试一下,您可以使用“最近的交付”(可单击整个post请求和响应!)来自gitea存储库(或组织)设置,如本答案所示。记住,gitea有它的/etc/gitea/app。ini文件,其中指定了ssh域、gitea服务器域和http url,您可以在jenkins中指定gitea srvers。这些URL必须匹配才能工作!

 类似资料:
  • 问题内容: 我正在测试Gitea,并希望它触发Jenkins构建,相当基本的用例。我了解现有的GOGs webhook插件可以使用,但是最近还发现Jenkins也有一个Gitea插件。 在GOGS情况下,您可以通过以下方式致电Jenkins: http:// localhost:8080 / gogs-webhook /?job = job_name 在上面的示例中,显然根据需要更新了詹金斯的位置

  • Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。项目采用 Go 作为后端语言,只要生成一个可执行程序即可。 它是跨平台的,支持 Linux、macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC。 试用请访问 在线Demo。             提示 开始贡献代码之前请确保你已经看过了 贡献者向

  • Table of Contents Installing go You should install go and set up your go environment correctly. Next, install Node.js with npm which is required to build the JavaScript and CSS files. The minimum supp

  • Gitea 是一个自己托管的Git服务程序。他和GitHub, Bitbucket or Gitlab等比较类似。他是从 Gogs 发展而来,不过我们已经Fork并且命名为Gitea。对于我们Fork的原因可以看 这里。 目标 Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平

  • Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

  • Gitea Extension for Visual Studio 是一个针对Gitea 在Visual Studio 中的扩展程序, 便于你在Visual Studio 2015\2017\2019中使用Gitea管理你的代码。