From 73e922b8ac4274a2c77e7e17ce9ba923080a91f4 Mon Sep 17 00:00:00 2001 From: Rao Venkata Krishna Date: Mon, 19 Mar 2018 15:38:59 +0100 Subject: [PATCH] Added GERRIT_EVENT_FILE_BASED environment variable GERRIT_EVENT_FILE_BASED is set to True if the build is triggered due to a file-based event. Otherwise, False. --- .../trigger/hudsontrigger/GerritTrigger.java | 41 +++++++++++++++++++ .../GerritTriggerParameters.java | 10 ++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java index f3c875cf2..8d1fef199 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java @@ -143,6 +143,7 @@ public class GerritTrigger extends Trigger { * abort running jobs by setting this to 'false'. */ public static final String JOB_ABORT = GerritTrigger.class.getName() + "_job_abort"; + private transient GerritTriggerRuntimeParam triggerParamRuntime = new GerritTriggerRuntimeParam(); //! Association between patches and the jobs that we're running for them private transient RunningJobs runningJobs = new RunningJobs(); @@ -988,6 +989,10 @@ public boolean isInteresting(GerritTriggeredEvent event) { changeBasedEvent.getFiles( new GerritQueryHandler(getServerConfig(event))))) { logger.trace("According to {} the event is interesting.", p); + if (triggerParamRuntime == null) { + triggerParamRuntime = new GerritTriggerRuntimeParam(); + } + triggerParamRuntime.setfileBasedMatch(true); return true; } } else { @@ -1658,6 +1663,14 @@ public String getBuildNotBuiltMessage() { return buildNotBuiltMessage; } + /** + * + * @return True or False + */ + public boolean getfileBasedMatch() { + return this.triggerParamRuntime.getfileBasedMatch(); + } + /** * Message to write to Gerrit when all builds are not built. * @@ -2215,6 +2228,34 @@ public List getGerritEventDescrip } } + /** + * Class for maintaining the Gerrit Trigger parameters. + * These are parameters whose values are known only after querying Gerrit, for example, + * the criterion by which something was 'isInteresting', say because the file modified + * in a changeset matched the file-based trigger file list. + */ + public class GerritTriggerRuntimeParam { + private boolean fileBasedMatch = false; + + /** + * Set file based match if found so. + * + * @param i true or false + */ + public void setfileBasedMatch(boolean i) { + this.fileBasedMatch = i; + } + + /** + * Returns true or false. + * + * @return true or false + */ + public boolean getfileBasedMatch() { + return this.fileBasedMatch; + } + } + /** * Class for maintaining and synchronizing the runningJobs info. * Association between patches and the jobs that we're running for them. diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java index b512c9c63..7528f9e58 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java @@ -238,7 +238,11 @@ public enum GerritTriggerParameters { /** * Comment posted to Gerrit in a comment-added event. */ - GERRIT_EVENT_COMMENT_TEXT; + GERRIT_EVENT_COMMENT_TEXT, + /** + * Set to true if file based match. + */ + GERRIT_EVENT_FILE_BASED; private static final Logger logger = LoggerFactory.getLogger(GerritTriggerParameters.class); @@ -373,6 +377,7 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p boolean escapeQuotes = false; ParameterMode commitMessageMode = ParameterMode.BASE64; ParameterMode changeSubjectMode = ParameterMode.PLAIN; + boolean getfileBasedMatch = false; ParameterMode commentTextMode = ParameterMode.BASE64; if (project != null) { GerritTrigger trigger = GerritTrigger.getTrigger(project); @@ -382,9 +387,12 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p commitMessageMode = trigger.getCommitMessageParameterMode(); changeSubjectMode = trigger.getChangeSubjectParameterMode(); commentTextMode = trigger.getCommentTextParameterMode(); + getfileBasedMatch = trigger.getfileBasedMatch(); } } + GERRIT_EVENT_FILE_BASED.setOrCreateStringParameterValue( + parameters, String.valueOf(getfileBasedMatch), escapeQuotes); GERRIT_EVENT_TYPE.setOrCreateStringParameterValue( parameters, gerritEvent.getEventType().getTypeValue(), escapeQuotes); GERRIT_EVENT_HASH.setOrCreateStringParameterValue(