117 lines
3.3 KiB
Groovy
117 lines
3.3 KiB
Groovy
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<String> 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;
|
|
} |