创建可重用的詹金斯管道脚本

2024-01-11

我最近正在考虑使用 Jenkins 管道脚本,一个问题是我没有找到一种明智的方法来创建内部可重用的 utils 代码,想象一下,我有一个通用函数helloworld它将被很多管道作业使用,所以我希望创建一个utils.jar可以将其注入到作业类路径中。

我注意到詹金斯有类似的概念全球图书馆 https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/README.md,但我对此插件的担忧:

由于它是一个插件,所以我们需要通过 jenkins 插件管理器安装/升级它,然后可能需要重新启动才能应用更改,这不是我想看到的,因为 utils 可能会更改,总是添加,我们希望它可以立即可用。

其次,它是官方的jenkins共享库,我不想(或者他们不会应用我们)将私有代码放入jenkins repo中。

有什么好主意吗?


The 共享库 https://github.com/jenkinsci/workflow-cps-global-lib-plugin (docs https://jenkins.io/doc/book/pipeline/shared-libraries/)允许你做your所有管道脚本都可以访问的代码。您不必为此构建插件,也不必重新启动 Jenkins。

例如。这是我的图书馆 https://github.com/TYPO3-infrastructure/jenkins-pipeline-global-library-chefci and 这是 Jenkinsfile https://github.com/TYPO3-cookbooks/site-chefcitypo3org/blob/master/Jenkinsfile调用这个通用函数。


编辑(2017 年 2 月): 该库可以通过 Jenkins 的内部 Git 服务器访问,或通过其他方式(例如通过 Chef)部署到workflow-lib/目录内的jenkins用户的主目录。(仍然可以,但非常不方便)。

全局库可以通过以下方式进行配置:

  • an @Library('github.com/...')中的注释Jenkinsfile指向共享库存储库的 URL。
  • 在 Jenkins 作业的文件夹级别配置。
  • 在 Jenkins 配置中配置为全局库,其优点是代码trusted,即不受脚本安全性的约束。

第一个和最后一个方法的混合将是一个未显式加载的共享库,然后仅使用其名称来请求该共享库Jenkinsfile: @Library('mysharedlib').

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

创建可重用的詹金斯管道脚本 的相关文章

  • 错误:获取远程存储库“origin”时出错,返回状态代码-1:

    我在 Windows 上运行 Jenkins 当我尝试通过 jenkins 构建我的项目时 出现以下错误 git exe c core askpass true fetch tags progress
  • Jenkins 安排代理节点可用性

    我们有许多机器希望用作 Jenkins 的代理节点 但仅限于特定的时间间隔 即不在工作时间 是否可以配置一个代理节点作为特定时间范围内构建的代理 例如 周一至周五晚上 10 点至凌晨 5 点 周六和周日全天 In the 从机配置面板 选择
  • 使用 Jenkins Git 插件中的 SSH 密钥在构建期间运行 Git 命令

    我们在 Jenkins 上的构建作业作为发布构建的一部分运行一些 git 命令 例如 git push 和 git pull 因此需要一种在构建期间从 shell 运行经过身份验证的 git 命令的方法 我们的詹金斯奴隶不持有任何凭证 因为
  • Maven 依赖项更新报告需要数小时才能完成

    我有任务运行 Jenkins 工作女巫会报告新版本的库 我认为这些可以满足我的需要 org codehaus mojo versions maven plugin 2 5 plugin updates report org codehaus
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • 使用 Ruby 验证 Jenkins 插件表单

    我正在用 Ruby 开发一个 Jenkins 插件 您应该能够配置连接到服务器的每个节点 以便在该节点失去与主服务器的连接时将电子邮件发送到指定的地址 EmailNodeProperty添加一个字段来输入电子邮件地址 Save an ema
  • Jenkins 执行 PowerShell 脚本

    我正在尝试从 Jenkins 运行 PowerShell 脚本 但它似乎完全忽略了执行策略 可以通过直接执行 powershell exe 或使用PowerShell插件 https wiki jenkins ci org display
  • macOS 更新后 Jenkins 用户消失

    我在 Mac 上运行 Jenkins 作为 CI 服务器 使用用户 jenkins 的典型设置 它在 macOS 10 12 上运行良好 今天我将 macOS 升级到 10 13 High Sierra 升级过程完成后 Jenkins 无法
  • SSHKit::Runner::ExecuteError:以 root@co 身份执行时出现异常:Jenkins Job 的 shell 脚本中的用户 root@ 身份验证失败

    我正在尝试从 Jenkins Job 运行 cap 部署命令 它不断抛出以下错误 我也在部署服务器中添加了 ssh 密钥 我能够从配置 Jenkins 的服务器成功部署 但是当我运行该作业时 会引发身份验证错误 这对我来说真的很重要 有人可
  • 解锁 Jenkins - 如何

    我已经使用 putty 从 Windows 系统在我的 ec2 实例上安装了 jenkins 当我尝试通过网络访问 jenkins 时 我使用 var lib jenkins secrets initialAdminPassword 解锁
  • 将 CCtray 与 Jenkins 结合使用,同时启用安全性(使用 HTTPS)

    我将 Jenkins 服务器配置为仅使用 HTTPS 并启用安全性 我也不喜欢任何未登录的人查看仪表板 即使它是空的 在这里 我禁用了 匿名 的 读取 访问权限 到目前为止 所有这些都完全符合我的喜好 但想要通过例如向远程客户端添加一些构建
  • 在 Jenkins 声明式管道中对后置条件进行分组

    有没有办法在 Jenkins 声明式管道中对后置条件进行分组 例如 我想对状态做同样的事情aborted failure and success 有没有比以下更短的方法 post aborted sendNotification curre
  • 使用 Jenkins API 促进构建

    给定一个具有不同升级作业的 Jenkins 构建作业 即 将构建升级到不同的环境 如何使用 Jenkins API 触发特定构建的特定升级作业 综合不同来源的答案得出 Username Username APItoken 12345 Cre
  • 无法指向 Jenkins 主机上 ~/.ssh 中的 ssh 密钥

    我已经安装了 SSH 代理插件来使用 SSH 身份验证拉取 Git 存储库 我想使用位于系统文件中的 SSH 密钥 来自 Jenkins master ssh选项 这是从官方插件页面截取的屏幕截图 不幸的是我没有看到这个选项 我只能选择 直
  • Jenkins + Gradle + Artifactory:无法读取生成的构建信息

    我正在尝试使用 Jenkins Pipeline 调用 Gradle 工具 将我的工件推送到 Artifactory 我正在关注 GitHub 上发布的示例 Example1 https github com JFrogDev projec
  • 在docker容器中运行Jenkins有什么优势

    我发现了很多关于如何运行你的博客Jenkins in Docker但没有人真正解释这样做的好处 这是我发现的唯一原因 使用 Docker 的理由 https twasink net 2016 08 01 setting up a jenki
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • 抑制 Jenkins 文件中的管道输出

    当我在詹金斯上运行构建时 它总是在执行詹金斯步骤时打印管道 控制台当前输出 Build context CI clean app clean BUILD SUCCESSFUL in 22s 2 actionable tasks 2 exec
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Jenkins 共享库:“java.lang.NoSuchMethodError:没有这样的 DSL 方法”

    我正在尝试通过 Jenkinsfile 和共享库创建 Jenkins 管道 我通过 Web UI 创建了一个作业来获取 Jenkinsfile 它工作正常 但是 共享库内容似乎无法被 Jenkins 识别 下面是 Jenkinsfile 和

随机推荐

  • RxJS5 最终确定运算符未调用

    当我的所有可观察量都被执行时 我试图触发回调 在我的另一个较旧的项目中 我使用了finally就像这样 这就像一个魅力 this myService callDummy finally gt console log Works subscr
  • 使用客户端证书身份验证创建 .NET Web 服务

    我想将对 NET Web 服务的访问限制为特定的客户端列表 他们会将客户证书附加到每个请求中 并且只有在 在列表中 时才会得到正确的响应 但如何以及在哪里实施这一点的最佳方法是 在 IIS 7 0 上 我可以设置需要客户端证书选项 但在哪里
  • 需要一个同义词数据库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有开源同义词库可供下载吗 它可以是任何格式 最好不是来自 1915 年的词典 我需要一个来合并到数据库
  • 新型 celery api 的问题

    我有一个扩展芹菜的课程Task 它在旧式 API 中运行得很好 但我在将其转换为新 API 时遇到问题 In app tasks py from celery import Celery Task celery Celery celery
  • 从命令行更改 Swing 字体大小

    我正在使用 Swing 应用程序 该应用程序在我的计算机上显示的文本字体尺寸小得离谱 有没有办法从命令行或某种配置文件 例如 类似swing properties file 我无权访问源代码 EDIT 自 Java 9 以来 小字体不再是问
  • 对 Hibernate 驱动的应用程序进行单元测试? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这可能是一个天真的问题 但我对 junit 和 hibernate 框架都很陌生 我想知道对主要调用 hibernate 的应用程序进
  • 注意:使用未定义的常量 STDOUT - 假定为“STDOUT”

    我正在尝试在 Xampp 中设置 Amazon Aws Php SDK 安装 SDK 后 我尝试使用以下代码从 Amazon S3 下载存储桶
  • 如何将 DataGrid 绑定到 DataTable 全部在代码隐藏中?

    如何在 C 代码后面将 DataGrid 绑定到 DataTable 所有控件都是在运行时生成的 因此请不要使用 XAML 我尝试了 Binding 设置 DataContext 设置 ItemsSource 但都不起作用 Binding
  • Android UiAutomatorViewer 无法检测到某些视图

    我的应用程序在使用 UIAutomatorViewer 时遇到问题 如果您查看屏幕截图 突出显示的 View 应该是带有子 TextView 的 FrameLayout 但您看不到这一点 该活动具有以下 xml
  • Windows 不变文化之谜

    我有一个关于 Windows 不变文化的问题 简而言之 我的问题是 是否存在任意一对字符 c1 和 c2 使得 lower c1 invariant latin general lower c2 Invariant but lower c1
  • 如何用spring正确发布DDD领域事件?

    我正在尝试在我的项目中实现领域驱动设计 这是我的基地Aggregate class public abstract class UUIDAggregate private final DomainEventPublisher domainE
  • 如何通过拖动行来重新排序 Vuetify 数据表中的项目?

    我正在为客户开发 Vuetify Web 应用程序 她希望能够通过拖放行来调整数据表中显示的元素的顺序 但 Vuetify 文档没有解释如何做到这一点 我该怎么做 这是我正在使用的 CodePen https codepen io Nath
  • 删除重复的组合(无论顺序如何)

    我有一个整数数据框 它是所有 n 选择 1 n 的 3 个组合的子集 例如 对于 n 5 它类似于 1 2 3 1 1 2 3 2 1 2 4 3 1 2 5 4 1 3 4 5 1 3 5 6 1 4 5 7 2 1 3 8 2 1 4
  • XSLT:添加节点内部文本

    这是此处发布的其他问题的轻微版本 XSLT 更改节点内部文本 https stackoverflow com questions 2888880 xslt change node inner text 想象一下我使用 XSLT 来转换文档
  • 当应用程序转到后台时暂停和恢复 UIView 动画

    我正在为视图设置动画 我想暂停并恢复它 使用苹果指南我创建了一个 CALayer 扩展 extension CALayer func pause var pauseTime self convertTime CACurrentMediaTi
  • 使用 Meteor 从单独的文件中调用函数

    我想在 Meteor 中创建一个应用程序 根据我对手册的理解 它首先加载的是 子目录 然后按照字母顺序排列 我的文件结构是这样的 server lib client lib game js gt already starts declari
  • 全文搜索条件“control of”中“of”附近存在语法错误

    我有以下内容WHERE clause WHERE Keywords IS NULL OR CONTAINS p Title p Area p Message Keywords If Keywords control 然后查询执行成功并过滤我
  • 在 WF CodeActivity 和 AsyncCodeActivity 之间进行数据库操作选择

    我对 WF 还很陌生 所以如果我第一次没有正确理解这一点 请耐心等待 如果您在一个相当低容量的环境中 每天几百个请求 对一个规范化良好的数据库进行选择 使用主键 返回单个记录 那么是否使用真的有什么不同吗 CodeActivity vs A
  • 在 EMR Spark 应用程序中加载 props 文件

    我正在尝试使用以下方法在我的 Spark 应用程序中加载自定义属性 command runner jar spark submit deploy mode cluster properties file s3 spark config te
  • 创建可重用的詹金斯管道脚本

    我最近正在考虑使用 Jenkins 管道脚本 一个问题是我没有找到一种明智的方法来创建内部可重用的 utils 代码 想象一下 我有一个通用函数helloworld它将被很多管道作业使用 所以我希望创建一个utils jar可以将其注入到作