如何确定哪个用户使用提升的构建插件触发了提升?
How can I determine which user triggered a promotion using the promoted builds plugin?
我正在编写一个 Jenkins 插件,在某些情况下添加权限以限制用户访问。我目前有一个错误,当用户使用提升的构建插件提升构建时,插件无法按预期工作。
我有两个用户(devuser、adminuser)和两个作业(job-a、job-b)。 devuser 首先构建 job-a。然后 adminuser 提升 job-a 触发构建 job-b。
当 job-b 通过提升触发时,我尝试确定谁执行了提升。如果我查看 AbstractBuild 的原因,cause 为空,causes 有一个 UpstreamCause,即 devuser而不是 adminuser。
如何确定谁触发了促销活动?如果我查看 job-a 的 UI 中的晋升,我可以看到 adminuser 触发了晋升。我不确定如何获取 Jenkins 插件中构建的已执行促销列表。
谢谢!
虽然不完美,但我想出了一个解决方案来解决我的问题。
随着促销构建的安排,我会跟踪促销所属的构建以及触发促销的用户。
if (build.getClass() == Promotion.class) {
Promotion promotion = (Promotion) build;
RECENTLY_PROMOTED.put(getBuildId(promotion.getRootBuild()), promotion.getUserName());
return new User(promotion.getUserName());
}
安排下游作业时,我检查最近升级的构建 ID,并获取用户
UpstreamCause upstreamCause = (UpstreamCause) cause;
String upstreamBuildId = String.format("%s#%s", upstreamCause.getUpstreamProject(), upstreamCause.getUpstreamBuild());
if (RECENTLY_PROMOTED.containsKey(upstreamBuildId)) {
String promotedUser = RECENTLY_PROMOTED.get(upstreamBuildId);
RECENTLY_PROMOTED.remove(upstreamBuildId);
return new User(promotedUser);
}
我正在编写一个 Jenkins 插件,在某些情况下添加权限以限制用户访问。我目前有一个错误,当用户使用提升的构建插件提升构建时,插件无法按预期工作。
我有两个用户(devuser、adminuser)和两个作业(job-a、job-b)。 devuser 首先构建 job-a。然后 adminuser 提升 job-a 触发构建 job-b。
当 job-b 通过提升触发时,我尝试确定谁执行了提升。如果我查看 AbstractBuild 的原因,cause 为空,causes 有一个 UpstreamCause,即 devuser而不是 adminuser。
如何确定谁触发了促销活动?如果我查看 job-a 的 UI 中的晋升,我可以看到 adminuser 触发了晋升。我不确定如何获取 Jenkins 插件中构建的已执行促销列表。
谢谢!
虽然不完美,但我想出了一个解决方案来解决我的问题。
随着促销构建的安排,我会跟踪促销所属的构建以及触发促销的用户。
if (build.getClass() == Promotion.class) {
Promotion promotion = (Promotion) build;
RECENTLY_PROMOTED.put(getBuildId(promotion.getRootBuild()), promotion.getUserName());
return new User(promotion.getUserName());
}
安排下游作业时,我检查最近升级的构建 ID,并获取用户
UpstreamCause upstreamCause = (UpstreamCause) cause;
String upstreamBuildId = String.format("%s#%s", upstreamCause.getUpstreamProject(), upstreamCause.getUpstreamBuild());
if (RECENTLY_PROMOTED.containsKey(upstreamBuildId)) {
String promotedUser = RECENTLY_PROMOTED.get(upstreamBuildId);
RECENTLY_PROMOTED.remove(upstreamBuildId);
return new User(promotedUser);
}