如何使用提升的构建插件确定哪个用户触发了促销?

时间:2016-05-10 19:40:00

标签: jenkins jenkins-plugins

我正在编写一个Jenkins插件,该插件在某些情况下会添加限制用户访问权限。我目前有一个错误,当用户使用提升的构建插件提升构建时,插件无法按预期工作。

我有两个用户(devuser,adminuser)和两个作业(job-a,job-b)。 devuser首先构建job-a。然后,adminuser会提升job-a,触发job-b的构建。

当通过促销触发job-b时,我会尝试确定谁执行了促销。如果我查看AbstractBuild的原因,原因为空,原因有一个UpstreamCause,它是 devuser 而不是管理用户即可。

如何确定是谁触发了促销活动?如果我查看UI中的促销活动,我可以看到 adminuser 触发了促销活动。我不确定如何获取Jenkins插件中构建的已执行促销列表。

谢谢!

1 个答案:

答案 0 :(得分:0)

虽然不完美,但我想出了一个能够解决我问题的解决方案。

在安排促销构建时,我会跟踪促销所属的构建以及触发促销的用户。

int main(){ 
    try{
        LibraryGuard lg;
        // object alive here
        try{
            //other code

        }catch(...){

        }
    }catch(...){

    }

}

当安排下游作业时,我检查最近提升的构建ID,并获取用户

if (build.getClass() == Promotion.class) {
  Promotion promotion = (Promotion) build;
  RECENTLY_PROMOTED.put(getBuildId(promotion.getRootBuild()), promotion.getUserName());
  return new User(promotion.getUserName());
}