我正在尝试从我要开发的构建步骤插件中访问修订号数据。
我的插件目前使用perform方法,因为我的所有学习都是基于教程和hello world demo插件。
@Override
public void perform(Run<?, ?> run, FilePath workspace, Launcher
launcher, TaskListener listener) throws IOException {
jenkins服务器正在使用subversion plugin,这就是我以前尝试访问修订号的方式。
我已经看到,通过使用Abstract Build类,我可以访问方法getChangeSets
subversion插件扩展ChangeLogSet.Entry以添加getRevision()方法。我的意思不是事实,而是我目前的研究,这是从研究如何访问此修订数据中获得的。
问题是,我使用的是Run,而不是AbstractBuild参数。据我所知,AbstractBuild几乎已被弃用,仅是为了向后兼容而存在。我如何在我的buildstep插件中从jenkins获取此修订号数据?可以同时使用Run和AbstractBuild吗?
请注意,我不是在寻找先前版本的修订版本号,而是寻找任何先前版本的版本号。目前,我正在通过此方法获取其他先前的构建数据。
private void checkBuilds(Run run){
boolean first = true;
Job job = run.getParent();
SortedMap<Integer,Run> builds = job.getBuildsAsMap();
for (Map.Entry<Integer, Run> prevRun : builds.entrySet()) {
if (first){
first = false;
currentBuild = prevRun.getValue().getNumber();
M2ReleaseArgumentsAction args =
prevRun.getValue().getAction(M2ReleaseArgumentsAction.class);
currentRelease = args.getReleaseVersion(); // maven release
version i.e. '1.5.7'
}
else if (prevRun.getValue().getCause(ReleaseCause.class) !=
null){
M2ReleaseArgumentsAction args =
prevRun.getValue().getAction(M2ReleaseArgumentsAction.class); // Checks
if the build is a maven release.
if (args != null) {
prevBuild = prevRun.getValue().getNumber();
prevRelease = args.getReleaseVersion(); // maven
release version i.e. '1.5.7'
} else { // builds by old versions of the m2 plugin
prevRelease = "No Release Version";
prevBuild = prevRun.getValue().getNumber();
}
break;
}
}
}