[Jenkins] รวม Tools เจ๋งๆ ของ VSCODE ที่มาช่วยจัดการ Jenkinsfile นั้นง่ายขึ้น

สำหรับวันนี้ ผมมี Extensions ของ VSCODE ที่มาแนะนำ เพื่อช่วยให้เราสามารถจัดการ JenkinsFile ให้มันง่ายขึ้นครับ ดังนี้ครับ

อธิบายเต็มๆ มาดูต่อจากนี้ได้เลยครับ

Jenkinsfile คือ อะไร ?

  • การเขียน Code เพื่อสั่งให้ตัว Jenkins มันทำงาน โดยอิงจากภาษา Groovy (Java base) เป็นหลักครับ แต่ถ้าต้องการใช้ภาษาอื่นๆ สามารถลง Plugin มาเสริมได้ครับ
  • พอทำแบบนี้ Step การทำ CI/CD ถูกจัดเก็บเป็น Code ทำให้ และเอาไปฝาก Repository ของงานเราได้เลยครับ ข้อดี Code ไปไหน Step CI/CD ไปด้วยกันด้วย ไม่ต้องมา Config ใหม่
  • Keyword ในงานกลุ่มนี้ คือ Pipeline as Code ครับ

Jenkinsfile [formerly JenkinsFile Support] 

  • Plugin ตัวนี้ เป็นตัวที่ช่วยให้เราสามารถเขียน JenkinFile ได้ง่ายขึ้น เพราะมีตัวที่ช่วย
    • syntax highlighting
    • snippets
    • completion
    • diagnostics
  • การติดตั้ง Search จากหน้า Extension ของ VSCode ได้เลยครับ
  • Before - ดูอย่างยาก
  • After - syntax highlighting ดูง่าย ต้องมาจำ Syntax และ

Jenkins Pipeline Linter Connector

  • Plugin ตัวนี้ หน้าที่ของมันช่วยตรวจสอบความถูกต้องของ Jenkinsfile ก่อนที่เราจะ Commit เข้า Source Control อย่าง Git ครับ
  • ปัญหาที่เราเจอกันประจำ Code เทพครับ แต่ไปพังที่ ฺBuild Server นี่แหละ 555 จะเจอ Error ประมาณนี้
 Syntax error: "(" unexpected [Pipeline] }
 [Pipeline] // stage
 [Pipeline] }
 [Pipeline] // node
 [Pipeline] End of Pipeline
 ERROR: script returned exit code 2
 Finished: FAILURE

หรือ แบบอื่นๆ 

WorkflowScript: 69: expecting ''', found '\r' @ line 69, column 123.
   invest/invest-ui-winform.git"]
  • การติดตั้ง Search จากหน้า Extension ของ VSCode ได้เลยครับ
- มาดู Config ที่สำคัญครับ
  • กำหนด Config ของ Extension โดยไปที่ File > Preference > Setting หรือกดปุ่ม Ctrl ,
  • Search "Jenkins" พบ Config ดังนี้
  • แต่ละ Config มีรายละเอียด ดังนี้
KeyValue
jenkins.pipeline.linter.connector.urlURL ชอง Jenkins

https://[your_jenkins_server:port]/pipeline-model-converter/validate
jenkins.pipeline.linter.connector.crumbUrlใส่ Crumb URL ใข้กรณีที่ Jenkins เรามีป้องกัน Cross-site Request Forgery (CSRF) โดยมี Template URL ดังนี้

https://[your_jenkins_server:port]/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb))
jenkins.pipeline.linter.connector.useruser ของ jenkins แนะนำว่าใช้สิทธิต่ำๆ พอนะ
jenkins.pipeline.linter.connector.passpass ของ jenkins แนะนำว่าใช้สิทธิต่ำๆ พอนะ
jenkins.pipeline.linter.connector.tokenถ้าไม่ใช่ user + pass ใช้ Token ได้นะ แต่ของผมใช้
ภายในองค์กร เลยใช้ user + pass แหละ
jenkins.pipeline.linter.connector.strictsslติ๊ก เพื่อให้มัน Error Certificate แบบใช้ใน Private Network เราอาจจะไม่ได้กำหนด SSL ใช้มัน ก็ติ๊ก
"Set to false to allow invalid ssl connections"
  • ลองเติมค่าแต่ละอันครับ - ssl ถ้าใน Local ไม่น่าจะมีใคร Config นะครับ แต่ถ้า Deploy Jenkin บน Cloud ให้มันใช้ ssl เถอะครับ
- ทดสอบกันครับ
  • ลองเปิด Jenkinsfile ทีมีการแก้ไขทำงานมาครับ
  • จากนั้นกด Ctrl + P เพื่อเปิด Command Palette และ Search > Validate จะขึ้นตัว Validate Jenkinsfile ครับ เลือกเลยครับ
  • ตัว Extension มันส่ง Jenkinsfile ของเราไปตรวจ Syntax ที่ Server ครับ อย่างของผมมี Error ตรงบรรทัดที่ 69 ครับ มี ' เกินมา
  • ลองแก้ไข และ Validate อีกรอบครับ ถ้าไม่มี Error ตรง Output จะมีข้อความ "Jenkinsfile successfully validated." แจ้งครับ

สำหรับผู้อ่านที่ผ่านมา หากมี Extensions ดีๆ สามารถมาแนะนำกันได้นะครับ

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.