Hier finden Sie eine Dokumentation zu Jenkins Pipeline Linter und seinen Befehlen. Müssen Sie vor einem Commit validieren ? Wenn nicht, wäre es wirklich trivial, den Linting-Befehl auszuführen, bevor Ihre Pipeline ausgeführt wird, und einfach zu scheitern, wenn er nicht bestanden wird.
Jenkins kann eine deklarative Pipeline über die Befehlszeile validieren oder " fusseln ", bevor sie tatsächlich ausgeführt wird. Dies kann mit einem Jenkins-CLI-Befehl oder durch eine HTTP-POST-Anforderung mit entsprechenden Parametern erfolgen. Wir empfehlen die Verwendung der SSH-Schnittstelle , um den Linter auszuführen. Weitere Informationen zum ordnungsgemäßen Konfigurieren von Jenkins für den sicheren Befehlszeilenzugriff finden Sie in der Jenkins-CLI-Dokumentation .
Fuseln über die CLI mit 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
Fusseln über HTTP POST mit 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
Beispiele
Im Folgenden finden Sie zwei Beispiele für den Pipeline Linter in Aktion. Dieses erste Beispiel zeigt die Ausgabe des Linter, wenn ein ungültiger Wert übergeben wird
Jenkinsfile
, bei dem ein Teil der agent
Deklaration fehlt .
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Linterausgabe für ungültiges Jenkinsfile
# 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 }
^
In diesem zweiten Beispiel wird die Jenkinsfile
aktualisiert, um die fehlenden zu any
berücksichtigen agent
. Der Linter meldet nun, dass die Pipeline gültig ist.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Linter-Ausgabe für gültige Jenkins-Datei
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]