From edc921cf4fbf74e1cc689eca0dba527fe9f7f0d1 Mon Sep 17 00:00:00 2001 From: Shane Kim Date: Mon, 2 Nov 2015 17:11:18 -0800 Subject: [PATCH] [JENKINS-31356] Manual condition and re-execute promotion bug. doBuild checked an user for only project permission level when it had to check the approver list as well --- .../java/hudson/plugins/promoted_builds/Status.java | 11 ++++++++--- .../promoted_builds/conditions/ManualCondition.java | 5 +++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/hudson/plugins/promoted_builds/Status.java b/src/main/java/hudson/plugins/promoted_builds/Status.java index 186f8e6c..291f78a1 100644 --- a/src/main/java/hudson/plugins/promoted_builds/Status.java +++ b/src/main/java/hudson/plugins/promoted_builds/Status.java @@ -312,8 +312,14 @@ public boolean isManuallyApproved(){ * Schedules a new build. */ public void doBuild(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { - if(!getTarget().hasPermission(Promotion.PROMOTE)) - return; + + ManualCondition manualCondition=(ManualCondition) getProcess().getPromotionCondition(ManualCondition.class.getName()); + + if(!getTarget().hasPermission(Promotion.PROMOTE)) { + if (!manualCondition.getUsersAsSet().isEmpty() && !manualCondition.isInUsersList() + && !manualCondition.isInGroupList()) + return; + } JSONObject formData = req.getSubmittedForm(); @@ -321,7 +327,6 @@ public void doBuild(StaplerRequest req, StaplerResponse rsp) throws IOException, List paramValues=null; if (formData!=null){ paramValues = new ArrayList(); - ManualCondition manualCondition=(ManualCondition) getProcess().getPromotionCondition(ManualCondition.class.getName()); if (manualCondition!=null){ List parameterDefinitions=manualCondition.getParameterDefinitions(); if (parameterDefinitions != null && !parameterDefinitions.isEmpty()) { diff --git a/src/main/java/hudson/plugins/promoted_builds/conditions/ManualCondition.java b/src/main/java/hudson/plugins/promoted_builds/conditions/ManualCondition.java index da8edd5a..20e5e676 100644 --- a/src/main/java/hudson/plugins/promoted_builds/conditions/ManualCondition.java +++ b/src/main/java/hudson/plugins/promoted_builds/conditions/ManualCondition.java @@ -105,6 +105,7 @@ public PromotionBadge isMet(PromotionProcess promotionProcess, AbstractBuild /* * Check if user is listed in user list as a specific user */ - private boolean isInUsersList() { + public boolean isInUsersList() { // Current user must be in users list or users list is empty Set usersSet = getUsersAsSet(); return usersSet.contains(Hudson.getAuthentication().getName()); @@ -138,7 +139,7 @@ private boolean isInUsersList() { /* * Check if user is a member of a groups as listed in the user / group field */ - private boolean isInGroupList() { + public boolean isInGroupList() { Set groups = getUsersAsSet(); GrantedAuthority[] authorities = Hudson.getAuthentication().getAuthorities(); for (GrantedAuthority authority : authorities) {