Jenkins-pipeline 从 groovy 中的属性文件中提取并设置变量

2023-11-30

首先,我将管道完全编写为 groovy,以便签入 git。请不要提供任何gui必要的解决方案。我的问题陈述是:

从文件中提取变量并将其设置为等于 groovy 对象。

我尝试过的

def SERVICE_MAJOR_VERSION
node {
    runGitClone(GIT_REPO_URL, GIT_HASH)
    def conf = readFile("gradle.properties")
    echo conf
    //THE BELOW COMMENT DOESN'T WORK
    //SERVICE_MAJOR_VERSION = loadEnvFromFile("SERVICE_VERSION_MAJOR", "gradle.properties", true, SERVICE_VERSION_MAJOR)
}    

def runGitClone(git_repo_url, git_hash) {
    checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: git_hash]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '85572032-4284-4095-9eec-4df70ddfdb68', url: git_repo_url]]]
}

def loadEnvFromFile(string_name, file_path, should_print_load) {
    def par1 = null
    def content = readFile file_path
    def matcher = content =~ /${string_name}\=(.+)/
    if (matcher) {
        par1 = string_name + "='" + matcher[0][1] + "'"
        new GroovyShell(this.binding).evaluate(par1)
            if (should_print_load) {
            println par1
        }
    }
    return par1
}

我尝试过其他建议但无济于事。尤其是下面这两个。

  • 使用 Groovy 从属性文件中获取值
  • 将字符串解析为属性

如果您有一个从文件中提取变量并将其设置为等于常规对象的工作示例,那么它将解决我的问题。


SOLVED:

def content = readFile 'gradle.properties'

Properties properties = new Properties()
InputStream is = new ByteArrayInputStream(content.getBytes());
properties.load(is)

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

Jenkins-pipeline 从 groovy 中的属性文件中提取并设置变量 的相关文章

随机推荐

  • 使用 AutoIT 登录 Chrome 身份验证窗口

    我尝试通过以下代码登录到 Firefox 身份验证窗口 WinWaitActive Authentication Required 120 If WinExists Authentication Required Then Send use
  • 如何找到向量中的所有最小元素

    在Matlab中 通过函数min 即使可以有多个相等的最小元素 我也只能得到一个向量的一个最小元素 我想知道如何获取向量中所有最小元素的索引 例如 v 1 1 我想获得索引 1 和 2 它们都索引最小的元素 1 感谢致敬 您可以使用find
  • fmt.Scanln 预期换行错误

    我正在尝试学习 Go 但坚持了这一点 http ideone com hbCamr or http ideone com OvRw7t package main import fmt func main var i int var f fl
  • Github 表示有效的现有工作“正在等待状态报告”

    我有一个 PR 我希望在合并到 master 之前完成某些检查 这是工作https github com hhimanshu typescript serverless api vercel actions runs 763599870 现
  • 美元符号在 Swift / SwiftUI 中起什么作用?

    Apple 提供的有关 SwiftUI 的教程使用美元符号绑定数据 但我无法在 SwiftUI 中找到有关此数据绑定的更多信息 Toggle isOn showFavoritesOnly 您可以使用 前缀来访问对状态变量或其属性之一的绑定
  • 在通过 setTimeout 或 Promise 阻止代码之前更新 DOM

    我知道 当存在 CPU 密集型代码时 任何先前的 DOM 更新都不会发生 例如 function blockFor dur var now new Date getTime while new Date getTime lt now dur
  • 如何使用serviceWorker缓存ajax响应

    我在index html中使用ajax调用服务器数据 它正在完美地获取这些数据 现在 我正在与服务人员一起工作 我可以缓存所有静态资源 图像 js css 并在 Chrome 开发工具的应用程序选项卡的缓存存储中检查这些缓存的资源 我可以在
  • 使用信用卡付款的 Paypal Express Checkout 订阅

    问题 是否可以通过 Paypal api Express Checkout 设置订阅 以便您可以通过信用卡和 Paypal 登录进行支付 Paypal 登录没问题 但目前无法使用信用卡 我已设置 NVP SOLUTIONTYPE Sole
  • 参数数量无效:没有绑定参数

    我有一个使用 php 和 mysql 的静态聊天应用程序 下面是在聊天框中显示消息的代码 sql SELECT id msg time msg from msg to from msg WHERE msg from SESSION user
  • 使用 GSON 反序列化嵌套 JSON 字符串

    全部 我有以下内容JSON输出 字符串 来自 JIRA API 的响应 expand names schema startAt 0 maxResults 50 total 1 issues expand operations version
  • Java:找到大写字母时分割字符串

    我认为这是一个简单的问题 但我无法找到一个简单的解决方案 比如说 少于 10 行代码 我有一个String例如 thisIsMyString 我需要将其转换为String this Is My String 请注意第一个字母不是大写 您可以
  • Visual Studio代码:在输入代码片段时替换字符大小写

    我正在尝试为 Visual Studio Code 和 TypeScript 编写代码片段 到目前为止 我成功地镜像了这样的输入单词 import 1 Name Component from 1 name component 当我在第 1
  • 集群环境下如何使用redis扫描?

    我正在使用 spring redisTemplate 和 redis 扫描 它可以在单节点的情况下查找 但在集群环境下就不行了 我无法获取数据 有没有办法在集群环境下获取扫描数据 这是我的 spring redisTemplate 代码 S
  • 将一个函数作为参数传递给另一个函数

    我看到一个函数像这样传递 sigma 3 e 2 svmTrain X y gaussianKernel X y sigma 这样的函数传递是怎么回事 有人能解释一下吗 语法 X y gaussianKernel X y sigma 创建一
  • Visual Studio:通过电源控制台添加项目文件失败

    我的任务是在一个解决方案中添加 384 个现有项目 以便用项目依赖项替换二进制文件依赖项并使用 msbuild 进行构建 为了实现这一目标 我尝试使用 Visual Studio API 来自动将项目添加到解决方案中 我实际上是 Windo
  • 如何从画布中添加和删除(多个)图像?

    我是画布 HTML5 新手 我必须在画布上设计一个绘画应用程序 有一个功能 例如在画布上动态添加所选图像 通过鼠标移动 以及删除和拖动添加的图像的功能 与文本添加相同 现在我的问题是我们如何从画布中删除图像 注意 添加到画布中的图像没有固定
  • 如何在TYPO3 CMS后端重命名副标题

    如何为作者重命名 TYPO3 CMS 后端字段 即提到的 csc styled content 内容元素字段 一般来说 覆盖标签名称可以通过后端的 Page TSconfig 来完成 下面的例子修改了标签subheader field TC
  • 你调用的对象是空的

    我有一个单元格类 public class Cell public enum cellState WATER SCAN SHIPUNIT SHOT HIT public Cell currentCell cellState WATER Me
  • 静态变量的动态初始化阶段

    该标准特别指出 静态持续时间变量 命名空间范围和类静态成员 的动态初始化不必在执行 main 之前发生 命名空间范围的对象的动态初始化 8 5 9 4 12 1 12 6 1 是否在 main 的第一个语句之前完成 是由实现定义的 IS 3
  • Jenkins-pipeline 从 groovy 中的属性文件中提取并设置变量

    首先 我将管道完全编写为 groovy 以便签入 git 请不要提供任何gui必要的解决方案 我的问题陈述是 从文件中提取变量并将其设置为等于 groovy 对象 我尝试过的 def SERVICE MAJOR VERSION node r