pendientes - ¿Cómo obtener el último mensaje de commit de git y evitar la creación de jenkins si el mensaje de confirmación contiene[ci skip]?
git ver archivos modificados (3)
Creo que podría hacerlo fácilmente en la configuración de trabajos de canalizaciones múltiples. Orígenes de la sucursal> Comportamientos adicionales> Sondeo ignora confirmaciones con ciertos mensajes
Traté de obtener el mensaje de confirmación de git en jenkinsfile y evitar la compilación en función del mensaje de confirmación.
env.GIT_COMMIT no devuelve los detalles de confirmación en jenkinsfile.
¿Cómo obtener el último mensaje de confirmación de git y evitar la compilación de jenkins si el mensaje de confirmación contiene [ci skip] en él?
La construcción pasará cuando [ci skip] se proporcione en el último registro de git, pero no ejecutará el código de construcción real (el reemplazo de la primera declaración de eco)
node {
checkout scm
result = sh (script: "git log -1 | grep ''//[ci skip//]''", returnStatus: true)
if (result != 0) {
echo "performing build..."
} else {
echo "not running..."
}
}
Tuve el mismo problema. Estoy usando tuberías. Resolví este problema implementando una biblioteca compartida .
El código de la biblioteca es este:
// vars/ciSkip.groovy
def call(Map args) {
if (args.action == ''check'') {
return check()
}
if (args.action == ''postProcess'') {
return postProcess()
}
error ''ciSkip has been called without valid arguments''
}
def check() {
env.CI_SKIP = "false"
result = sh (script: "git log -1 | grep ''.*//[ci skip//].*''", returnStatus: true)
if (result == 0) {
env.CI_SKIP = "true"
error "''[ci skip]'' found in git commit message. Aborting."
}
}
def postProcess() {
if (env.CI_SKIP == "true") {
currentBuild.result = ''NOT_BUILT''
}
}
Entonces, en mi Jenkinsfile:
pipeline {
stages {
stage(''prepare'') { steps { ciSkip action: ''check'' } }
// other stages here ...
}
post { always { ciSkip action: ''postProcess'' } }
}
Como puede ver, la compilación está marcada como NOT_BUILT
. Puede cambiarlo a ABORTED
si lo prefiere, pero no se puede establecer en SUCCESS
porque el resultado de una construcción solo puede empeorar