Berikut adalah beberapa dokumentasi tentang linter pipa Jenkins dan perintahnya. Apakah Anda perlu memvalidasi sebelum komit? Jika tidak, itu akan sangat sepele untuk menjalankan perintah linting sebelum pipeline Anda berjalan, dan cukup gagal jika tidak lulus.
Jenkins dapat memvalidasi, atau " lint ", sebuah Declarative Pipeline dari baris perintah sebelum benar-benar menjalankannya. Ini dapat dilakukan dengan menggunakan perintah Jenkins CLI atau dengan membuat permintaan HTTP POST dengan parameter yang sesuai. Kami merekomendasikan menggunakan antarmuka SSH untuk menjalankan linter. Lihat dokumentasi Jenkins CLI untuk detail tentang cara mengkonfigurasi Jenkins dengan benar untuk akses baris perintah yang aman.
Linting via CLI dengan 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 melalui HTTP POST using 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
Contohnya
Di bawah ini adalah dua contoh Pipeline Linter yang sedang beraksi. Contoh pertama ini menunjukkan output dari linter ketika dilewatkan tidak valid
Jenkinsfile
, yang hilang bagian dari agent
deklarasi.
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Keluaran linter untuk Jenkinsfile tidak valid
# 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 }
^
Dalam contoh kedua ini, Jenkinsfile
telah diperbarui untuk memasukkan yang hilang any
pada agent
. Linter sekarang melaporkan bahwa Pipeline itu valid.
Jenkinsfile
pipeline {
agent any
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
Keluaran linter untuk Jenkinsfile yang valid
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]