如何运行除 docker 容器中的步骤之外的所有 jenkins 管道步骤

2023-11-23

我正在尝试设置一个 jenkins 多分支管道来在 docker 容器中运行所有代码验证步骤,然后构建 docker 映像并将其推送到所述 docker 容器之外。

目前,我的 Jenkinsfile 看起来有点像这样(为了可读性而缩小):

pipeline {
    agent {
        label 'AWS'
    }
    stages {
        stage('stuff in docker') {
            agent {
                dockerfile {
                    filename 'Dockerfile.jenkins'
                    reuseNode true
                }
            }
            steps {
                stuff
            }
        }
        stage('more stuff in docker') {
            agent {
                dockerfile {
                    filename 'Dockerfile.jenkins'
                    reuseNode true
                }
            }
            steps {
                stuff
            }
        }
        stage('stuff not in docker') {
            steps {
                stuff
            }
        }
        stage('more stuff not in docker') {
            steps {
                stuff
            }
        }
    }
    post {
        always {
            cleanWs()
        }
    }
}

这里的问题是,我使用 dockerfile 代理的每个阶段,jenkins 都会尝试重建 docker 映像。这些阶段都被缓存了,但是发送构建上下文和实际处理所有内容仍然比我想要的要花费更多的时间。如果我使用 dockerfile 作为根代理,我可以在同一个 docker 容器内运行所有内容,但我失去了执行 git 操作和构建 docker 映像的能力(至少无法连接到外部 docker 进程 sock,这看起来像比必要的麻烦更多)。

我想知道是否有什么方法可以使用samedocker 镜像执行多个步骤,然后从该 docker 镜像中拉出执行其他一些步骤。


弄清楚了!

pipeline {
    agent {
        label 'AWS'
    }
    stages {
        stage('do everything in docker') {
            agent {
                dockerfile {
                    filename 'Dockerfile.jenkins'
                    reuseNode true
                }
            }
            stages {
                stage('stuff in docker') {
                    steps {
                        stuff
                    }
                stage('more stuff in docker') {
                    steps {
                         stuff
                    }
                }
            }
        }
        stage('stuff not in docker') {
            steps {
                stuff
            }
        }
        stage('more stuff not in docker') {
            steps {
                stuff
            }
        }
    }
    post {
        always {
            cleanWs()
        }
    }
}

tl;博士你可以嵌套阶段

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

如何运行除 docker 容器中的步骤之外的所有 jenkins 管道步骤 的相关文章

随机推荐

  • 迅速。结合。有没有办法在重试时多次调用发布者块?

    当发生某些错误时 我想使用 Swift Combine 中的 retry 多次发出网络请求 发布者内部的块仅被调用一次 这意味着当错误发生时 对真实应用程序仅发出一个请求 我的代码是 import UIKit import Combine
  • 如何将 crdate 和 cruuser_id 等标准字段与 TYPO3 和 extbase 一起使用?

    我有领域模型篮子和文章 如果我调用以下命令 我会收到购物篮中的文章 articlesInBasket basket gt getArticles 如何使用 TYPO3 标准属性 如 crdate 和 cruuser id 使用这样的东西会很
  • 将 @Autowired 与 AspectJ 和 Spring Boot 一起使用

    我想在 方面 中使用 Autowired 注释 我想在我的方面注入一个存储库 但是当我尝试调用自动装配类的方法时 会发生 NullPointException Aspect public class AspectSecurity Autow
  • 如何从MKmapview的可见区域获取半径?

    我能够获得地图视图的可见矩形 并且地图视图的中心点和跨度增量也可以从 mkmaap 视图方法获得 可见的是 mapView visibleMapRect用来 获取中心点 map view centerCoordinate使用并获得跨度 ma
  • 编写 std::copysign 的可移植 SSE/AVX 版本

    我目前正在使用 SSE 和 AVX 内在函数编写 QR 分解 线性系统求解器 的矢量化版本 其中一个子步骤需要选择与另一个值相反 等于的值的符号 在串行版本中 我为此使用了 std copysign 现在我想为 SSE AVX 寄存器创建一
  • data.table 按组外连接

    我正在尝试使用 data table 来填充我拥有的大型不平衡多维面板中缺失的观察结果 以下是数据示例 其中包含一些关于我想要的内容的评论 mydat lt structure list fund c 1 1 1 1 2 2 2 3 3 h
  • jquery.post 和 jquery.get 之间的区别?

    这两个 AJAX 调用有什么区别 为什么在使用 asp net mvc 框架时我会选择使用其中一个 一种使用 POST 一种使用 GET 就它们的用途而言 唯一真正的技术差异 如果我错了 请更正这篇文章 是 GET 对查询字符串的限制要短得
  • 找到覆盖整组区间的最少点数? [复制]

    这个问题在这里已经有答案了 给定一组区间 x y where 0 lt x y lt 2000如何找到可以覆盖所有间隔的最小点数 即每个间隔应包含结果点集中至少一个点 example Given Set of intervals 2 5 3
  • DESC 和 ASC 作为存储过程中的参数

    我有以下 SP 用于对新闻文章列表进行分页 正如你可能猜到的那样 count是要返回的行数 start是从中选择行的索引 按内部查询排序 orderby指示排序依据的列 并且 orderdir指示是否对一个方向或另一个方向进行排序 我原来的
  • 每个单元测试应该测试多少?

    我的每个单元测试应该检查多少内容 例如我有这个测试 TestMethod public void IndexReturnsAView IActivityRepository repository GetPopulatedRepository
  • 在 Pandas 中创建类似 Excel 的 SUMIFS

    我最近了解到pandas并很高兴看到它的分析功能 我正在尝试将 Excel 数组函数转换为 Pandas 相当于我为创建绩效归因报告而创建的自动化电子表格 在此示例中 我根据其他列中的条件在 Excel 中创建了一个新列 SUMIFS F
  • JavaScript:设置边框半径

    如何使用纯 JavaScript 无 jQuery 无插件等 设置 moz border radius document getElementById id Try document getElementById id style bord
  • 如何使 ItemsControl 拉伸以填充所有可用空间?

    我有一个 ItemsControl 其 ItemsSource 绑定到一个项目列表 每个项目的大小尽可能小 我需要的是控件和控件中的项目拉伸以适应所有可用空间 我尝试将控件及其项目上的 VerticalAlignment 设置为 Stret
  • 为什么 HashMap::get_mut() 取得其余作用域的映射所有权?

    我有以下代码 将一些值插入到 HashMap 中 然后将它们取出 use std collections HashMap fn things let mut map HashMap new map insert 5 thing map in
  • 如何在 Cloudflare Workers 中设置 CORS?

    我是 Cloudflare Workers 的新手 如何在 Cloudflare Workers 中设置 CORS response await cache match cacheKey if response handle fetch d
  • 我如何迭代 Laravel 模型中的属性?

    我有一个具有许多属性的 Laravel 模型 所以 我需要迭代这些属性 我怎样才能做到这一点 像这样的东西 foreach model gt attributes as attribute use attribute endforeach
  • MySQL中多个字段的排序

    我有一个包含 2 个字段 日期 和 重要性 的表 现在我想按降序对这两个字段进行排序 以便各行按每个日期的重要性排序 例如 如果排序正确 行应返回如下所示 Dec 3 2010 10 Dec 3 2010 10 Dec 3 2010 8 D
  • redux-form 字段值可以保存对象而不仅仅是字符串吗?

    redux form 字段值可以保存对象而不仅仅是字符串吗 考虑以下示例 class SelectQuestions extends Component render const fields question1 question2 han
  • Azure 上的 Orchard 性能

    Using http docs orchardproject net Documentation Deploying Orchard to Windows Azure我已成功将 Orchard 部署到 Azure 中 每 20 分钟左右没有
  • 如何运行除 docker 容器中的步骤之外的所有 jenkins 管道步骤

    我正在尝试设置一个 jenkins 多分支管道来在 docker 容器中运行所有代码验证步骤 然后构建 docker 映像并将其推送到所述 docker 容器之外 目前 我的 Jenkinsfile 看起来有点像这样 为了可读性而缩小 pi