import org.jenkinsci.plugins.pipeline.modeldefinition.Utils import org.jenkinsci.plugins.pipeline.modeldefinition.when.impl.ChangeSetConditional void when(Boolean condition, body) { Map config = [:] body.resolveStrategy = Closure.OWNER_FIRST body.delegate = config if (condition) { body() } else { Utils.markStageSkippedForConditional(STAGE_NAME) } } @NonCPS String getBuildUser() { def build = currentBuild.rawBuild String buildUser = '' // On essaie de récupérer l'utilisateur à l'origine de l'exécution du job try { def cause = build.getCause(hudson.model.Cause.UserIdCause.class) buildUser = cause.getUserName() } catch (Exception ex) { // On ignore l'erreur } if (buildUser == '') { // Si on a pas réussi à retrouver l'utilisateur, on récupère celui du commit courant try { def committerUsername = sh(script: 'git --no-pager show -s --format=\'%ae\' | cut -d\'@\' -f1', returnStdout: true).trim() buildUser = committerUsername } catch (Exception ex) { // On ignore l'erreur } } if (buildUser == '') { // Par défaut, on considère que jenkins est à l'origine du job buildUser = 'jenkins' } return buildUser } String getProjectVersionDefaultChannel() { switch (env.BRANCH_NAME) { case 'develop': return 'develop' case 'testing': case 'staging': return 'testing' case 'stable': case 'master': return 'stable' default: return env.BRANCH_NAME.toLowerCase().replaceAll('(_|-| )+', '') } } String getProjectVersionShortChannel(String channel) { switch (channel) { case 'develop': return 'dev' case 'testing': case 'staging': return 'tst' case 'stable': case 'master': return 'stb' default: return channel.toLowerCase().replaceAll('(a|e|i|o|u|y_|-| )+', '').take(3) } } List getProjectVersionTags(String overrideChannel = '') { String channel = overrideChannel ? overrideChannel : getProjectVersionDefaultChannel() String shortChannel = getProjectVersionShortChannel(channel) String currrentCommitDate = sh(script: 'git show -s --format=%ct', returnStdout: true).trim() String dateVersion = sh(script: "TZ=Europe/Paris date -d '@${currrentCommitDate}' +%Y.%-m.%-d", returnStdout: true).trim() String timestamp = sh(script: "TZ=Europe/Paris date -d '@${currrentCommitDate}' +%-H%M", returnStdout: true).trim() String shortCommit = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() String longTag = "${dateVersion}-${channel}.${timestamp}.${shortCommit}" String shortTag = "${dateVersion}-${shortChannel}.${timestamp}" return [ longTag, shortTag ] } Boolean isPR() { return env.BRANCH_NAME ==~ /^PR-.*$/ } def hasChanges(String pattern) { def changeLogSets = currentBuild.changeSets def conditional = new ChangeSetConditional(pattern) for (set in changeLogSets) { def entries = set.items for (entry in entries) { if (conditional.changeSetMatches(entry, pattern, true)) { return true; } } } return false; }