gitea和jenkins webhook

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

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

如果是GOGS,您可以通过以下方式给Jenkins打电话:

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

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

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

  • Gitea看到推送活动并将信息发布到Jenkins webhook
  • Jenkins Gitea webhook看到了这篇文章,并使用这些信息从Gitea获取新的源代码
  • 问题是gitea插件如何知道要执行什么作业?您如何指定这一点?现在我可以看到gitea正在通过上面的URL向Jenkins发送帖子,但是什么都没有发生,Jenkins日志也没有任何信息来理解它失败的原因

    编辑:

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


    感谢我最初在Jenkins中安装了Gitea插件,并尝试在Gitea中配置一个webhook来触发Jenkins管道项目(全部在本地完成),然后如上所述@PhilW(假设您在
    http://localhost:8080
    ),触发<代码>http://localhost:8080/gitea-来自Gitea的webhook/?job=job\u name对我也不起作用

    说到这里,我在Jenkins中安装了Gogs插件,在Gitea中重新配置了我的webhook
    http://localhost:8080/gogs-webhook/?job=job\u name
    (注意区别)Jenkins顺利地构建了我的管道项目

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

    • http://localhost:8080/gogs-webhook/
      (在Jenkins中安装并启用了Gogs插件),或
    • http://localhost:8080/bitbucket-hook/
      (安装并启用了Bitbucket插件)
    你得到的只是一个空白页面,这似乎表明Jenkins中的相关webhook很可能按预期运行


    指定
    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