问题标签 [multibranch-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
289 浏览

jenkins - Jenkins Multibranch Pipeline 不会定期索引

我正在使用 Multibranch Pipeline 插件运行 Jenkins 2.32。我希望插件定期扫描存储库中的新分支。我已经尝试使用“H/5 * * * *”的“定期构建”以及“如果不运行,则定期运行”设置为 5 分钟。都没有奏效。每次我更改配置时,索引只会运行一次!

0 投票
1 回答
9861 浏览

jenkins - 如何为 Jenkins 多分支管道项目中的作业设置作业属性?

有谁知道从 Jenkinsfile 中设置作业属性(特别是构建触发器)的正确方法?(声明性管道脚本,在多分支管道作业中)。

为清楚起见,我需要为多分支项目中的基础作业设置特定的构建触发器。我可以在 GUI 中配置的总体多分支项目的触发器。

已尝试此处列出的方法: Jenkins 多分支管道和指定上游项目

Jenkins:触发上游变更的多分支管道

如何使用 Jenkins Pipeline 属性步骤?

我收到错误说,从 v0.8 开始,我应该使用选项步骤: https ://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline

但是我看不到那里列出的任何允许在选项指令中设置构建触发器的步骤。

服务器上的每个分支作业文件夹中都有一个 config.xml,但我认为当我再次运行该作业时这将被覆盖,因为它们位于多分支作业下。

还有一个选项可以将不同的属性传递到不同的分支(为分支设置例外),但我看到的唯一选项是抑制 SCM 提交。


我的总体目标是尝试制作一个 Jenkinsfile,动态地允许多分支项目中的所有底层作业由其依赖的上游构建触发。

第 1 步:弄清楚如何设置属性 :)

第 2 步:使用上游依赖属性动态填充每个构建,这意味着它们会在某些构建完成时启动。

问题仅涉及第 1 步,第 2 步正是我要到达的地方。

0 投票
0 回答
421 浏览

jenkins - 如何制作参数化的多分支管道触发器?

你能给我一个例子,说明 Jenkinsfile 配置应该如何被 curl http trigger-buildwithparameters 触发?我努力了:

但似乎这个管道不会被带有 @somecommit 参数的 buildwithparameters 触发。可以通过传递参数的远程http调用触发bitbucket分支源/多分支管道吗?

0 投票
1 回答
45363 浏览

jenkins - 如何使用 github webhook 触发多分支管道构建

在自由式作业中,舞台 Build Trigger 上有一个名为“GitHub hook trigger for GITScm polling”的选项。

屏幕截图在这里:

屏幕截图在这里.

与 gitlab 配置“ http://myjenkins/gitlab/notify_commit ”中的 webhook 一起工作正常,这意味着当将某些内容推送到存储库时,构建将自动触发。但是为什么在 Multibranch Pipeline 中只有一个名为“Periodically if not else run”的选项?是不是有些插件没有安装?如何像自由式作业一样使用 github webhook 触发多分支管道构建

0 投票
1 回答
3740 浏览

jenkins - 如何将 jenkins 多分支管道与 monorepo 一起使用

我在一个带有 2 个工件的 monorepo 中有一个项目:一个前端和一个后端。

我想使用 Blue Ocean 和多分支管道,但有没有办法使用两个Jenkinsfile和两个管道?Afaik,Jenkinsfile 需要位于 repo 的根目录。

否则,我将使用经典管道,但我需要为每个新分支创建一个新管道,这很痛苦。

0 投票
2 回答
5024 浏览

jenkins - 如何获取 Jenkins 多分支管道作业的 displayName

我已经将我所有的 Jenkins 逻辑放在了一个结构化的管道脚本(又名 Jenkinsfile)中。

如果出现问题,我会发送邮件。对于这个主题,我想使用displayName工作而不是工作 id env.JOB_NAME(因为它们是由访问控制模式驱动的,而不是可读性)。

我可以使用正常的管道作业,currentBuild.rawBuild.project.displayName但对于多分支管道,这只是分支名称。

还是有更好的方法来获取用户友好的名称,然后遍历 rawBuild?

0 投票
1 回答
1133 浏览

jenkins - Jenkins 2 Multibranch Pipelines - 如何使用角色策略插件限制分支的可见性/执行?

我在具有两个分支的项目中使用多分支管道:开发和主。这将创建两个子项目,每个分支一个:

我已经设置了角色策略插件来根据分配的角色控制作业/管道的授权(可见性)。

项目角色

  • 经理:使用正则表达式App_.*
  • 开发人员:使用正则表达式App_.*

使用我当前的角色,两种类型的用户都可以看到超级项目 (App_Pipeline),并且可以执行这两个子项目。

关键是我希望一些用户(开发人员)能够查看和运行开发子项目,而其他一些用户(经理)可以查看和运行两个子项目,主项目和开发项目。

我还没有找到配置它的方法,知道如何实现吗?

更新:这是问题的全部背景。

我正在使用多分支管道扫描整个 Bitbucket 项目给我:

我需要支持这些情况:

  1. 一些用户只能读取和构建带有 Poc- 前缀的项目。不应该看到任何其他项目。
  2. 其他用户可以阅读所有项目,但只能构建开发分支
  3. 最后其他人可以阅读和构建所有项目
0 投票
2 回答
2284 浏览

github - Jenkins 多分支管道的自定义项目识别器

创建 Github 组织或 Bitbucket 团队/项目时,其中一个配置项是:

项目识别器:管道 Jenkinsfile

除了"Pipeline Jenkinsfile"之外没有其他选项,但是该选项甚至存在的事实表明开发人员设想人们为在顶层目录中没有单个“Jenkinsfile”的项目编写自己的自定义“识别器”的回购。

谁能指出我可以安装和使用的任何其他项目识别器的方向,或者甚至是关于从哪里开始实施我自己的识别器的一些细节?

我的特殊用例是,在单个存储库中,我们定义了多个工作流,这些工作流在一个存储库中编排代码/配置操作,我希望能够使用 Bitbucket Team 选项动态扫描存储库,找到所有*.Jenkinsfile跨所有分支/拉取请求的文件并填充必要的管道。

例如,在 repo 中有文件:

我希望詹金斯创建文件夹结构:

关于我可以从哪里开始创建项目识别器来做到这一点的任何想法(如果这可能的话)?

0 投票
2 回答
11963 浏览

jenkins - 多分支管道作业的分支索引是否应该由 webhook 自动触发?

我在 Jenkins 中设置了许多 Multibranch Pipeline 作业(运行 2.46.2 LTS、Branch API 2.0.8、GitHub Branch Source 2.0.5 和 Pipeline Multibranch 2.14)并且刚刚注意到分支索引 - 因此任何旧分支的清理——似乎不是由来自 GitHub 的 webhook 调用触发的。只有当有人手动单击“立即扫描存储库”链接,或者重新保存 Jenkins 中的作业配置时,才会触发它。我使用“扫描存储库日志”页面中显示的时间戳作为分支索引发生时间的指示。

似乎正在正确检测和构建新分支或对现有分支的更改,因此来自源代码控制 (GitHub) 的 webhook 正在工作,但令人惊讶的是这并没有触发分支索引,因此没有触发旧分支清理。我只是无法从文档中判断这是否是正确和预期的行为,或者我的设置中是否存在不正确的地方。

我注意到“如果不以其他方式运行,则定期运行”设置的帮助文本说:

某些类型的文件夹会在收到外部事件后立即自动重新索引。例如,当收到 SCM 更改通知时,多分支项目将重新检查其 SCM 存储库中是否有新的或删除的或修改的分支。(可以根据用于每个相应分支源的 SCM 插件配置推送通知。)但是,此类通知有时可能不可靠,或者 Jenkins 甚至可能没有运行来接收它们。在某些情况下,甚至不可能立即通知,例如因为 Jenkins 位于防火墙后面并且只能轮询外部系统。

此触发器允许定期回退,但在必要时。如果在指定的时间间隔内没有执行索引,则将安排索引。例如,在多分支项目的情况下,如果源代码控制系统未配置推送通知,请设置较短的间隔(大多数人会选择 15 分钟到 1 小时之间)。如果源代码控制系统配置为推送通知,请将与丢失推送通知事件中可接受的最大延迟相对应的时间间隔设置为当天的最后一次提交。(后续提交无论如何都应该触发索引并导致提交被拾取,所以大多数人会在 4 小时到 1 天之间选择。)

这当然意味着多分支管道作业的索引应该由分支事件重新触发(例如,通过 webhook 从 GitHub 推送),但我的索引日志上的时间戳似乎与此不符。

那么,我正在观察预期的行为吗?如果是这样,并且我想要定期清理旧分支,是否需要选中“扫描存储库触发器”下的“如果不运行,则定期运行”复选框?还是我的设置有问题,导致它无法按预期工作?

0 投票
1 回答
557 浏览

svn - Jenkins Multipipeline:忽略 SVN 中的用户提交

我目前正在尝试用多分支管道替换我们旧的级联构建。

我的目标是一个环境,我们的整个项目由 Jenkinsfiles 驱动,分支或标签可以作为持续集成/交付管道运行。

我们正在使用 SVN,它定义了一个 Webhook 以在提交时触发构建,这导致了我的问题:

当我在 Jenkins 中使用 Multibranch Pipeline 时,如何忽略来自特定用户的提交?

编辑:

我试图重现此处指出的行为。但是我不能让它与 SubversionSCM 一起运行。