是否可以在循环中创建并行的 Jenkins 声明式管道阶段?

2023-12-06

我的项目中的不同子项目有一个长期运行的 Gradle 任务列表。我想使用 Jenkins 声明式管道并行运行它们。

我希望这样的事情可能会起作用:

projects = [":a", ":b", ":c"]

pipeline {
    stage("Deploy"){
        parallel {
             for(project in projects){
               stage(project ) {
                   when {
                       expression {
                            someConditionalFunction(project)
                       }
                   }
                   steps {
                       sh "./gradlew ${project}:someLongrunningGradleTask"
                  }
                }   
             }
        }
    }
}

不用说,这会产生编译错误,因为它期望的是 stage 而不是 for。关于如何克服这个问题有什么想法吗?谢谢


我试图使用声明性管道语法减少现有 Jenkinsfile 中的重复代码。最后,我能够理解脚本语法和声明性语法之间的区别。

通过使用 script {} 块包装,可以在声明性管道中使用脚本化管道语法。

查看下面的示例:您将看到从 sleep 命令唤醒后,所有三个并行阶段同时完成。

def jobs = ["JobA", "JobB", "JobC"]

def parallelStagesMap = jobs.collectEntries {
    ["${it}" : generateStage(it)]
}

def generateStage(job) {
    return {
        stage("stage: ${job}") {
                echo "This is ${job}."
                sh script: "sleep 15"
        }
    }
}

pipeline {
    agent any

    stages {
        stage('non-parallel stage') {
            steps {
                echo 'This stage will be executed first.'
            }
        }

        stage('parallel stage') {
            steps {
                script {
                    parallel parallelStagesMap
                }
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在循环中创建并行的 Jenkins 声明式管道阶段? 的相关文章

  • 如何删除詹金斯中的旧版本? [复制]

    这个问题在这里已经有答案了 我从 Jenkins 的构建目录中删除了旧的构建文件夹 希望它们在 UI 中删除 不幸的是 虽然这些构建目录消失了 但它们的 UI 链接仍然存在 我现在有两个问题 如何删除用户界面中失效的链接 如何从 cli 中
  • 如何在 Jenkins 构建之前自动合并 Git 分支?

    如何在 Jenkins 构建之前自动合并 Git 分支 我有 2 个版本 一个用于分支master和一个用于生产 我想做 Git 合并origin master当我进行生产构建时 Jenkins 上最新的 Git 插件支持这一点 刚刚设置C
  • Jenkins 工作流程检查作业是否正在运行或已计划

    是否可以检查某些作业是否正在运行或从某些工作流程脚本中安排 尽管使用阶段管理并发似乎就足够了 stage name stageName concurrency 1 并在这些阶段运行构建 如下所示 build job test job wai
  • 执行Jenkinsfile时如何获取管道配置字段“脚本路径”?

    如何从 Jenkinsfile groovy 获取 Jenkins 中管道配置字段 脚本路径 的内容 在此示例中 我想在执行 Jenkinsfile 本身时获取字符串 Apps mq logger Jenkinsfile 您可以通过这种方式
  • 如何仅根据拉取请求在 Jenkins 中运行阶段?

    我现在有一个基于 Jenkinsfile 的管道 其中包含多个阶段 每次提交到 Github 时都会由 webhook 触发 我想在每次提交时保持 构建 和 单元测试 阶段运行 但仅在分支准备拉取请求时运行 集成测试 阶段 我想要的是 st
  • 设备的临时协同设计在 Studio 中成功,但在 Jenkins 中失败

    我有一个支持 Android 和 iOS 的 Xamarin Forms 应用程序 我已经生成了 Jenkins 版本来编译它们 所有 Android 构建都可以工作 iOS 调试版本编译良好 然而 Ad Hoc 构建无法完全针对 iPho
  • 如何在jenkins中使用文件参数

    我正在詹金斯中执行参数化构建来计数 有 1 个文件参数的文件中的行数 它的文件位置是pqr 脚本文件的名称是linecount sh保存在远程服务器上 当我尝试使用命令执行它时sh linecount sh文件名 它在詹金斯中完美运行 但是
  • 获取之前的构建结果

    我想模仿 Jenkins 的原始行为 即当构建变得不稳定 失败或再次成功时执行操作 例如发送通知 为此 我需要查询以前的构建状态 可以这样完成 currentBuild rawBuild getPreviousBuild getResult
  • 如何通过 JSON / JS 在 Jenkins 中添加 CSRF 面包屑

    我想在 Jenkins 中通过 API 创建作业 但无法连接 Jenkins 中的 CSRF 保护课程 我得到了一个面包屑 但不知道如何将其附加到 JSON 或 JavaScript 中的 url 请求 以通过 POST 方法获取数据传递
  • 在全球范围内压制 StyleCop 警告

    如何在解决方案中全局抑制 StyleCop 警告 该解决方案是使用 Jenkins 持续构建和集成工具 持续构建的 并且应用了所有 StyleCop 规则 该解决方案使用 TAB 字符而不是 4 个空格 因为这是我的开发团队采用的标准 因此
  • 如何在多分支管道中为特定分支设置下一个版本号

    我正在尝试以编程方式为我们的发布分支设置下一个版本号 但我遇到了一个问题 以下是我尝试过的两种方法 def job Jenkins instance getItem master job nextBuildNumber env BUILD
  • 在构建服务器上运行单元测试时出现 BadImageFormatException

    我在一个具有 AnyCPU 架构的项目中进行了一套 NUnit 测试 其中一些测试使用 x86 32 位 程序集中的类型 当我在本地运行测试 通过 ReSharper 时 它们都通过了 然而 当它们在 Jenkins 上执行时使用nunit
  • Jenkins sudo:不存在 tty,并且没有使用 NOPASSWD 指定的 Askpass 程序 [重复]

    这个问题在这里已经有答案了 我花了几天时间来设置文件 etc sudoers能够向用户授予 root 权限jenkins 我在我的服务器上安装了 Jenkins 因为我使用 symfony ionic neo4j 等托管多个项目 问题是我无
  • Jenkins + Gerrit 触发器未自动构建

    Jenkins 似乎不会自动引入需要 Gerrit 审核的更改 我们正在使用 Gerrit 触发器 另外 如果我尝试手动触发一些 似乎什么也没有发生 Gerrit Trigger管理区域中的 控制 似乎没有多大 闪烁 启动 停止 或 重新启
  • Jenkins 可扩展选择,具有基于用户角色的用户特定项目

    我遇到一种情况 我想更改 Jenkins 参数化构建中选择参数的内容 就我而言 我想要一个用于部署应用程序 部署我的应用程序 的项目 当构建这个项目时 用户会看到一个选择参数 我想根据用户角色更改此列表的内容 即具有 dev deploy
  • 有没有办法将 Hudson / Jenkins 配置文件保留在源代码管理中?

    我是 Hudson Jenkins 的新手 想知道是否有办法将 Hudson 的配置文件签入源代码管理 理想情况下 我希望能够单击 UI 中显示 保存配置 的某个按钮 并将 Hudson 配置文件签入源代码管理 最有帮助的答案 有一个插件叫
  • 詹金斯钩子不工作 - 詹金斯位桶

    您好 我正在使用 jenkins 和 bitbucket 当我向 bitbucket 存储库提交任何内容时 我想触发 jenkins 中的构建 在詹金斯 我创建了一个名为test 1 在配置部分Build Triggers我勾选的部分Tri
  • Jenkins 管道构建如何确定工作区文件夹?

    在 Jenkins 管道中 当在特定节点上运行构建时 会在该代理上分配工作空间 我们没有设置工作空间路径 因此它是自动确定的 据我了解 当同一作业在同一代理上同时运行时 工作区必须包含执行程序编号以隔离构建 但是 工作空间路径到底是如何构建
  • Jenkins 通过 ssh 发布显示错误“jenkins.plugins.publish_over.BapPublisherException:无法添加 SSH 密钥。”

    为了使用 ssh 连接 jenkins 与远程服务器 我在 jenkins 中安装了通过 SSH 发布的插件 但配置后 它显示错误为 jenkins plugins publish over BapPublisherException 无法
  • Jenkins 管道作业无法在 UI 中完成

    目前的问题是詹金斯管道作业确实运行并正常完成 但在 UI 中 该工作会一直保留 直到我们通过 UI 中止他 这种情况并不常见 大概只占 5 的工作岗位 这可能是詹金斯错误 重新加载配置问题或只是节点上的流量太大 我真的不确定 由于所有 有问

随机推荐

  • ORA-04091: 表 xx_xx 正在发生变化,触发器/函数可能看不到它

    因此 我必须创建一个触发器 将对名为 passengerlist1 的表所做的更改记录到名为 logs 的额外表中 日志表 create table logs p name varchar 255 p surname varchar 255
  • 如何计算 CoreData 对象的唯一日期?

    我需要一种正确的方法来计算具有 NSDate 类型属性的 CoreData 对象中有多少个唯一的天数 例如 我有以下内容 date 2014 05 15 21 29 12 0000 date 2014 05 15 21 49 34 0000
  • Global.asax 找不到代码隐藏类

    当我尝试运行我继承的 Web 应用程序时 我不断收到此错误 它是在 2010 年为 C 3 5 编写的 并使用 Mvc 2 我已经安装了必要的库 但出现了此错误 错误1 无法加载类型 AdminConsole MvcApplication
  • 如何在C#中提取rar文件?

    我想使用 cmd shell 提取 rar 文件 所以我编写了以下代码 string commandLine c progra 1 winrar winrar e c download TestedU rar c download Proc
  • xpath 不包含 A 和 B

    我怎样才能添加not contains facebook not contains twitter 到我的xpath sites selector xpath h3 class r a href not contains google hr
  • 我可以在哪里获取我的通用应用程序的客户端密钥?

    I m following this guide http msdn microsoft com library windows apps hh465407 to implement push notifications on my app
  • 有没有办法让 Go 的通道表现得像堆栈

    据我所知 默认情况下 Go 通道的行为类似于队列 先进先出 有什么办法可以将它们更改为后进先出吗 基本上 我正在进行搜索 并希望出于内存限制而使用 DFS 而不是 BFS 不 这是不可能的 通道始终是 FIFO 你可以使用包containe
  • 如何增加 OpenGL 缓冲区?

    是否可以在 OpenGL 中增加缓冲区 假设我想使用实例渲染 每次在世界上产生一个新对象时 我都必须使用实例化数据更新缓冲区 在本例中 我有 3 个浮点数的缓冲区 std vector
  • 如何通过镜头让玩家被摧毁?

    我在通过摄像机让玩家被摧毁时遇到了一些麻烦 在我的应用程序中 我让相机跟随玩家 球 但摄像机只能跟随球向上 所以我想要完成的是 当玩家 球 到达界面 屏幕 的底部时 它就会被摧毁 当它被摧毁后 如果弹出一个新的活动 新屏幕 那就太好了 那就
  • Sql server 2008 - 插入大量数据的性能调整功能

    我必须将大量数据插入表中 sqlserver 2008 与 2005 相比 是否有任何新功能可以提高这种情况下的性能 SQL Server 2008 包含MERGETSQL 语句可以加速某些类型的组合 INSERT UPDATE 和 DEL
  • Android 拆分操作栏,操作项位于顶部和底部?

    有没有办法将某些操作项指定到拆分操作栏的顶部 而其他操作项指定到底部 或者是全有或全无 即所有操作项仅进入拆分的底部 目前这是不可能的 请参阅 Android 开发者 Reto Meier 和 Roman Nurik 在 Android 开
  • 类方法和实例方法的区别?

    当我在编程中使用实例方法和类方法时 我总是感到困惑 请告诉我实例方法和类方法之间的区别以及彼此的优点 所有其他答案似乎都被错误的标签所捕获 现已修复 在 Objective C 中 实例方法是当消息发送到类的实例时调用的方法 因此 例如 i
  • 使用 Flexbox 包裹元素

    我刚刚完成了弹性盒课程并且正在练习 所以如果答案涉及弹性盒概念 我将不胜感激 我有 2 个文章元素 我希望第二篇文章始终位于该位置 第一篇文章的文本可以放在它下面 但是 目前每篇文章的大小都受到尊重 我该如何解决这个问题 这是我当前的 HT
  • 是否可以使用 SQL 中的“Where”子句仅显示仅包含字母和数字的字段?

    我希望能够仅选择某个字段同时包含字母和数字的字段 例如 Select field1 field2 from db1 table1 where field2 LETTERS AND NUMBERS 我使用的是 SQL Server 2005
  • 从 iCloud 备份中排除文件

    我使用的是 iOS 5 1 我使用这种和平的代码 pathURL setResourceValue NSNumber numberWithBool YES forKey NSURLIsExcludedFromBackupKey error
  • 在 Codeblocks 中设置 GLUT 项目 (Ubuntu 12.04)

    我通过 apt get 安装了 freeglut3 和 freeglut3 dev 我想在 Codeblocks 中创建一个 OPENGL GLUT 项目 有人问我 GLUT 的位置 我输入了 usr 正如我在教程中找到的那样 但我收到错误
  • 使用活动记录进行计数/分组?

    我有一张包含以下信息的表 id user id points 1 12 48 2 15 36 3 18 22 4 12 28 5 15 59 6 12 31 etc 我想要的是每个 user id 包含最多条目的前 10 个 数组 顺序从高
  • 列表视图选择如何改变事件的工作方式。它叫了两次

    我有列表视图控件 在更改选择时 我会检查 如果所选记录计数大于零 则仅启用组框控件 否则将其禁用 因为 这些控件仅与选定的记录相关 如果没有选择记录 则不应启用它 以下是我的列表视图的选定更改事件 Private Sub lv Select
  • Play 2.5 对某些请求禁用csrf保护

    我正在使用 play Framework v 2 5 3 编写我的应用程序 并使用官方文档中所述的 CSRF 保护 public class Filters implements HttpFilters Inject CSRFFilter
  • 是否可以在循环中创建并行的 Jenkins 声明式管道阶段?

    我的项目中的不同子项目有一个长期运行的 Gradle 任务列表 我想使用 Jenkins 声明式管道并行运行它们 我希望这样的事情可能会起作用 projects a b c pipeline stage Deploy parallel fo