gitea 和 jenkins webhook

2023-11-21

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

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

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

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

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

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

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

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

EDIT:

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

Thanks


我已经成功地使用相对较新的版本配置了 Jenkins/Gitea 组合(我对两者都使用基于 alpine 的官方 docker 容器)。我用了这个 Gitea 问题作为指导。我没有使用Jenkins中的Gogs插件,只使用了Gitea插件。我也不使用 Pipeline,只使用经典的手动配置作业。

在 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,并清除秘密(留空)。

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

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

curl -vvv -H "Content-Type: application/json" -H "X-Gitea-Event: push" -X POST http://jenkins.server.example.sk:8080/gitea-webhook/post -d "{}"

正确的响应应该只是简单的“已处理”字符串。如果您得到其他东西,请将其发布在这里。

至于你的问题詹金斯如何知道要构建什么工作,我的理解是POST 请求正文包含指向存储库/分支的链接,Jenkins 会在内部查找该存储库以找到引用此存储库的作业(您在上面的作业设置页面中定义的内容)。这个 Jenkins 维基页面详细介绍了通用钩子,还有这个答案进一步的链接可能会解释一下幕后发生的事情。

调试东西稍微,您可以使用 gitea 存储库(或组织)设置中的“最近交付”(可单击整个帖子请求和响应!)作为在这个答案中显示。请记住,gitea 有其 /etc/gitea/app.ini 文件,其中指定了 ssh 域、gitea 服务器域和 http url,并且您在 jenkins 中指定了 gitea srvers。这些 url 必须匹配才能正常工作!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gitea 和 jenkins webhook 的相关文章

  • 如何添加更多数据存储在 jenkins Rest api 中

    为了使问题变得简单 我知道我可以通过以下方式获取一些构建信息https jenkins server https jenkins server api json xml python 我获得了有关该构建记录的大量信息 但是 我想向该构建记录
  • Jenkins 管道中的导出命令

    如何在 Jenkins 管道中添加 导出 unix 命令 我里面有一个詹金斯 舞台 和 步骤 导出命令的语法是什么 我需要使用导出命令设置环境变量 PATH 您可以更新 PATH像这样 pipeline agent label docker
  • 在 Dockerfile 中安装节点?

    我是AWS elastic beanstalk的用户 我遇到了一些问题 我想用 less node 构建我的 CSS 文件 但我不知道在使用 jenkins 构建时如何在 dockerfile 中安装节点 这是我在 docker 中使用的安
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • BitBucket+Jenkins:仅在特定分支更改时触发构建

    以下是该问题的据称解决方案 尽管它看起来确实是一种解决方法 而不是最终的解决方案 有没有一种方法 通过作业配置或 bitbucket 挂钩配置 我可以将作业设置为仅在推送到特定分支时运行构建 是否可以仅从一个特定分支触发 Jenkins h
  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • Jenkins - Xcode 构建工作协同设计失败

    下面是我的构建脚本 不使用 xcodebuild 插件 构建步骤工程 我使用所需的证书和私钥创建了一个单独的钥匙串 它们在钥匙串访问中可见 脚本中的钥匙串命令不会失败 安全列表钥匙串将这些显示为有效的钥匙串 它的表现就像解锁命令并未真正成功
  • 具有 Azure Active Directory 身份验证的 Jenkins:REST API 访问不适用于不记名令牌

    我需要使用 python 代码访问 Jenkins REST API 需要一些有关正确方法的指导 我在 apache tomcat 中托管了 jenkins v2 176 1 并启用了 SSL 我已根据以下内容配置了 Azure AD 身份
  • 从 Jenkinsfile 中获取有关其他分支的信息

    Jenkins Blue Ocean 与链接的 Bitbucket Server 实例在同一本地网络上运行 Jenkins 中的多分支项目能够为本地 Bitbucket 服务器上链接的 Bitbucket 存储库的每个分支创建一个分支 但在
  • 使用 Jenkins 运行 ios-sim

    我正在尝试使用以下命令从命令行启动我的应用程序ios sim https github com downloads pegli ios sim ios sim xcode4 3 tar gz但这就是我得到的 Started by user
  • 在 jelly 脚本中使用 JavaScript

    我正在尝试在 Jenkins 中使用用 JavaScript 编写的脚本 我认为最简单的方法是在 jelly 脚本中调用它们 例如 我有文件 myCustom js alert Hello World function myFunction
  • 如何在Jenkins上更改工作空间并建立记录根目录?

    我希望将 Jenkins 的数据写入驱动器 E 因为这是服务器上的大型驱动器 Jenkins 本身安装在 C 上 我怎么做 我看到的默认配置是 工作区根目录 ITEM ROOTDIR 工作区 构建记录根目录 ITEM ROOTDIR 构建
  • 让 gradle 执行 JUnit 测试(Android 应用程序、Android Studio)

    我目前正在开发一个 Android 应用程序 最近从 Eclipse 切换到 Android Studio 不是我的想法 不过 我想配置 jenkins 服务器来定期运行 JUnit 测试和其他测试 为了实现这一点 我尝试配置一个 grad
  • Jenkins 和 Github 不使用 SSH 密钥

    我已将 Jenkins 设置为从 Github 上的私有存储库中提取特定作业 尽管我已经生成了私钥 公钥并将其作为部署密钥添加到 github 但 Jenkins 似乎并未使用 SSH 密钥 当我从 Jenkins 用户进行 git clo
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何删除詹金斯中的旧版本? [复制]

    这个问题在这里已经有答案了 我从 Jenkins 的构建目录中删除了旧的构建文件夹 希望它们在 UI 中删除 不幸的是 虽然这些构建目录消失了 但它们的 UI 链接仍然存在 我现在有两个问题 如何删除用户界面中失效的链接 如何从 cli 中
  • 如何将 Hudson/Jenkins 参数传递给 Windows 批处理命令

    好吧 我需要在我的 Hudson 作业中执行一个批处理文件 我有一个参数 Jenkis 参数 我需要将这个值 如参数 传递给批处理文件 我尝试了以下操作 Deploy cmd configuration DEPLOYCONFIGURATIO
  • Maven 构建在 Jenkins 上失败,但可以在本地计算机上运行

    我有一个全新安装的 Debian Wheezy 服务器 运行 Jenkins 1 596 最新版本 安装自官方deb包 http pkg jenkins ci org debian 为了与詹金斯一起玩 我创建了一个新的Maven项目使用 G

随机推荐