我正在编写一个Jenkins插件,该插件在某些情况下会添加限制用户访问权限。我目前有一个错误,当用户使用提升的构建插件提升构建时,插件无法按预期工作。
我有两个用户(devuser,adminuser)和两个作业(job-a,job-b)。 devuser首先构建job-a。然后,adminuser会提升job-a,触发job-b的构建。
当通过促销触发job-b时,我会尝试确定谁执行了促销。如果我查看AbstractBuild的原因,原因为空,原因有一个UpstreamCause,它是 devuser 而不是管理用户即可。
如何确定是谁触发了促销活动?如果我查看UI中的促销活动,我可以看到 adminuser 触发了促销活动。我不确定如何获取Jenkins插件中构建的已执行促销列表。
谢谢!
答案 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());
}