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 agentDeklaration 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 anyberü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...]