jenkinsfile 管道按代理分组阶段

2024-03-23

我有什么

我正在尝试使用两种不同的代理来运行我的詹金斯管道。我想在同一个代理上执行某些流程,但到目前为止我无法执行此操作,因为代理定义只有 2 个选项:我可以在管道顶部执行,或者我可以将代理定义到每个阶段。我有这个:

pipeline{
    agent none
    stages {
        stage("Unit Testing"){
            agent { label 'maven-build-slave' }
            steps{
            }
        }
        stage('Sonar Scanner - Quality Gates') {
            agent { label 'maven-build-slave' }
            steps{
            }
        }
        stage("Integration"){
            agent { label 'integration-slave' }
            steps{
            }
        }
        stage('SoapUI') {
            agent { label 'integration-slave' }
            steps{
            }
        }
    }
}

在这种情况下,主要问题是即使代理相同,代码也会在每个阶段被拉取。

我想要什么

我想要这样的东西:

pipeline{
    agent none
    stages {
        agent { label 'maven-build-slave' }
        stage("Unit Testing"){
            steps{
            }
        }
        stage('Sonar Scanner - Quality Gates') {
            steps{
            }
        }

        agent { label 'integration-slave' }
        stage("Integration"){
            steps{
            }
        }
        stage('SoapUI') {
            steps{
            }
        }
    }
}

但上面的定义失败了,所以我想知道是否有人知道使用同一代理运行多个阶段的方法。


查看新内容(2018 年 7 月)声明式管道 1.3 中的连续阶段 https://jenkins.io/blog/2018/07/02/whats-new-declarative-piepline-13x-sequential-stages/:

使用相同的代理、环境或选项运行多个阶段

虽然顺序阶段功能最初是由希望在并行分支中拥有多个阶段的用户驱动的,但我们发现能够将多个阶段与相同的代理、环境、时间等分组在一起还有很多其他用途。

例如,如果您在管道中使用多个代理,但希望确保使用相同代理的阶段使用相同的工作区,则可以使用带有代理指令的父阶段,然后使用其内的所有阶段stage 指令将在同一个工作区中的同一个执行器上运行。

pipeline {
    agent none

    stages {
        stage("build and test the project") {
            agent {
                docker "our-build-tools-image"
            }
            stages {
               stage("build") {
                   steps {
                       sh "./build.sh"
                   }
               }
               stage("test") {
                   steps {
                       sh "./test.sh"
                   }
               }
            }
            post {
                success {
                    stash name: "artifacts", includes: "artifacts/**/*"
                }
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jenkinsfile 管道按代理分组阶段 的相关文章

随机推荐

  • Solrcloud 多核配置

    我有一个独立的Solr具有 4 个不同内核的实例使用嵌入式 Jetty 服务器运行良好 我为 v4 10 3 配置了核心 但自从我迁移到 v5 1 后 一切似乎都工作正常 无需任何更改 在投入生产之前 我需要将其设置为Solrcloud 安
  • 使用 C++ Boost 库有哪些优点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 滚动视图内的 ExpandableListView

    在我的应用程序中 我想创建一个具有 ExpandableListView 和其下方的 CheckBox 的页面 我的问题是我的 ExpandableListView 太大 导致 CheckBox 超出页面范围 在较小的屏幕上根本不可见 我尝
  • 如何使用命令提示符或 Power shell 为多个文件夹中的多个文件创建符号链接?

    我有两个主文件夹 它们在不同的驱动器中有很多子文件夹 必须为第二个文件夹中的所有文件创建到第一个文件夹的符号链接 C folderC gt tree f C folder1 file1 txt file3 txt folder2 file1
  • Angular 7选择下拉对象在未触摸时为空

    在我的应用程序中 ngOnInit 加载货币 类别和制造商 我为此使用 Angular 7 反应形式 数据按预期加载 下拉列表中填充了值以及选择的第一个选项并向用户显示 所以 这就是问题所在 完成表单并单击提交 使用默认下拉值 后 我看到一
  • 重定向到另一台服务器 - ASP MVC

    有人知道如何使用 ASP NET MVC 重定向到另一个服务器 解决方案吗 像这样的东西 public void Redir String param Redirect to another application ie Redirect
  • DELETE 语句与 REFERENCE 冲突

    我有一个 table Project 其中包含 CustomerID 链接到 tbl Customer 在 tbl Customer 中 我有 Customer ID 作为键 和一些其他信息 如电话 电子邮件等 要从 Gridview 中删
  • 将数据从background.js发送到popup.html

    In my background js 当加载期间 URL 匹配时 它会加载 ajax 例如 它是 google com 它会触发 ajax 并收到一些数据 但如何将这些数据发送到我的 popup html 呢 I tried chrome
  • 检查文件修改日期和电子邮件(如果已更改)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找一个 bash 脚本 该脚本将检查文件在过去一小时内是否已被修改 并通过电子邮件发送警报 如果已修改 该脚本将在 Solaris 和 Ubu
  • 为什么使用 ssh 将备份文件转储到另一台服务器时会出现“tcgetattr”错误?

    我想将表备份转储到另一台服务器上 并且我正在使用 ssh 来执行此操作 当我运行以下命令时 它会给出错误 但转储文件已复制到目标 mysqldump u username ppassword dbname tablename ssh t t
  • g++ 找不到标头,但我确实包含了它们

    我开始使用 c 并且已经出错了 我正在尝试编译 levelDB 的一个小测试 include
  • Set.toString() 是如何实现的?

    The toString 方法未被覆盖Set或其层次结构 那么元素是如何打印的呢 import java lang Math import java util HashSet class Hello public String name H
  • 通过wicket动态编写脚本src

    我希望我的页面能够动态加载 javascriptbody 我正在使用检票口1 4版所以JavaScriptResourceReference 在我的版本中不存在 据我检查 事实并非如此 我该如何解决这个问题 提前致谢 我将我的评论指定为答案
  • 如何在 TypeScript 中处理 ISO 日期字符串?

    我是打字稿的新手 所以我正在努力掌握它的窍门 网络请求将返回一个 JSON 对象 其中包含 ISO 日期字符串格式的字段 data Data when 2016 07 13T18 46 01 933Z 当我为此接口创建类型签名时 是否有任何
  • Clozure Common Lisp - TCP 套接字编程 - 发送回复

    我有一个非常小的程序 它打开一个套接字并接受一个连接 然后它会获取远程 IP 和端口 我想向远程计算机 telnet 发送一条短信并关闭连接 我无法确定哪个函数用于向 telnet 客户端发送消息 The Clozure手册 http cc
  • Matplotlib AttributeError:“模块”对象没有属性“popall”

    当尝试使用 pyplot 绘制图表时 我运行以下代码 from matplotlib import pyplot as plt x 6 5 4 y 3 4 5 plt plot x y plt show 这将返回以下错误 Attribute
  • 谷歌新闻,左导航 CSS 技巧?或 jQuery 技巧

    我对此很陌生 查看 Google 新闻 上下滚动页面时请注意左侧导航 看看是如何滚动一小段 然后在消失之前粘在页面顶部的吗 关于如何做到这一点有什么想法吗 jQuery 和 CSS 可以复制这一点吗 如果是这样 有什么建议吗 YouTube
  • 未找到 NetBeans 10 JUnit Jar

    我新安装了 NetBeans 10 尝试运行我刚刚创建的一些初始单元测试时 出现以下错误 The
  • Ellipsize 不适用于自定义 listView 内的 textView

    我有一个 listView 其中包含由下面的 xml 布局定义的自定义对象 我希望 id 为 info 的 textView 在一行上省略 并且我尝试使用属性 android singleLine true android ellipsiz
  • jenkinsfile 管道按代理分组阶段

    我有什么 我正在尝试使用两种不同的代理来运行我的詹金斯管道 我想在同一个代理上执行某些流程 但到目前为止我无法执行此操作 因为代理定义只有 2 个选项 我可以在管道顶部执行 或者我可以将代理定义到每个阶段 我有这个 pipeline age