Jenkins boru hattı linter ve komutları hakkında bazı belgeler. Taahhüt etmeden önce doğrulamanız gerekiyor mu? Değilse, boru hattı çalışmadan önce linting komutunu çalıştırmak gerçekten önemsizdir ve geçmezse başarısız olur.
Jenkins, Beyansal Bir Boru Hattını gerçekte çalıştırmadan önce komut satırından doğrulayabilir veya " tüy bırakabilir" . Bu bir Jenkins CLI komutu kullanılarak veya uygun parametrelerle bir HTTP POST isteği yapılarak yapılabilir. Linter'i çalıştırmak için SSH arayüzünü kullanmanızı öneririz . Jenkins'in güvenli komut satırı erişimi için nasıl düzgün yapılandırılacağıyla ilgili ayrıntılar için Jenkins CLI belgelerine bakın .
SSH ile CLI üzerinden linting
# 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 ile bağlantı 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
Örnekler
Aşağıda, Boru Hattı Linter'in iki eylem örneği bulunmaktadır. Bu ilk örnek Jenkinsfile
, agent
bildirimin bir kısmı eksik olan geçersiz bir değer iletildiğinde linter çıktısını gösterir
.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Geçersiz Jenkinsfile için linter çıkışı
# 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 }
^
Bu ikinci örnekte, Jenkinsfile
eksik içerecek şekilde güncellenmiştir any
üzerinde agent
. Linter şimdi Boru Hattı'nın geçerli olduğunu bildiriyor.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Geçerli Jenkinsfile için linter çıkışı
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]