如何在jenkins buildstep插件中访问先前构建的SVN修订版号?

时间:2019-01-08 20:13:40

标签: java jenkins svn plugins jenkins-plugins

我正在尝试从我要开发的构建步骤插件中访问修订号数据。

Image here

我的插件目前使用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;
            }
        }
    }

0 个答案:

没有答案