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

如何从没有jenkinsfile的存储库中触发Jenkins管道构建?

柳俊彦
2023-03-14

我有一个不包含Jenkinsfile的存储库——我没有办法影响存储库本身。这意味着我既不能在存储库中添加也不能更改任何文件(在本例中,它是Qt-repo)。

我想做的是创建多个jenkinsfile,每个文件都为不同的目标配置和构建Qt库,或者运行不同的附加脚本<所有这些Jenkins文件将收集在不同的存储库中。

现在,我的问题是如何创建一个管道作业,一旦Qt存储库中发生更改,就会触发该作业,但使用另一个存储库中的Jenkinsfile。

据我所见,根据这些帖子,研究给我留下了两个选择:

我看到的第二个(可能是唯一的)选择是创建一个freestyle Jenkins作业,该作业只侦听Qt存储库,并在更改时触发管道作业的构建,作为其唯一操作。

我认为,第二种方法对我来说是可行的,但我想知道的是,是否有任何插件、配置选项或我错过的任何东西可以以更干净的方式解决这个问题,或者上述方法是否就是解决这个问题的方法。

共有3个答案

闾丘玮
2023-03-14

您可以配置生成触发器,以检查存储库中是否有更改:生成触发器-

例如,每分钟检查一次或每小时检查一次。

秦琦
2023-03-14

你有没有想过一个webhook可以从你的Git服务器上触发Jenkins作业?通过这种方式,您可以让任意repo触发构建,并减少Git服务器上由Jenkins定期轮询引起的流量。

其背后的原则是Jenkins为您的构建工作提供了一个URL(例如,<代码>http://your-jenkins.domain/job/JOBNAME/build?token=TOKEN开始你的工作。另一方面,Git可以注册一个所谓的钩子,每当推送到存储库时就会触发该钩子。每次有人推送到您的存储库时,向Git钩子添加HTTP请求将触发Jenkins作业。

这篇文章解释了如何在任何Git服务器上设置这样的钩子。还有Gitlab和Github的教程。

殳越
2023-03-14

你为什么不创建一个詹金斯自由式作业,使用常规的“投票SCM”方法监控QT存储库?

然后让那个自由泳的工作开始一个或多个你的詹金斯管道工作。

管道作业将指向SCM,管道“jenkinsFile”groovy脚本所在的位置(您控制的repo)。

在管道代码中,您可以使用管道SCM DSL步骤从Qt repo(不在您控制下的那个)中提取代码,然后执行所有的构建、测试或任何操作。

您可以将Qt-Repo的URL和修订作为轮询作业的参数传递到管道中。

 类似资料:
  • 我希望在我的Jenkinsfile中添加一个条件阶段,该阶段根据构建的触发方式运行。目前,我们设置为构建由以下方式触发: 对 git 存储库的更改,这些更改是在分支索引中选取的 用户使用 UI 中的“立即生成”按钮手动触发生成。 是否有任何方法可以根据这些操作中的哪些操作触发了构建来运行不同的管道步骤?

  • 我想建立一个管道,由GitHub项目的pull请求自动触发,然后在其中构建所有存储库。我找到了这篇文章并遵循了说明,因为它与我所需要的内容类似,但我目前正陷于让管道在同一GitHub项目中触发并构建多个存储库,每次对其中一个存储库进行PR时。 我附上这张图表是为了使我的问题更加清楚。 因此,目标是当在存储库1的分支3上发出请求时,将触发管道,该管道按指定顺序构建该分支和所有其他存储库,即工作项目的

  • 目前,我们使用JJB编译Jenkins作业(大部分已经是管道),以便配置大约700个作业,但JJB2似乎无法很好地扩展以构建管道,我正在寻找一种方法将其从等式中删除。 我主要希望能够将所有这些管道存储在一个集中的存储库中。 请注意,在我们的用例中,将CI配置(jenkins文件)保存在每个存储库和分支中是不可能的,我们需要将所有管道保存在一个“jenkins jobs.git”repo中。

  • 问题内容: 我的Jenkins Continuous Integration Server在Ubuntu主机上运行,​​其配置如下: 詹金斯v 1.463 github-api 1.23 Jenkins GIT插件1.1.18 GitHub插件1.2 轮询SCM工作。 要说这一点很重要,因为我希望您知道我的其他与jenkins相关的配置工作正常,除了此发布构建触发废话之外。 我想配置Jenkins

  • 我有一个管道(jenkins)工作,它使用多个存储库。 存储库是这样签出的: 现在,我想在对任何存储库进行提交时触发该作业。如何配置?

  • 我有一个Jenkins管道作业(不是多分支管道),管道内的逻辑之一是,当gitlab scm上有一个合并请求时,我想基于触发此生成的合并请求的源分支构建一些东西。 我的问题是,在Jenkinsfile中,我如何动态地获取这个源分支,签出代码,并创建一个工作区,以便在这个分支上运行构建?