From b4899a1f75a567cb60b885d3df45a53f8ccc262a Mon Sep 17 00:00:00 2001 From: Markus Ebenhoeh Date: Sun, 15 Nov 2015 12:23:32 +1100 Subject: [PATCH] fallback to after sha on null checkout sha [FIXED gitlab-plugin-126] --- .../gitlabjenkins/GitLabPushTrigger.java | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java b/src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java index fd79ac4..4ea7ee6 100644 --- a/src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java +++ b/src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java @@ -262,15 +262,9 @@ public class GitLabPushTrigger extends Trigger> { actions.add(parametersAction); RevisionParameterAction revision; - if (req.getLastCommit() !=null) { - revision = new RevisionParameterAction(req.getLastCommit().getId()); - } else { - if (req.getCheckout_sha().contains("0000000000000000000000000000000000000000") ){ - // no commit and no checkout sha, a Tag was deleted, so no build need to be triggered - LOGGER.log(Level.INFO, "GitLab Push {0} has been deleted, skip build .", req.getRef()); - return null; - } - revision = new RevisionParameterAction(req.getCheckout_sha()); + revision = createPushRequestRevisionParameter(job, req); + if (revision==null) { + return null; } actions.add(revision); @@ -278,10 +272,38 @@ public class GitLabPushTrigger extends Trigger> { return actionsArray; } + }); } } + public RevisionParameterAction createPushRequestRevisionParameter(Job job, GitLabPushRequest req) { + RevisionParameterAction revision = null; + + if (req.getLastCommit() !=null) { + revision = new RevisionParameterAction(req.getLastCommit().getId()); + } else { + if (req.getCheckout_sha() != null) { + if (req.getCheckout_sha().contains("0000000000000000000000000000000000000000")) { + // no commit and no checkout sha, a Tag was deleted, so no build need to be triggered + LOGGER.log(Level.INFO, "GitLab Push {0} has been deleted, skip build .", req.getRef()); + return null; + } + revision = new RevisionParameterAction(req.getCheckout_sha()); + } else if (req.getBefore() != null + && req.getBefore().contains("0000000000000000000000000000000000000000")) { + // new branches + revision = new RevisionParameterAction(req.getAfter()); + } else { + LOGGER.log(Level.WARNING, + "unknown handled situation, dont know what revision to build for req {0} for job {1}", + new Object[] {req, (job!=null?job.getFullName():null)}); + return null; + } + } + return revision; + } + // executes when the Trigger receives a merge request public void onPost(final GitLabMergeRequest req) { if (triggerOnMergeRequest) {