标签: multibranch-pipeline

如何只在Jenkins多分支管道作业中构建一个目录?

我有一个名为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中我配置了附加行为:

  • 高级克隆行为:检查浅克隆
  • 稀疏结帐路径设置为Project1#
  • 轮询忽略某些路径中的提交
    • 包含的地区: Project1/*
    • 被排除的地区:*
  • 构建配置:脚本路径:Project1/Jenkinsfile

正在发生的事情是,如果我把一个犯子目录掌握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

10
推荐指数
2
解决办法
4860
查看次数

GitHub要求Jenkins对forks和本地分支进行状态检查

我有一个在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的来源如何?

github jenkins multibranch-pipeline

9
推荐指数
1
解决办法
3406
查看次数

Jenkins JobDSL multibranchPipelineJob更改脚本路径

我正在尝试在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

9
推荐指数
3
解决办法
4394
查看次数

在多分支管道上触发分支索引(Jenkins/Git)

我正试图在Jenkins的Multibranch Pipelines作业中自动触发'Branch Indexing'.

目前,只有一种方法似乎实际工作,即轮询,但我无法做到这一点,无论如何轮询是一个糟糕的解决方案.

该插件不支持"远程触发器构建(例如,从脚本)"(选项未保存),因此我无法通过推送等Web挂钩触发它.

我尝试在repo上创建一个"触发器"自由式构建,但是"构建后操作 - 构建其他项目"声称Multibranch Pipeline项目不是可构建的项目.

如果轮询是我能做到这一点的唯一方法,那么我需要禁用自动SCM触发(否则我们在重新索引时会得到重复的构建)因为我需要在分支项目上启用web钩子触发.

但这不起作用,因为我通过分支项目中的管道脚本设置Web挂钩,并且您需要至少构建一次以使该属性已注册.

我已经在圈子里走了一段时间,所以希望我错过了一些明显的东西,但任何帮助都会受到赞赏.

我想象能够做到以下之一

  • 以某种方式触发多分支项目作为下游项目

  • 轮询multibranch项目,只构建以前没有构建的分支项目

干杯

jenkins jenkins-pipeline multibranch-pipeline

8
推荐指数
1
解决办法
3689
查看次数

将代码更改推送到GitHub时如何触发Jenkins多分支管道

我有一个multibranch pipelineGitHub存储库的Jenkins工作()设置。我想在有任何更改推送到该Git存储库时自动触发该作业。如何使用Jenkinsfile

我想避免在Jenkins作业中进行任何配置更改,例如Poll SCMetc。对于多分支管道,则没有这样的选项Build whenever a change is pushed to GitHub

continuous-integration github jenkins jenkins-pipeline multibranch-pipeline

8
推荐指数
1
解决办法
5415
查看次数

如何使用Jenkinsfile在Multibranch管道中禁用分支

我在詹金斯有一个多分支管道项目。当管道项目中列出分支时,我想禁用它。我可以添加一个异常来超过scm触发。但是我想禁用所有触发,包括手动触发。如果在为分支创建的作业中的“构建触发器”下使用了“禁用此项目”,则在重新加载页面时,不会选择该选项(没有保存/应用按钮可用于单个分支管道)。它仅保留在Jenkinsfile中配置的以下配置。

pipelineTriggers([
    snapshotDependencies(),
]),
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在Jenkinsfile中指定“禁用此项目”

jenkins jenkins-pipeline multibranch-pipeline

8
推荐指数
1
解决办法
5505
查看次数

Jenkins-Github/Git - “验证存储库信息时出错。凭据正常。”

在 Jenkins 上,在 Jenkins 上使用“Github”设置多分支设置时,我收到奇怪的错误:

Error validating repository information. Credentials ok.
Run Code Online (Sandbox Code Playgroud)

但是,相同的凭据适用于“git”作为“添加源”类别,但如果添加为“添加源”,则不适用于“github”。这是 github 的实际凭证,我可以登录 github 门户,不确定这里发生了什么。任何指点。谢谢

git pipeline github jenkins multibranch-pipeline

8
推荐指数
1
解决办法
4531
查看次数

jenkins 多分支管道中的分支索引会触发额外的构建,该构建已由 poll SCM 构建

我有一个多分支管道。我在 jenkinsFile 属性中配置了触发器:

pipelineTriggers([pollSCM('H/2 * * * *')])])
Run Code Online (Sandbox Code Playgroud)

多分支管道被配置为定期“扫描多分支管道触发器”。预期行为:仅在通过 jenkinsFile 配置的构建触发器上触发构建。

我们正在使用

詹金斯:2.107.1

git 插件:3.8.0

管道多分支:2.17

triggers jenkins jenkins-pipeline multibranch-pipeline

7
推荐指数
1
解决办法
2547
查看次数

Jenkins + Git:仅当 PR 在子目录中引入更改时才构建

我们有一个大型的 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)

git jenkins jenkins-pipeline multibranch-pipeline

7
推荐指数
1
解决办法
1844
查看次数

Jenkins 多分支管道不尊重 Jenkinsfile 中的静默期

我正在使用具有安静期的声明性 Jenkinsfile:

  options {
    quietPeriod(180)
    // more options
  }
Run Code Online (Sandbox Code Playgroud)

工具版本:

  • 詹金斯 - 2.190.3
  • 管道多分支插件 - 2.21
  • 管道声明性插件 - 1.4.0

现在的问题是,在 GitHub SCM 更改上,独立管道项目尊重静默期,但多分支管道项目不尊重。它也不会返回任何错误,只是在接收到 webhook 时立即触发构建。

我知道关于此的未解决问题JENKINS-37588

使用上游包装器作业build(job: 'my-job', quietPeriod: 180)是不可行的,因为我有数百个多分支项目。

有没有人能够找到解决方案或可行的替代方案?任何帮助将不胜感激。

wait jenkins jenkins-pipeline multibranch-pipeline jenkins-declarative-pipeline

7
推荐指数
1
解决办法
2030
查看次数