从运行类jenkins获取Changeset()函数
我在Jenkins中实现了一个与工作流兼容的插件,这意味着我在实现SimpleBuildStep接口,它有一个执行方法,与使用AbstractBuild而不是Run的常规方法不同从运行类jenkins获取Changeset()函数,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我在Jenkins中实现了一个与工作流兼容的插件,这意味着我在实现SimpleBuildStep接口,它有一个执行方法,与使用AbstractBuild而不是Run的常规方法不同 AbstractBuild类有一个名为getChangeSet的函数,该函数在Run类中不可用。我需要这个函数从SCM获取更改。我试过所有类型的铸造。但它不起作用。如何在运行中获得此函数?我遇到了同样的问题,并通过循环运行父项的ItemGroup中的所有项来解决它。我的要求是从运行的变更集中获取最新的变更用户。下面是我
AbstractBuild类有一个名为getChangeSet的函数,该函数在Run类中不可用。我需要这个函数从SCM获取更改。我试过所有类型的铸造。但它不起作用。如何在运行中获得此函数?我遇到了同样的问题,并通过循环运行父项的ItemGroup中的所有项来解决它。我的要求是从运行的变更集中获取最新的变更用户。下面是我是如何做到的,我希望它能帮助你解决你的问题
private String getChangeUser(Run<?, ?> run) throws AbortException {
log("Started getChangeUser()");
String userName = null;
UserIdCause user = (UserIdCause) run.getCause(Cause.UserIdCause.class);
if (user != null && user.getUserName() != null) {
log("Build initiated by: " + user.getUserName());
if (!user.getUserName().contains("anonymous")) {
userName = user.getUserName();
}
}
if (userName == null) {
log("Getting username from changelog for run: " + run.getFullDisplayName());
log("Getting username from changelog for run.parent:" + run.getParent().getFullDisplayName());
ItemGroup<?> ig = run.getParent().getParent();
nextItem: for (Item item : ig.getItems()) {
if (!item.getFullDisplayName().equals(run.getFullDisplayName())
&& !item.getFullDisplayName().equals(run.getParent().getFullDisplayName())) {
continue;
}
log("Item: " + item.getFullDisplayName());
for (Job<?, ?> job : item.getAllJobs()) {
if (job instanceof AbstractProject<?, ?>) {
//log("Job: " + job.getFullName());
AbstractProject<?, ?> p = (AbstractProject<?, ?>) job;
//log("Project: " + p.getFullName());
for (AbstractBuild<?, ?> b : p.getBuilds()) {
log("Build: " + b.getFullDisplayName());
for (Entry entry : b.getChangeSet()) {
if (entry.getAuthor() != null) {
log("entry.getAuthor().getId(): " + entry.getAuthor().getId());
log("entry.getAuthor().getDescription(): " + entry.getAuthor().getDescription());
log("Change user: " + entry.getAuthor().getFullName());
userName = entry.getAuthor().getFullName();
break nextItem;
}
}
}
}
}
}
}
return userName;
}
私有字符串getChangeUser(运行)引发异常异常异常{
日志(“已启动getChangeUser()”;
字符串userName=null;
UserIdCause user=(UserIdCause)run.getCause(Cause.UserIdCause.class);
if(user!=null&&user.getUserName()!=null){
日志(“生成由:“+user.getUserName()启动”);
如果(!user.getUserName()包含(“匿名”)){
userName=user.getUserName();
}
}
如果(用户名==null){
日志(“从changelog获取用户名以便运行:+run.getFullDisplayName());
日志(“从changelog获取run.parent的用户名:+run.getParent().getFullDisplayName());
ItemGroup ig=run.getParent().getParent();
nextItem:for(项:ig.getItems()){
如果(!item.getFullDisplayName()等于(run.getFullDisplayName())
&&!item.getFullDisplayName().equals(运行.getParent().getFullDisplayName())){
继续;
}
日志(“项:+Item.getFullDisplayName());
for(作业:item.getAllJobs()){
if(抽象项目的作业实例){
//日志(“作业:+Job.getFullName());
AbstractProject p=(AbstractProject)作业;
//日志(“项目:+p.getFullName());
for(AbstractBuild b:p.getBuilds()){
日志(“构建:+b.getFullDisplayName());
for(条目:b.getChangeSet()){
if(entry.getAuthor()!=null){
日志(“entry.getAuthor().getId():”+entry.getAuthor().getId());
日志(“entry.getAuthor().getDescription():”+entry.getAuthor().getDescription());
日志(“更改用户:+entry.getAuthor().getFullName());
userName=entry.getAuthor().getFullName();
打破nextItem;
}
}
}
}
}
}
}
返回用户名;
}