如何覆盖在Groovy配置中设置为Jenkins构建参数值的值

时间:2018-11-13 10:37:06

标签: jenkins groovy config geb

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

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

这里有两个问题:

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

  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);
    }
    

1 个答案:

答案 0 :(得分:1)

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

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

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