Вот некоторая документация по линтеру Jenkins и его командам. Вам нужно проверить перед фиксацией? В противном случае было бы действительно тривиально выполнить команду linting до запуска конвейера и просто потерпеть неудачу, если она не проходит.
Jenkins может проверять или « задерживать » декларативный конвейер из командной строки перед его фактическим запуском. Это можно сделать с помощью команды CLI Jenkins или с помощью HTTP-запроса POST с соответствующими параметрами. Мы рекомендуем использовать интерфейс SSH для запуска линтера. Обратитесь к документации CLI Jenkins для получения подробной информации о том, как правильно настроить Jenkins для безопасного доступа из командной строки.
Linting через CLI с 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 через HTTP POST с помощью 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
Примеры
Ниже приведены два примера работы Pipeline Linter в действии. В этом первом примере показан вывод linter, когда ему передано недопустимое значение
Jenkinsfile
, в котором отсутствует часть agent
объявления.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Вывод линтера для неверного файла 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 }
^
В этом втором примере, Jenkinsfile
был обновлен , чтобы включить недостающее any
на agent
. Теперь линтер сообщает, что конвейер действителен.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Вывод Linter для действительного Jenkinsfile
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]