问题标签 [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.
jenkins - 如何在 Jenkins 多分支管道作业中只构建一个目录?
我有一个名为 multibranch-test 的 github 存储库,其中包含两个子目录 Project1、Project2。
PS C:\Repos\multibranch-test> tree .
Folder PATH listing for volume Windows
Volume serial number is 2085-6D3D
C:\REPOS\MULTIBRANCH-TEST
├───Project1
└───Project2
每个子目录都有一个 Jenkinsfile 和该项目的代码。
在 Jenkins 中,我有两个多分支管道作业 - 一个用于 Project1,一个用于 Project2。在 Project1 的配置中,如果在 Project2 的子目录中推送了提交,我不希望推送通知或轮询来构建 Project1。
因此,在 Project1 中,我配置了其他行为:
- 高级克隆行为:检查浅克隆
- 稀疏结帐路径设置为 Project1#
- 轮询会忽略某些路径中的提交
- 包含区域: Project1/*
- 排除地区: *
- 构建配置:脚本路径:Project1/Jenkinsfile
正在发生的事情是,如果我在子目录 Project2 中向 master 提交提交,则Project1 和 Project2 作业都会构建。我只希望 Project2 构建。有人可以指出我做错了什么吗?
两个项目的 Jenkinsfiles 相似,如下所示:
jenkins - 是否可以重命名默认的“声明式:结帐 SCM”步骤?
当您使用 Jenkins 多分支管道时,第一阶段默认命名为Declarative: Checkout SCM
.
是否可以重命名?我知道可以跳过默认结帐,但我不想要这个 - 我只想重命名这个默认步骤。
jenkins - 在 Jenkins 多分支管道中注入秘密
我有具有管理员访问权限的本地 jenkins 设置。
我已经按照这个https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs配置了插件。
不过,我仍然不清楚如何在 Jenkins 多分支管道作业中注入秘密。我也看不到任何设置环境变量的配置选项。PS - 我不想在 git 中提交秘密;)
需要将它们作为 Jenkins 的秘密注入。
jenkins - 从其他多分支管道触发多分支管道作业
我有一个场景,但是我有 2 个项目(A 和 B),它们都在 Jenkins 中配置了多分支管道作业,问题是项目 B 依赖于项目 A。
所以我发现有时候我在项目 A 中签入代码时,我还需要在构建 A 后构建 ProjectB。现在,在我开始调查管道构建之前,我会为每个分支分配一份工作,然后在 Jenkins 中为适当的分支触发项目 B 的适当工作。
我想在 Jenkinsfile 中设置什么,以便在 ProjectA/develop 执行时触发 ProjectB 和同一分支的多分支管道作业。
我有:
但是我的 ProjectA 管道失败了:
有任何想法吗?
jenkins - 使用 Gerrit 触发器的 Jenkins 多分支
一点背景...
我们已经使用 Gerrit + Jenkins 一年多了,取得了巨大的成功。添加代码审查和构建验证使我们的开发人员对他们提交到源代码的内容更加负责。当我们的项目开始时,我为我的团队设置了两者之间的集成。
现在,我希望能够为使用 Gerrit 进行代码审查的库进行多分支构建。一旦 CR 通过经过验证的构建并且更改使其成为源代码,我希望进行分发构建(Gerrit 触发器可以侦听此事件)。
简单示例
我在下一节中写了一个详细而具体的示例来说明我正在尝试做的事情
为了便于交流我正在尝试做的事情,我将参考项目 A 和库 B。两者都在 Gerrit 中用于 CR 和构建验证。这为我们分发的每个分支提供了 2 个 Gerrit 触发构建以及每晚构建。
图书馆 B 被项目 A 使用(通过凉亭)。当用户向库项目提交更改时,Gerrit 触发器会选择此更改,然后 Jenkins 会构建更改。审核并提交更改后,将手动启动 dist 构建。然后,此构建更新包中的 dist。这将在项目 A 的下一个版本(或当用户手动更新 bower 时)中得到支持。
一个更详细的例子
我们创建了一个库,它是一组可消耗的通用样式和 JavaScript,可以在我们组织的不同 Web 应用程序项目中使用。我们尝试尽可能多地创建大多数人都熟悉的 bower.io 包(我们模仿 Bootstrap)。该库的 git 分支布局旨在模仿 gitflow;开发分支总是下一个版本,等等。
该库有一个src/
包含所有基本代码等的文件夹。该bower.json
文件指向一个dist/
包含已编译、缩小等文件的文件夹。正是通过这个设置,我们在我们的 Web 应用程序中使用了这个包。
使用 Gerrit,我们审查了我们团队为此项目提交的所有提交。这相当容易。带有 Gerrit-Trigger 的 Jenkins 会收到有关新更改的通知并构建补丁集。我们告诉开发人员不要在文件夹中提交更改,dist/
因为它会带来合并的噩梦,但是文件在那里,因此库的每个使用者都不必进行编译输出。
在这一点上,希望对我们正在做的事情有一个很好的高级视图。现在可能更容易解释这个问题。
当我们为我们的主要 Web 应用程序的 QA 团队进行日常构建时,我们会做bower install
. 在我们的 bower.json 文件中,我们指向#develop
ref。这意味着 Web 应用程序将使用库dist/
文件夹中最新的内容。dist/
如果在 Web 应用程序的每日 QA 构建之前尚未完成对更新文件夹的库的提交,则该库实际上不会在该构建中更新。
这让 QA 很难过。他们向开发人员发送一封电子邮件,说明已关闭的票证实际上还没有准备好进行测试。这让我很沮丧,因为我又收到了一封来自开发人员的电子邮件,询问 WTF。
我希望发生的事情
- 为每个项目定义一个多分支管道构建,以便每个分支不需要自己的每日/每晚构建作业。
- 对于库作业,除了用于夜间构建的管道外,它还会在补丁集提交到源代码时启动。
特别是关于第 2 点和上述详细示例:我希望以dist/
受控方式自动更新文件夹,而无需开发人员交互,并且每当潜在客户向源提交批准的补丁集时。
对于第 1 点和关于这个问题,我不是在为项目 A 构建管道构建寻求帮助。
问题
我为库项目创建了一个多分支管道。在其中我想提取源代码:
这行得通!但是,它只是为分支提取最新的。它没有定义构建发生的时间。我打开了 SCM 轮询。
构建完成后,我有一个步骤可以执行此操作:
这里的问题是推送导致轮询触发并进入无限循环。
我想做的是使用 Gerrit-Trigger 的能力在合并更改/补丁时触发构建(提交已发生)。我希望它不是一个自由形式的工作,而是一个管道构建,以便它利用 Jenkins 文件。
我怎样才能让它工作,以便 Gerrit 触发器告诉何时进行构建?
其他解决方法尝试
我确实想出了一种跳过构建的方法。它涉及在构建运行时查看最后的提交消息。然后我可以跳过管道中的所有其他步骤。这只是意味着总会有两个构建,一个包含所有管道步骤,然后一个仅包含“Checkout”阶段。不理想。
jenkins - Jenkins:如何在多分支项目中指定 jenkinsfile
使用 Jenkins 进行多平台多分支构建。
我有多个多分支管道项目(每个平台一个,因为每个平台需要明显不同的构建步骤)。我有一个包含多个分支的代码存储库(这就是多分支管道项目有意义的原因)。
我想让每个 Multibranch Pipeline 项目引用一个不同的 Jenkinsfile,而不是全部尝试使用位于存储库根目录中的文件名为“Jenkinsfile”的项目。
这个已解决的错误表明我应该能够做到这一点,但我找不到任何概述如何做到这一点的文档。有人知道我该怎么做吗?
谢谢你的时间!艾伦
git - Jenkins中多分支管道的合并请求触发器
如何在合并请求上触发多分支管道?配置不会为多分支管道中的特定分支保存。是的,我确实知道单个管道可以选择触发合并请求,但我正在寻找 MULTI-BRANCH 管道的解决方案。我似乎无法在任何地方找到解决方案。
jenkins - “轮询忽略带有某些消息的提交”不适用于多分支管道
我一直在尝试使用多分支管道作业。一旦我skip_ci
在提交消息中找到一些文本模式,我想跳过构建工作。我能够在一个简单的管道作业中实现它,但对于多分支管道同样不起作用。
我正在使用添加下拉功能“轮询忽略带有某些消息的提交”排除的消息:(?s).*skip_ci.*
GIT 客户端插件:2.4.6 GIT 插件:3.3.0
有什么我想念的,或者我可以通过任何其他方式实现它吗?任何帮助将不胜感激。
谢谢,布里吉
jenkins - 我可以检查Jenkinsfile中是否存在环境变量吗
我正在为我的项目运行 Multibranch 管道。
Jenkinsfile 的行为应该根据触发器而改变。触发管道的事件有两个 1. Push 事件 2. Pull Request。
我正在尝试检查环境变量“CHANGE_ID”(“CHANGE_ID”仅可用于拉取请求)。参考。
因此,如果管道由推送事件触发,并且如果检查“CHANGE_ID”变量,则会引发异常(如果管道被拉取请求触发,代码工作正常)。
代码:
错误:
如何检查 Jenkinsfile 中是否存在“CHANGE_ID”变量?
user-interface - Configuring Jenkins Multibranch Pipelines without the GUI
Is it possible to configure Jenkins Multibranch Pipelines - as well as the associated credentials, plugins (for bitbucket repos a plugin is required), and nodes - from the terminal?
My concern is that, at best, automating the configuration of a Jenkins Multibranch Pipeline may have to include manually performing the above tasks via the GUI every time.