Oto dokumentacja na temat linijki rurociągu Jenkins i jej poleceń. Czy musisz sprawdzić przed zatwierdzeniem? Jeśli nie, uruchomienie polecenia linting przed uruchomieniem potoku byłoby naprawdę trywialne, a po prostu nie powiedzie się, jeśli nie przejdzie.
Jenkins może potwierdzić, lub „ szarpie ”, deklaratywny Pipeline z linii poleceń, zanim faktycznie uruchomienie go. Można to zrobić za pomocą komendy CLI Jenkinsa lub przez wysłanie żądania HTTP POST z odpowiednimi parametrami. Zalecamy użycie interfejsu SSH do uruchomienia lintera. Zobacz dokumentację interfejsu CLI Jenkins, aby uzyskać szczegółowe informacje na temat prawidłowej konfiguracji Jenkins dla bezpiecznego dostępu z wiersza poleceń.
Linting przez CLI z 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 przez HTTP POST przy użyciu 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
Przykłady
Poniżej znajdują się dwa przykłady działania rurociągu. Ten pierwszy przykład pokazuje wynik wkładki, gdy jest ona przekazywana nieprawidłowo
Jenkinsfile
, której brakuje części agent
deklaracji.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Wyjście liniowej dla niepoprawnego pliku Jenkins
# 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 }
^
W tym drugim przykładzie, Jenkinsfile
został uzupełniony o brakujące any
na agent
. Linter informuje teraz, że rurociąg jest prawidłowy.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Wyjście liniowe dla prawidłowego pliku Jenkins
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]