我可以在 Jenkinsfile 中增强 scm 吗?

2024-03-07

我花了很长时间才明白什么checkout scm真正的意思是在 Jenkinsfile 中(checkout 是一个函数,scm 是一个默认的全局变量)。

现在我明白了,我想补充一下scm例如,增加特定结账的超时时间或设置sparseCheckoutPaths。这可能吗?如果是这样,怎么办?


对于 Git 来说,checkout scm基本上相当于:

checkout([
     $class: 'GitSCM',
     branches: scm.branches,
     doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
     extensions: scm.extensions,
     userRemoteConfigs: scm.userRemoteConfigs
])

如果您想将稀疏结帐添加到现有的 scm,您要做的是:

checkout([
     $class: 'GitSCM',
     branches: scm.branches,
     doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
     extensions: scm.extensions + [$class: 'SparseCheckoutPaths',  sparseCheckoutPaths:[[$class:'SparseCheckoutPath', path:'path/to/file.xml']]],
     userRemoteConfigs: scm.userRemoteConfigs
])

更好的是,您可以定义一个自定义步骤, sparseCheckout在共享库中。

def call(scm, files) {
    if (scm.class.simpleName == 'GitSCM') {
        def filesAsPaths = files.collect {
            [path: it]
        }

        return checkout([$class                           : 'GitSCM',
                         branches                         : scm.branches,
                         doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
                         extensions                       : scm.extensions +
                                 [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: filesAsPaths]],
                         submoduleCfg                     : scm.submoduleCfg,
                         userRemoteConfigs                : scm.userRemoteConfigs
        ])
    } else {
        // fallback to checkout everything by default
        return checkout(scm)
    }
}

然后你用以下方式调用它:

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

我可以在 Jenkinsfile 中增强 scm 吗? 的相关文章

  • 如何在 Jenkins 控制台输出中隐藏 checkout scm 步骤输出

    我在 Jenkinsfile 脚本化管道 中的第一个阶段是 checkout scm 它简要描述了 GitHub checkouts 和所有修订相关的内容我不想在 Jenkins 控制台输出中显示 是否可以将其隐藏在 Jenkins 的控制
  • 仅运行相应源代码已更改的单元测试?

    我正在 Jenkins CI 服务器中运行单元测试和 Selenium 测试 众所周知 在大型项目中测试需要很长时间才能运行 Java 是否有一个工具 框架只能触发其源代码已更改的测试 这是因为并非每次对 SCM 的提交都会影响源代码的所有
  • Tomcat:模块版本冲突。模块 [groovy-all 已在版本 2.3.7 中加载,而您正在尝试加载版本 2.4.3

    我有一个 jenkins 构建服务器来构建我的 grails 项目 我最近更新到 grails 2 5 0 和 groovy comiler 2 4 3 到目前为止 一切都很好 詹金斯再次发动战争 但是当我在 Tomcat 上部署战争时 出
  • Jenkins:致命:无法初始化类 hudson.util.ProcessTree$UnixReflection

    FATAL Could not initialize class hudson util ProcessTree UnixReflection java lang NoClassDefFoundError Could not initial
  • 如何跳过 Maven 存储库中的发布或特定模块

    Heyho 我有一个具有以下结构的 Maven 项目 parent 项目清单 API模块 module2 module5 test 分配 组装 所以首先我运行父模块 然后运行构建 api 的模块 然后运行依赖于 api 的模块 然后运行一个
  • 致命:Jenkins IIS ID 无效

    我正在尝试设置 Jenkins 从 bitbucket 中提取并构建一个项目 我在 IIS 8 5 Server 2012 r2 上使用它 我已经设置了 Git 和 Bitbucket 插件 我已经建立了一个包含以下内容的项目 Branch
  • Jacoco 代码覆盖率在 Jenkins 上显示覆盖率为 0%

    我已阅读了类似问题的大部分答案 但没有一个适合回答我的问题 我的 pom 文件中的配置文件如下所示
  • 如何将文件参数传递给詹金斯管道中的另一个构建作业?

    如何将当前工作区中的文件作为参数传递给构建作业 例如 build job other project parameters class FileParameterValue 真是一场噩梦 没有文档 查看了詹金斯代码等 尝试了一切 最后发现这
  • Python jenkinsapi - 禁用/启用不工作的作业

    我正在尝试使用 禁用作业 詹金萨皮 https jenkinsapi readthedocs io en latest using jenkinsapi html example 3 disable enable a jenkins job
  • 哪个持续集成服务器能够对作业进行排队?

    使用案例 CI 服务器轮询一些 VSC 存储库并为每个修订版运行测试套件 如果提交了两个或多个修订 即使在相对较小的时间间隔内 我也希望 CI 服务器将每个修订放入队列中 为每个修订运行测试 存储结果 并且不再为这些提交运行测试 而且我不希
  • 限制 jenkins.log 或 hudson.log 的日志大小

    我使用 Hudson 和 Jenkins 并且我在它们上做了几份工作 我的 hudson log jenkins log 文件有时会急剧增长 我知道相同的大小可能受到限制 请帮助了解如何更改以及必须在哪个文件中进行更改 您可以使用logro
  • 如何将 .xlsx 文件上传到 jenkins 作业

    如何将 xlsx 文件作为构建参数上传到 jenkins 作业 我尝试使用文件参数 但我发现该文件正在丢失其扩展名或原始格式 有什么方法可以从 jenkins UI 将 excel 文件上传到 jenkins 作业吗 In the file
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 如果其中一个 ant 测试失败,如何使 Jenkins 显示失败

    我有几个测试应该执行 无论彼此是否成功 我希望 Jenkins Hudson 显示red如果这些测试中至少有一项失败 则灯亮 我当前的 为了清楚起见而简化 配置如下 ci sh ant 构建 xml
  • 如何从管道作业访问 git 分支名称?

    我有一个 Jenkins Pipeline 作业 配置为签出 git 存储库和特定的本地分支 如何在 Jenkinsfile 中获取本地分支的名称 我尝试加载git詹金斯插件 https wiki jenkins ci org displa
  • 为什么 XUnit 插件不能与 Jenkins 一起使用?

    我从 jenkins 启动了测试 IDE selenium 并上传了 XUNIT 插件以获得一份不错的测试报告 但最后我收到了这条 ERROR 消息 测试失败 请参阅结果文件了解详细信息 D FTP stm atos automatisat
  • Jenkins:如何在 Windows 从机中执行 shell 脚本

    我有一个 Windows 从机 安装了 bash 我正在尝试在其上运行 shell 脚本作为预构建步骤 关于我如何做到这一点有什么想法吗 您需要使用脚本作为参数来运行 bash bash yourscript
  • Jenkins Slave 自我注册

    我正在创建一个 Jenkins 主 从集群 但我无法找到一种方法让新的从服务器自动向主服务器注册 我当前的设置是运行一些 Terraform 脚本来创建主服务器和 5 个从服务器 然后我必须登录主节点并管理 Jenkins gt 管理节点
  • 始终执行代码和 python 脚本的结尾

    Python中有没有一种方法可以让代码块始终在程序末尾执行 除非kill 9 我们有一个 Jenkins 项目 它在构建过程中启动 python 脚本 如果开发人员决定中止工作 那么就会留下大量工件 这些工件可能 并且正在 影响未来的构建
  • 当更改提交给子模块时,如何触发詹金斯中的构建?

    我们有一个带有外部子模块的 git 存储库 当子模块更改时 我们必须触发构建 您能否向我们建议如何使用 xtrigger 插件轮询子模块上的更改 使用 shell 脚本或监视文件还是其他更好 有关我们构建过程的更多信息 步骤1 使用子模块克

随机推荐

  • 使用 connect 时出错(react-redux 库的函数)

    我有一个组件类 我正在使用react redux来连接redux存储 但是当我尝试将组件传递到connect函数时出现错误 react default memo 不是一个函数 在 react default memo ConnectFunc
  • CGO:如何在 Golang 中使用指针访问 C 数组中的数据

    我正在使用 FFmpeg 为 Windows 平台编写一个应用程序 它是 golang 包装器 goav 但我无法理解如何使用 C 指针来访问它们指向的数据数组 我试图获取存储在 AVFrame 类中的数据 并使用 Go 将其写入文件 最终
  • 相关非类型模板参数

    考虑下面的类 class Foo enum Flags Bar Baz Bax template
  • 如何在 Java 中配置数据源以连接到 MS SQL Server?

    我正在尝试按照 Java 的 JDBC 教程编写一个可以连接到 SQL Server 2008 的 Java 程序 在建立连接时我迷失了方向 以下片段来自教程 InitialContext ic new InitialContext Dat
  • 如何在 Windows Azure 中连接 2 个虚拟机以实现两层架构?

    如何在 Windows Azure 中创建 2 个连接的虚拟机以便能够部署两层架构解决方案 让我澄清一下这个场景 目前我在 Windows Azure 中使用 1 个虚拟机 其中安装了 SQL Server 2008 DB 和 ASP NE
  • 何时使用动态库与静态库

    在 C 中创建类库时 可以选择动态 dll so 和静态 lib a 图书馆 它们之间有什么区别 什么时候适合使用哪个 静态库会增加二进制文件中代码的大小 它们总是被加载 并且无论您编译的代码版本是什么 都是将运行的代码版本 动态库单独存储
  • 如何从 silverlight 应用程序检测操作系统?

    我有一个 Silverlight3 应用程序 旨在在 Windows 和 Mac OS 环境上运行 我想在运行时知道我的应用程序是在 Windows 还是 Mac 上运行 这样我就可以根据用户在他们选择的操作系统中习惯的方式进行一些调整 例
  • 在 CodeIgniter 2.0 中返回并使用数据库中的多维记录数组

    大家好 好吧 我正在尝试使用 codeigniter 但在我看来 我在尝试检索和显示表中的数据时造成了一些混乱 这是代码片段 我想检索存储在我的文章表中的所有文章 同时我需要从关系表和分别名为articleTagRelation和标签的标签
  • 重新连接 WebSocket 而不创建新实例

    因此 我创建了一个新的 Web 应用程序 它使用 WebSocket 到 Node JS WebSocket 服务器 现在 节点服务器可以完成它需要的一切并且工作完美 我的问题是浏览器的实现 我查看了答案中其他人提供的许多库 但我想看看它们
  • 如何使用LINQ选择对象?

    我的数据看起来像这样 UserId SongId 1 1 1 4 1 12 2 95 我还有以下课程 class SongsForUser public int User public List
  • 滑动菜单未正确显示

    我是一名初学者 Android 程序员 我正在玩弄JFeinstein 很棒的滑动菜单 https github com jfeinstein10 SlidingMenu 试图弄清楚它是如何工作的并在我的应用程序中实现它 但在我的所有实现中
  • 从 ASCII 文件读取文本值到 matlab 变量中

    考虑以下文件 var1 var2 variable3 1 2 3 11 22 33 我想将数字加载到矩阵中 并将列标题加载到变量中 该变量相当于 variable names char var1 var2 variable3 我不介意将名称
  • 我可以将反应组件放入状态中吗?

    找不到任何最近的官方信息是否允许以下 三个选项中的任何一个 constructor props this state item
  • 具有类型约束的无符号“变量”是否可以重新绑定? [复制]

    这个问题在这里已经有答案了 EDIT 关闭以支持https stackoverflow com questions 69231506 what are the rules for re binding 这是我在更清楚地理解我在这个问题中想问
  • 在 PHP 中创建日、小时、分钟和秒倒计时

    到目前为止 我已经有了这个可以倒计时天和小时的脚本 但是如何让它也可以倒计时分钟和秒呢 remaining strtotime ActiveListing ListingExpires time days remaining floor r
  • Woothemes Flexslider - 另一个 Flexslider 中的一个独特的 Flexslider - 可能吗?

    我正在使用 Woothemes 的最新 Flexslider 并且我正在尝试将一个 FlexSlider 初始化到另一个 FlexSlider 中 像这样 function initFrontpageSliders flexsliderFr
  • Spring boot:在运行时添加新端点

    我正在开发一项功能 允许 Spring Boot 应用程序具有 插件 这意味着无需新的构建 应用程序就应该能够集成新的代码片段 动态类加载是可以的 但是 对于每个新的 插件 我需要添加一个新的休息端点 我知道一些库能够在 Spring Bo
  • 根据数组生成文件列表

    我尝试了一些事情 但这周我感觉我的大脑正在度假 我需要完成这件事 所以我希望有人可以帮助我 我需要根据保存到数据库中的哈希创建一个文件列表 看起来像这样 file1 dir1 file2 dir1 subdir1 file3 输出应该是这样
  • 如何在 Groovy 中重置模拟静态方法?

    我在测试设置中有以下内容 def originalPostAsXml RestClient postAsXml RestClient metaClass static postAsXml String uriPath String xml
  • 我可以在 Jenkinsfile 中增强 scm 吗?

    我花了很长时间才明白什么checkout scm真正的意思是在 Jenkinsfile 中 checkout 是一个函数 scm 是一个默认的全局变量 现在我明白了 我想补充一下scm例如 增加特定结账的超时时间或设置sparseCheck