Voici une documentation sur le linter du pipeline Jenkins et ses commandes. Devez-vous valider avant un commit? Sinon, il serait vraiment trivial d'exécuter la commande linting avant l'exécution de votre pipeline, et échouera simplement si elle ne passe pas.
Jenkins peut valider, ou " lint ", un pipeline déclaratif à partir de la ligne de commande avant de l'exécuter. Cela peut être fait à l'aide d'une commande CLI Jenkins ou en effectuant une requête HTTP POST avec les paramètres appropriés. Nous avons recommandé d'utiliser l' interface SSH pour exécuter le linter. Consultez la documentation Jenkins CLI pour plus de détails sur la façon de configurer correctement Jenkins pour un accès sécurisé en ligne de commande.
Linting via la CLI avec 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 via HTTP POST en utilisant 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
Exemples
Voici deux exemples de Pipeline Linter en action. Ce premier exemple montre la sortie du linter lorsqu'il est passé un invalide
Jenkinsfile
, celui qui manque une partie de la agent
déclaration.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Sortie Linter pour fichier Jenkins non valide
# 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 }
^
Dans ce second exemple, l' Jenkinsfile
a été mis à jour pour inclure les disparus any
sur agent
. Le linter signale maintenant que le Pipeline est valide.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Sortie Linter pour fichier Jenkins valide
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]