jenkins build pipeline plugin与parameterized传参冲突

来源:互联网 发布:微信 js 播放器代码 编辑:程序博客网 时间:2024/06/06 17:15
build pipeline plugin是持续集成服务器Jenins的插件,最近发现build pipeline在传参数过程中,再出现参数重名的情况下,此插件会用down stream的参数去覆盖up stream的参数。


/**     * Given an Upstream AbstractBuild and a Downstream AbstractProject will retrieve the associated ParametersAction.     * This will result in parameters from the upstream build not overriding parameters on the downstream project.      * @param upstreamBuild - The AbstractBuild     * @param downstreamProject - The AbstractProject     * @return - AbstractBuild's ParametersAction     */    public static Action getAllBuildParametersAction(AbstractBuild<?, ?> upstreamBuild, AbstractProject<?, ?> downstreamProject) {        // Retrieve the List of Actions from the downstream project        final ParametersAction dsProjectParametersAction = ProjectUtil.getProjectParametersAction(downstreamProject);                // Retrieve the List of Actions from the upstream build        final ParametersAction usBuildParametersAction = BuildUtil.getBuildParametersAction(upstreamBuild);                return mergeParameters(usBuildParametersAction, dsProjectParametersAction);    }

/**     * Merges two sets of ParametersAction     * @param base ParametersAction set 1     * @param overlay ParametersAction set 2     * @return - Single set of ParametersAction     */    public static ParametersAction mergeParameters(ParametersAction base, ParametersAction overlay) {        final LinkedHashMap<String, ParameterValue> params = new LinkedHashMap<String, ParameterValue>();        if (base != null) {            for (ParameterValue param : base.getParameters()) {                params.put(param.getName(), param);            }        }                if (overlay != null) {            for (ParameterValue param : overlay.getParameters()) {                params.put(param.getName(), param);            }        }                return new ParametersAction(params.values().toArray(new ParameterValue[params.size()]));    }