Jenkins 插件中的变量替换

2024-01-04

我正在开发一个新的 Jenkins 插件,该插件将在 Jenkins 作业的构建阶段执行,并且要求允许用户在插件的作业配置中指定变量名称(而不是文字值)。目的是,当作业执行时,用户指定的变量名称将被替换为与该变量关联的实际值,并且插件将在运行执行方法时使用该实际值。

例如,如果变量MY_VARIABLE与价值myValue被工作的另一部分和值注入到构建环境中${MY_VARIABLE}在我的插件的作业配置中指定,那么我希望该插件替代${MY_VARIABLE}变量的实际值是myValue.

做了一些研究后,我了解到 Jenkins 不会自动用作业配置中的变量替换它们各自的值,这必须由插件处理。我无法弄清楚在我的插件中执行替换的最佳方法。到目前为止,我找到的唯一解决方案是解析从作业配置传递的字符串,以查看它是否与变量的正确模式匹配,然后在代码中查找该值。

我的问题是 Jenkins API 是否提供了更好的解决方案,允许我的插件用实际值替换变量?


您可以检索构建环境 -EnvVars对象——它有一个方便的方法expand(String) http://javadoc.jenkins-ci.org/hudson/EnvVars.html#expand(java.lang.String).

这承认$VARIABLE and ${VARIABLE}-style 字符串并替换环境中的相应值。

例如:

@Override
public boolean perform(AbstractBuild build, Launcher launcher,
  BuildListener listener) throws IOException, InterruptedException {
    ...
    final EnvVars env = build.getEnvironment(listener);
    String expandedDbUrl = env.expand(dbUrl);
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 插件中的变量替换 的相关文章

随机推荐

  • 当所有代码更改均由 DBA 完成时,是否有替代使用 EF 进行 Code First 迁移的方法?

    我读过有关 代码优先迁移 的内容 但似乎这并不真正适合企业 我们有一个 DBA 来完成所有数据库更改 我们不需要将这些更改放入类中 也不需要由应用程序执行数据库迁移 如果我们更改类和 Fluent API 然后让 DBA 对数据库进行更改
  • 存储过程 - 结束日期

    我正在听 Hansel 分钟播客 StackOverflow 使用 ASP NET MVC Jeff Atwood 和他的技术团队 在播客过程中 他们谈论 SQL Server 并说了类似 存储过程的时代已经结束 的话 现在我不是一名 DB
  • cookie 不起作用,apache 到 nginx

    我已将我的网站从 apache 移至 nginx 但现在我遇到的问题是 当我的用户尝试登录网站时 我的网站不想向他们发送 cookie 或启动会话 这是我的登录脚本
  • 字体非常难看

    我正在使用以下代码绘制一个字符串 public Image DrawString String lString Image lImage new Bitmap 128 128 Rectangle rec new Rectangle 0 0
  • 使用相同 glm 的 glm 预测和 geom_smooth() 之间的差异

    我正在尝试使用概率模型重现其他人的工作 不幸的是 我没有太多关于他们的方法的信息 只有他们的起始数据和模型图 当我在 ggplot 中绘制数据并使用拟合线时geom smooth method glm 我能够重现以前的工作 然而 当我尝试使
  • 如何在golang中从AWS S3获取资源URL

    我需要使用 golang 获取资源的公共永久 未签名 URL官方AWS Go SDK https github com aws aws sdk go 在Java AWS S3 SDK中有一个方法称为getResourceUrl http d
  • Internet Explorer 11 在首次加载时忽略 list-style:none

    I am using the Superfish jQuery plugin for my menu In Chrome and in mobile Opera emulator it works fine but in Internet
  • 使用 Moq 验证方法调用

    我对 C 单元测试和学习使用 Moq 相当陌生 下面是我要测试的课程 class MyClass SomeClass someClass public MyClass SomeClass someClass this someClass s
  • 在 python 中搜索字符串匹配后如何从列表中获取下一个元素

    嗨 朋友们 我有一个列表 我正在其中搜索字符串 并且随着搜索的字符串我想获取列表项的下一个元素 下面是示例代码 gt gt gt contents apple fruit vegi leafy gt gt gt info data for
  • 在 xtext 语法中定义原语

    我想使用 xtext 创建一个极其简单的 DSL 具有以下功能 它将有两种基本类型 数字和字符串 用户可以定义自己的类 类由字段声明组成 字段声明将名称与类型相关联 其中类型可以是类或基元 以下是我对 DSL 的尝试 类定义和引用工作正常
  • UWP 应用程序在启动时自动启动

    一切都在标题中 我目前正在寻找一种方法来启动我的UWP app 自动地仅使用 UWP 框架启动 Windows 时 计算机上没有文件操作 该应用程序必须能够在应用商店中共享并在 Windows 启动时打开 这是一件可行的事情吗 如果是这样怎
  • 组织导入 Eclipse 方法

    I need to know which method is called inside eclipse when I press CTRL SHIFT O Organise Imports in order to invoke it af
  • 使用 azurerm 配置 Terraform 子网时出错

    最近我发现我的 AKS 集群拥有一个太小的子网 因此 我尝试添加第二个子网和节点池 现在可以通过 Azure CNI 实现 然后创建一个适当的子网并将其迁移回来 During terraform plan有效响应一切顺利 但是在应用时会抛出
  • Git 在制表符和空格之间进行转换,但只是有时

    首先 我是 git 的新手 就像 如果缓存在暂存区域中命中我 我几乎无法区分缓存和索引 或类似的东西 排除了这一点 我的问题是这样的 假设我想要处理一个编码风格要求缩进空格的项目 但我喜欢制表符 似乎我可以使用清洁和涂抹功能 但有一个问题
  • 在 JS 中新建一行

    你好 我有这个 JS 代码 function myFunction var g var d new Date getDay switch d case 0 g Today it s Sunday break case 1 g Today i
  • 如何发送 FastAPI 响应而不将用户重定向到另一个页面?

    我正在使用 FastAPI 创建一个 API 它接收form data从 HTML 页面处理数据 需要一些时间 并返回一条消息 说明此任务已完成 这是我的后端 from cgi import test from fastapi import
  • 安装 geopandas 的问题

    我正在尝试在我的笔记本电脑 Windows 10 版本 1709 机器 上安装 geopandas 执行 pip install geopandas 命令后 我收到以下消息 command python setup py egg info
  • 为什么jsp改变时tomcat不需要重启

    我一直在使用JSP Servlet很长一段时间 我知道每当我们改变任何东西Servlet我们需要重新启动 Tomcat 服务器才能获取更改 如果 JSP 发生更改 tomcat 不需要重新启动 据我所知JSP页面被转换成Servlet仅当编
  • 如何检测浏览器中的链接复制情况?

    昨天我和一个出租车司机聊天 当他提到我是一名程序员时 他告诉我 几天前他经历了以下情况 在尝试从浏览器地址栏中复制 URL 时 出现一个消息框带有类似的消息 请不要复制此链接 而是注册 我不是网络开发人员 所以这可能是一个蹩脚的问题 但我想
  • Jenkins 插件中的变量替换

    我正在开发一个新的 Jenkins 插件 该插件将在 Jenkins 作业的构建阶段执行 并且要求允许用户在插件的作业配置中指定变量名称 而不是文字值 目的是 当作业执行时 用户指定的变量名称将被替换为与该变量关联的实际值 并且插件将在运行