当前位置: 首页 > 面试题库 >

gitea和jenkins webhook

海鸣
2023-03-14
问题内容

我正在测试Gitea,并希望它触发Jenkins构建,相当基本的用例。我了解现有的GOGs
webhook插件可以使用,但是最近还发现Jenkins也有一个Gitea插件。

在GOGS情况下,您可以通过以下方式致电Jenkins: http:// localhost:8080 / gogs-webhook /?job =
job_name

在上面的示例中,显然根据需要更新了詹金斯的位置和工作名称。

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

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

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

  1. Gitea看到了推送活动并将信息发布到Jenkins webhook
  2. Jenkins Gitea webhook看到了POST,并使用该信息从Gitea中获取了新的源代码。

问题是gitea插件如何知道要执行的作业?您如何指定呢?现在,我可以看到gitea正在通过上述URL将POST发送到Jenkins,但没有任何反应,Jenkins日志也没有任何信息来了解其失败原因。

编辑:

我在这里遇到一个问题,在将生成的公共SSH密钥复制到Gitea用户帐户后,Jenkins仍然无法访问回购以便使用Pipeline
Editor。不知道我在这里缺少什么,因为我能够从本地主机(在Docker环境之外)完美地推入/拉出,并检查了容器是否也可以完美地看到彼此…。

谢谢


问题答案:

我已经成功使用相对较新的版本成功配置了Jenkins /Gitea组合(我都使用基于高山的官方Docker容器)。我以这个Gitea问题为指导。我没有在Jenkins中使用Gogs插件,仅在Gitea插件中使用了。我也不使用管道,仅使用经典的手动配置作业。

在Jenkins中:在工作设置页面上,将“源代码管理”选项设置为“ Git”,提供仓库的URL(http://gitea-
url.your.org/username/repo.git
),并在“轮询触发器”中提供”部分,检查“轮询SCM”选项,但未定义任何时间表。此设置基本上告诉Jenkins仅在通过Webhook请求时才轮询您的Gitea回购。

在Gitea中:在repo-> Settings->
Webhooks下,添加新的webhook,将URL设置为http://jenkins_url.your.org/gitea-
webhook/post,然后清除秘密(将其保留为空白)。

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

如果您的测试交付失败,请尝试查看是否可以发布到Jenkins webhook URL(http://jenkins_url.your.org/gitea-
webhook/post)。例如,使用Postman或使用curl:

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在内部查找此内容以查找引用此仓库的工作(您在上方的“作业设置”页面)。这个JenkinsWiki页面介绍了更多有关通用钩子的信息,此外,此答案还有其他链接,可能会更详细地解释幕后情况。

稍微 调试
一下,您可以从gitea存储库(或组织)设置中使用“最近的交付”(可单击整个发布请求以及响应!)[,如此答案所示](我在Jenkins上使用Gitea插件1.0.4,并且我对webhooks没问题。我没有安装Gog插件。

从Gitea UI(存储库->设置-> webhooks),我可以手动定义指示URL的webhook:https:// my-jenkins / gitea-webhook / post

詹金斯方面,我已经为Gitea配置了凭据。当Jenkins找到带有Jenkinsfile的项目(我使用管道)时,它将自动为存储库(Gitea端)配置webhook(如果不存在)。

Gitea将通过包含大量JSON格式信息的POST通知Jenkins。

Jenkins必须有权访问GIT存储库,因此您需要为其创建Git凭据。)。请记住,该gitea具有/etc/gitea/app.ini文件,其中指定了ssh域,gitea服务器域和http
url,并且您在jenkins中指定了gitea srvers。这些网址必须匹配才能正常工作!



 类似资料:
  • 我正在测试Gitea,并希望它能够触发Jenkins构建,非常基本的用例。我知道已经有了可以使用的GOGs webhook插件,但最近还发现Jenkins也有一个Gitea插件。 在GOGS的情况下,您可以通过以下方式给Jenkins打电话:http://localhost:8080/gogs-webhook/?作业=作业名称 在上面的示例中,显然需要根据需要更新Jenkins位置和作业名称。 问

  • 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管理你的代码。