Ось деяка документація про лінійку трубопроводів Дженкінса та його команди. Чи потрібно перевірити перед фіксацією? Якщо ні, то було б справді тривіально запустити команду зв’язування перед запуском трубопроводу, і просто вийти з ладу, якщо вона не пройде.
Дженкінс може перевірити або « втягнути » декларативний конвеєр із командного рядка, перш ніж його фактично запустити. Це можна зробити за допомогою команди Jenkins CLI або за допомогою HTTP POST-запиту з відповідними параметрами. Ми рекомендуємо використовувати інтерфейс SSH для запуску лінеру. Детальну інформацію про те, як правильно налаштувати Jenkins для безпечного доступу до командного рядка, див. У документації Jenkins CLI .
Зв'язок через 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
Підключення через 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
Приклади
Нижче наведено два приклади дії трубопроводу. Цей перший приклад показує вихід лінійки, коли він передається недійсним
Jenkinsfile
, той, на якому відсутня частина agent
декларації.
Дженкінсфіл
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
. Тепер лінійка повідомляє, що трубопровід є дійсним.
Дженкінсфіл
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Вихід лінтера для дійсного 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...]