【问题标题】:How to override value which set in Groovy config to value from Jenkins build parameter如何将 Groovy 配置中设置的值覆盖为 Jenkins 构建参数中的值
【发布时间】:2018-11-13 10:37:05
【问题描述】:

现在我有一个config.properties 文件和一个单例配置对象,它将文件读取到映射,然后将所有系统变量也放在那里。因此,当我通过 Jenkins 运行测试时,具有相同名称的作业参数将覆盖在 config.properties 文件中设置的值。

这对我来说是预期的正确行为。 但我想将所有配置和构建参数保留在GebConfig.groovy 文件中。

这里有两个问题:

  1. 现在,如果我需要在我的代码中获取 GebConfig 属性,我使用browser.getConfig().getRawConfig().get("contextPath")。是正确调用还是有更好的方法从测试代码中的配置中获取参数?

  2. 如何实现将 Jenkins 作业的参数传递给 Geb 配置? 我只有在System.getenv() 中搜索它的想法首先:

    public String getProperty(String name) {
        Map<String, String> systemEnv = System.getenv();
        return systemEnv.get(name) ?: browser.config.rawConfig.get(name);
    }
    

【问题讨论】:

    标签: jenkins groovy config geb


    【解决方案1】:

    所有构建工具都接受 -DvarName=varValue 以将属性传递到 GebConfig。 GradleMavenAnt。因此,您将在 Jenkins Build 步骤中传递该变量

    编辑:下面是我的 GebConfig,它处理默认值与传入的变量

    System.setProperty("geb.env.username", System.getProperty("geb.env.username", 'test'))
    

    【讨论】:

    • 是的,但据我所知,在通过 -DvarName=varValue 传递属性后,我需要通过调用 systemProperty("varName", project.varName) 在 duild gradle 中对其进行描述。然后我可以在 GebConfig 中将它用作 System.getProperty("varName")。我的问题是如果通过 -D 参数传递或存在于 System.getEnv() 中,如何自动替换 GebConfig 中 varName 的值
    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多