gpt4 book ai didi

git - 无法在 Jenkins 中使用 Multiple-SCM-Plugin 获取多个 repos 的 git 提交

转载 作者:太空狗 更新时间:2023-10-29 12:55:15 28 4
gpt4 key购买 nike

因此,我已经配置了一个 jenkins 作业,它从 3 个存储库中 check out master 分支。现在我想获取所有三个存储库的最新更改。

目前,GIT_COMMIT 环境变量仅提供配置中添加的最后一个仓库的提交,而不是所有三个仓库的提交。

有没有办法获取所有三个存储库的先前提交和当前 git 提交?

最佳答案

我遇到了同样的问题并决定 fork Multiple SCMs 插件来修复它:https://github.com/JakeStoeffler/multiple-scms-plugin

如果您愿意,只需克隆我的存储库并运行 mvn 来构建 HPI 文件(位于 target/multiple-scms.hpi),您可以手动上传该文件并安装在 Jenkins 。如果您想自己进行调整,请克隆 the original repo直接打开 MultiSCM.java,将 buildEnvVars() 方法中的代码替换为如下内容:

@Override
public void buildEnvVars(AbstractBuild<?,?> build, Map<String, String> env) {
// Add each SCM's env vars, appending indices where needed to avoid collisions
for (int i = 0; i < scms.size(); i++) {
try {
EnvVars currScmVars = new EnvVars();
scms.get(i).buildEnvVars(build, currScmVars);
for (Entry<String, String> entry : currScmVars.entrySet()) {
if (env.containsKey(entry.getKey())) {
// We have a collision; append the index of this SCM to the env var name
env.put(entry.getKey() + "_" + i, entry.getValue());
} else {
// No collision; just put the var as usual
env.put(entry.getKey(), entry.getValue());
}
}
}
catch(NullPointerException npe) {}
}
}

希望那里的评论是不言自明的。基本上,原始代码中的错误是当您有多个具有相同环境变量名称的 SCM 时,变量在迭代时会被覆盖。我们通过防止这些覆盖并将索引附加到变量名称来解决这个问题。

这是一个如何使用它的示例:如果我们的项目配置了 3 个 Git SCM,我们现在可以使用环境变量 GIT_COMMIT 单独访问每个 Git 存储库的最新提交哈希,GIT_COMMIT_1GIT_COMMIT_2。附加索引对应于 Jenkins 中项目配置中 SCM 的顺序。

显然这是一个快速而肮脏的解决方案,但它适用于我需要做的事情。随意定制它以满足您的需求。

关于git - 无法在 Jenkins 中使用 Multiple-SCM-Plugin 获取多个 repos 的 git 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31845598/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com