我有一个名为multibranch-test的github repo,有两个子目录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
每个子目录都有一个Jenkins文件和该项目的代码.
在Jenkins中,我有两个multibranch管道作业 - 一个用于Project1,另一个用于Project2.在Project1的配置中,如果在Project2的子目录中推送了提交,我不希望推送通知或轮询来构建Project1.
所以在Project1中我配置了附加行为:
正在发生的事情是,如果我把一个犯子目录掌握Project2中,既 PROJECT1和Project2的工作得到建造.我只想要构建Project2.有人可以指出我做错了吗?
两个项目的Jenkinsfiles类似,看起来像:
#!groovy
node {
stage ('checkout') {
checkout scm
}
stage ('build') {
dir ('Project1') {
bat 'powershell -Command gci'
bat 'powershell -Command gci env:'
bat 'powershell -File .\\Project1.ps1'
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个在Jenkins中使用Multibranch Pipeline作业建立的GitHub存储库,直到现在已经满足于需要continuous-integration/jenkins/branch状态检查,因为Jenkins在从repo构建本地分支时发布.但是,我现在收到了来自外部分支的pull请求,并且Jenkins已经发布了continuous-integration/jenkins/pr-merge状态检查.并且由于需要进行continuous-integration/jenkins/branch状态检查,因此阻止PR合并.
对于一个将包含本地分支(来自其主要维护者)和分支(来自偶尔的外部贡献者)的项目,这里的预期方法是什么?我必须放弃在GitHub端进行状态检查吗?或者有没有其他方法让Jenkins发布稳定的状态检查上下文,无论PR的来源如何?
我正在尝试在jobDSL中创建multibranchPipelineJob,但Jenkins文件位于默认的替代位置.我查看了文档https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob ,我看不到这样做的方法.查看config.xml以获取手动创建的multibranchPipelineJob,scriptPath位于该部分中,但我找不到设置此方法的DSL方法.
谁能提供任何帮助,如何做到这一点?干杯
jenkins jenkins-job-dsl jenkins-pipeline multibranch-pipeline
我正试图在Jenkins的Multibranch Pipelines作业中自动触发'Branch Indexing'.
目前,只有一种方法似乎实际工作,即轮询,但我无法做到这一点,无论如何轮询是一个糟糕的解决方案.
该插件不支持"远程触发器构建(例如,从脚本)"(选项未保存),因此我无法通过推送等Web挂钩触发它.
我尝试在repo上创建一个"触发器"自由式构建,但是"构建后操作 - 构建其他项目"声称Multibranch Pipeline项目不是可构建的项目.
如果轮询是我能做到这一点的唯一方法,那么我需要禁用自动SCM触发(否则我们在重新索引时会得到重复的构建)因为我需要在分支项目上启用web钩子触发.
但这不起作用,因为我通过分支项目中的管道脚本设置Web挂钩,并且您需要至少构建一次以使该属性已注册.
我已经在圈子里走了一段时间,所以希望我错过了一些明显的东西,但任何帮助都会受到赞赏.
我想象能够做到以下之一
以某种方式触发多分支项目作为下游项目
轮询multibranch项目,只构建以前没有构建的分支项目
干杯
我有一个multibranch pipelineGitHub存储库的Jenkins工作()设置。我想在有任何更改推送到该Git存储库时自动触发该作业。如何使用Jenkinsfile?
我想避免在Jenkins作业中进行任何配置更改,例如Poll SCMetc。对于多分支管道,则没有这样的选项Build whenever a change is pushed to GitHub
continuous-integration github jenkins jenkins-pipeline multibranch-pipeline
我在詹金斯有一个多分支管道项目。当管道项目中列出分支时,我想禁用它。我可以添加一个异常来超过scm触发。但是我想禁用所有触发,包括手动触发。如果在为分支创建的作业中的“构建触发器”下使用了“禁用此项目”,则在重新加载页面时,不会选择该选项(没有保存/应用按钮可用于单个分支管道)。它仅保留在Jenkinsfile中配置的以下配置。
pipelineTriggers([
snapshotDependencies(),
]),
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在Jenkinsfile中指定“禁用此项目”
在 Jenkins 上,在 Jenkins 上使用“Github”设置多分支设置时,我收到奇怪的错误:
Error validating repository information. Credentials ok.
Run Code Online (Sandbox Code Playgroud)
但是,相同的凭据适用于“git”作为“添加源”类别,但如果添加为“添加源”,则不适用于“github”。这是 github 的实际凭证,我可以登录 github 门户,不确定这里发生了什么。任何指点。谢谢
我有一个多分支管道。我在 jenkinsFile 属性中配置了触发器:
pipelineTriggers([pollSCM('H/2 * * * *')])])
Run Code Online (Sandbox Code Playgroud)
多分支管道被配置为定期“扫描多分支管道触发器”。预期行为:仅在通过 jenkinsFile 配置的构建触发器上触发构建。
我们正在使用
詹金斯:2.107.1
git 插件:3.8.0
管道多分支:2.17
我们有一个大型的 monorepo,里面有多个项目(A 和 B)。我目前将 Jenkins 设置为一个 Multibranch Pipelines 项目,该项目监视 PR 的 monorepo。如果创建了 PR,Jenkins 会同时构建 A 和 B。
现在,我希望 Jenkins 更聪明,并且只在 PR 中的任何更改引入A/目录更改时才构建项目 A。事实证明这是非常困难的。
when { changeset "A/" }似乎只检查最后提交的修改的文件A/,而不是如果PR在修改的文件A/。
所以我使用https://issues.jenkins-ci.org/browse/JENKINS-54285让它变得更聪明,并做了:
when { expression { return sourceChanged("A/") } }
以sourceChanged定义为:
def boolean sourceChanged(String module) {
if (env.CHANGE_TARGET == null)
return true;
def MASTER = sh(returnStdout: true, script: "git rev-parse origin/${env.CHANGE_TARGET}").trim()
def HEAD = sh(returnStdout: true, script: "git …Run Code Online (Sandbox Code Playgroud) 我正在使用具有安静期的声明性 Jenkinsfile:
options {
quietPeriod(180)
// more options
}
Run Code Online (Sandbox Code Playgroud)
工具版本:
现在的问题是,在 GitHub SCM 更改上,独立管道项目尊重静默期,但多分支管道项目不尊重。它也不会返回任何错误,只是在接收到 webhook 时立即触发构建。
我知道关于此的未解决问题JENKINS-37588。
使用上游包装器作业build(job: 'my-job', quietPeriod: 180)是不可行的,因为我有数百个多分支项目。
有没有人能够找到解决方案或可行的替代方案?任何帮助将不胜感激。
wait jenkins jenkins-pipeline multibranch-pipeline jenkins-declarative-pipeline