นี่คือเอกสารบางส่วนเกี่ยวกับการวางท่อส่งของเจนกินส์และคำสั่ง คุณจำเป็นต้องตรวจสอบก่อนที่จะส่งมอบหรือไม่? หากไม่เป็นเช่นนั้นจะเป็นเรื่องเล็กน้อยที่จะรันคำสั่ง linting ก่อนที่ไพพ์ไลน์ของคุณจะทำงานและจะล้มเหลวหากไม่ผ่าน
Jenkins สามารถตรวจสอบหรือ " lint " Pipeline Declarative จากบรรทัดคำสั่งก่อนที่จะรันจริง สิ่งนี้สามารถทำได้โดยใช้คำสั่ง Jenkins CLI หรือทำการร้องขอ HTTP POST พร้อมพารามิเตอร์ที่เหมาะสม เราแนะนำให้ใช้อินเตอร์เฟส SSHเพื่อเรียกใช้ linter ดูเอกสารประกอบของJenkins CLIสำหรับรายละเอียดเกี่ยวกับวิธีกำหนดค่า Jenkins อย่างเหมาะสมสำหรับการเข้าถึงบรรทัดคำสั่งอย่างปลอดภัย
ผ้าสำลีผ่าน 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
ตัวอย่าง
ด้านล่างนี้เป็นตัวอย่างการใช้งาน Pipinter Linter ตัวอย่างแรกนี้แสดงเอาท์พุทของ linter เมื่อมันผ่านการไม่ถูกต้อง
Jenkinsfile
หนึ่งที่ขาดหายไปเป็นส่วนหนึ่งของการagent
ประกาศ
Jenkinsfile
pipeline {
agent
stages {
stage ('Initialize') {
steps {
echo 'Placeholder.'
}
}
}
}
เอาต์พุต Linter สำหรับ 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
ตอนนี้ linter รายงานว่า Pipeline นั้นถูกต้อง
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...]