Aquí hay documentación sobre el linter de la tubería de Jenkins y sus comandos. ¿Necesita validar antes de una confirmación? De lo contrario, sería realmente trivial ejecutar el comando de linting antes de que se ejecute su canalización, y simplemente fallar si no se aprueba.
Jenkins puede validar, o " pelusa ", una canalización declarativa desde la línea de comandos antes de ejecutarla realmente. Esto se puede hacer usando un comando Jenkins CLI o haciendo una solicitud HTTP POST con los parámetros apropiados. Recomendamos usar la interfaz SSH para ejecutar el linter. Consulte la documentación de la CLI de Jenkins para obtener detalles sobre cómo configurar adecuadamente Jenkins para un acceso seguro a la línea de comandos.
Linting a través de la CLI con SSH
# ssh (Jenkins CLI)
# JENKINS_SSHD_PORT=[sshd port on master]
# JENKINS_HOSTNAME=[Jenkins master hostname]
ssh -p $JENKINS_SSHD_PORT $JENKINS_HOSTNAME declarative-linter < Jenkinsfile
Linting a través de HTTP POST usando curl
# curl (REST API)
# Assuming "anonymous read access" has been enabled on your Jenkins instance.
# JENKINS_URL=[root URL of Jenkins master]
# JENKINS_CRUMB is needed if your Jenkins master has CRSF protection enabled as it should
JENKINS_CRUMB=`curl "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"`
curl -X POST -H $JENKINS_CRUMB -F "jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-model-converter/validate
Ejemplos
A continuación se muestran dos ejemplos de Pipeline Linter en acción. Este primer ejemplo muestra la salida del linter cuando se pasa un inválido
Jenkinsfile
, uno al que le falta parte de la agent
declaración.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Salida de Linter para un archivo Jenkins no válido
# pass a Jenkinsfile that does not contain an "agent" section
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Errors encountered validating Jenkinsfile:
WorkflowScript: 2: Not a valid section definition: "agent". Some extra configuration is required. @ line 2, column 3.
agent
^
WorkflowScript: 1: Missing required section "agent" @ line 1, column 1.
pipeline }
^
En este segundo ejemplo, el Jenkinsfile
ha sido actualizado para incluir la falta any
de agent
. El linter ahora informa que la canalización es válida.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Salida de Linter para un archivo Jenkins válido
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]