标签: multibranch-pipeline

Jenkins 2 Multibranch Pipelines - 如何使用Role Strategy Plugin限制分支的可见性/执行?

我在具有两个分支的项目中使用multibranch管道:develop和master.这将创建两个子项目,每个分支一个:

App_Pipeline
     |---master
     |---develop
Run Code Online (Sandbox Code Playgroud)

我已经设置了角色策略插件来控制作业/管道的授权(可见性),具体取决于分配的角色.

项目角色:

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

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

关键是我希望一些用户(开发人员)能够查看和运行开发子项目以及其他一些(管理者)来查看和运行子项目,掌握和开发.

我还没有找到一种配置方法,任何想法如何实现?

更新:这是问题的整个背景.

我正在使用multibranch管道来扫描整个Bitbucket项目,这让我:

ORGANIZATION
   Repo1
     |---master
     |---develop
   Repo2
     |---master
     |---develop
   Poc-repo1
     |---master
     |---develop
   Poc-repo2
     |---master
     |---develop
Run Code Online (Sandbox Code Playgroud)

我需要支持这些案件:

  1. 一些用户只能使用Poc-前缀读取和构建项目.不应该看到任何其他项目.
  2. 其他用户可以阅读所有项目,但只能构建开发分支
  3. 最后,其他人可以阅读和构建所有项目

jenkins jenkins-plugins jenkins-pipeline jenkins-2 multibranch-pipeline

6
推荐指数
1
解决办法
441
查看次数

Jenkins 多分支流水线轻量级结账

Jenkins Pipeline 插件有一个称为“轻量级结账”的功能,其中 master 只从 repo 中提取 Jenkinsfile,而不是整个 repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级结帐,但在多分支配置屏幕中没有看到复选框。任何想法如何做到这一点?我注意到一些已解决的问题表明此功能可用,但我无法找到有关如何实现它的任何细节。

相关信息:

https://issues.jenkins-ci.org/browse/JENKINS-42518

https://issues.jenkins-ci.org/browse/JENKINS-33273

https://github.com/jenkinsci/bitbucket-branch-source-plugin/pull/78

jenkins jenkins-pipeline multibranch-pipeline

6
推荐指数
1
解决办法
1万
查看次数

Jenkins Multi-branch:如何为分支创建/删除添加功能?

多分支管道Jenkins屏幕片段

我正在设置一个Jenkins多分支实例,当https://wiki.jenkins.io/display/JENKINS/Pipeline+Multibranch+Plugin 插件(版本)检测到新分支时,需要在分支作业创建时分配资源。2.21),并在分支不再存在于Git中时由多分支流水线删除分支作业时重新分配它。

(确切地说,我们需要将构建的二进制文件运送到OpenShift部署中,该部署需要为每个分支显式设置和销毁)。

我查看了文档,但尚未找到可对其进行配置的位置。对我而言,未经训练的人认为,将其作为“ stages”节点之外的“ stage”是有意义的,但是对于所有构建而言都是相同的,因此也可以在Jenkinsfile之外使用。

我怎样才能做到这一点?

jenkins openshift multibranch-pipeline

6
推荐指数
1
解决办法
326
查看次数

为什么 Jenkins 多分支管道中的工作会被禁用

我们正在使用 Jenkins( v2.235.1) 和 BitBucket 云组合。我们有BitBucket Team/Project创建multi-branch管道的类型作业。即使 Git 存储库中的这些分支处于活动状态,与各个分支相对应的一些作业也会被禁用。不知道为什么会这样。

能否请您分享一些对此的见解以及我们如何防止这种情况发生。

以下是我的版本

  • 詹金斯 v2.235.1
  • Bitbucket 分支源插件 v2.9.7
  • Bitbucket 插件 v1.1.27

谢谢

bitbucket jenkins multibranch-pipeline

6
推荐指数
1
解决办法
100
查看次数

如何在Jenkinsfile if语句中使用jenkins环境变量

我试图在我的Jenkins文件中使用if语句进行多分支管道项目.为了这个问题,我假设我当前目录中有一个名为'scan.txt'的文本文件.使用bash命令生成文本文件

echo "False" > scan.txt
Run Code Online (Sandbox Code Playgroud)

所以唯一的内容是字符串"False"

我在我的Jenkinsfile中将一个任意环境变量设置为scan.txt的内容,如下所示:

script {
    env.TEXT = readFile 'scan.txt'
}
Run Code Online (Sandbox Code Playgroud)

如果我做

echo "${env.TEXT}" 
Run Code Online (Sandbox Code Playgroud)

在脚本块之外,jenkins控制台会按预期显示该步骤的False.

但是,我检查它是否等于"False"的所有尝试都失败了.我在脚本块后立即尝试了以下内容:

if (env.TEXT.equals("False")) {
    //do something
}

if (env.TEXT.matches("False")) {
    //do something
}


if (env.TEXT == "False") {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

并且它们都不起作用.所有这些条件都是布尔值false.读取文件管道步骤的文档声明它返回文件内容的字符串 https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-readfile-code-read-file-from-工作区 所以我不确定这里发生了什么.有没有人有任何见解?

谢谢

groovy jenkins jenkins-pipeline multibranch-pipeline

5
推荐指数
1
解决办法
2万
查看次数

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

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

my-project
  frontend
    Jenkinsfile
  backend
    Jenkinsfile
Run Code Online (Sandbox Code Playgroud)

我想使用蓝海和多分支管道,但有没有办法使用两个Jenkinsfile和两个管道?Afaik,Jenkinsfile 需要位于存储库的根目录。

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

jenkins jenkins-pipeline multibranch-pipeline jenkins-blueocean

5
推荐指数
1
解决办法
4129
查看次数

如何获取Jenkins Multibranch管道作业的displayName

我把所有的Jenkins逻辑放在一个结构化的管道脚本(又名Jenkinsfile)中.

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

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

或者是否有更好的方法来获得用户友好的名称,然后遍历rawBuild?

jenkins jenkins-pipeline multibranch-pipeline

5
推荐指数
1
解决办法
2776
查看次数

从另一个多分支管道触发多分支管道作业

我有一个场景,但是我有2个项目(A和B),它们都在Jenkins中配置,并且具有多分支管道作业,问题是项目B取决于项目A。

因此,我发现有时候在项目A中签入代码时,一旦构建了A,就还需要构建ProjectB。现在,在开始调查管道构建之前,我每个分支都有一份工作,然后在Jenkins中为适当的分支为Project B触发适当的工作。

我想在Jenkinsfile中进行设置,以便在执行ProjectA / develop时触发针对ProjectB和同一分支的多分支管道作业。

我有:

stage ('Trigger Tenant Builds') {
        build job: "ProjectB/${branch}", wait: false
    }
Run Code Online (Sandbox Code Playgroud)

但是我的ProjectA管道失败了:

ERROR: No parameterized job named ProjectB/develop found
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

continuous-integration jenkins jenkins-plugins jenkins-pipeline multibranch-pipeline

5
推荐指数
1
解决办法
2105
查看次数

在多分支管道中授予复制artIfact权限

我有以下设置:

通过进行配置的Jenkins多分支管道作业Jenkinsfile。成功签出和构建后,将对工件进行存档,并触发下游作业以部署生成的工件。

为了使第二份作业能够通过该[$class: 'CopyArtifact'...步骤进行复制,需要复制权限。

所以问题是,如何通过Jenkinsfile上游作业的授予这些权限?

jenkins jenkins-pipeline multibranch-pipeline

5
推荐指数
2
解决办法
534
查看次数

每个分支具有不同触发器的 Jenkins 声明式管道

我希望在声明性管道 jenkins 作业中为每个分支实现不同的 cron 触发器。目前,我只在我们的 dev 分支上触发每小时构建:

String cron_string = BRANCH_NAME == "dev" ? "@hourly" : ""

pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}
Run Code Online (Sandbox Code Playgroud)

我的目标是拥有两个单独的 cron 字符串,它们将在不同的时间在不同的分支中触发构建(例如:在 dev 中每小时构建一次,在 master 中每三个小时构建一次),但是执行将是相同的。我的问题是,我可以做类似下面的代码块的事情还是应该采取不同的方法?

String cron_string_1 = BRANCH_NAME == "dev"     ? "0 8/20 ? * MON-FRY" : ""
String cron_string_2 = BRANCH_NAME == "master"  ? "0 8/20/3 ? * MON-FRY" : ""


pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}
Run Code Online (Sandbox Code Playgroud)

crontrigger jenkins jenkins-pipeline multibranch-pipeline

5
推荐指数
1
解决办法
854
查看次数