jenkins

เนื่องจากใช้งาน Jenkins เพื่อสร้าง Continuous integration Server ขึ้นมาใช้งานนั้น
คำถามที่ถูกถามมากที่สุดคือ ต้องติดตั้ง Plugin อะไรบ้าง
ซึ่งส่วนใหญ่ที่ผมตอบกลับไปก็คือ แล้วต้องการใช้หรือทำอะไรบ้าง

แต่ถ้ามองภาพโดยรวมแล้ว ผมคิดว่า เราน่าจะมาเริ่มที่สถิติการใช้งาน
หรือการติดตั้งจริงๆ จากคนทั้งโลกดีกว่า ว่าเขาใช้อะไรกันบ้าง
น่าจะทำให้เราเห็นความจริงที่น่าเชื่อถือได้มากขึ้น
รวมทั้งปิดท้ายด้วยสิ่งที่ผมใช้งาน

เริ่มต้นด้วยการดูข้อมูลการใช้งาน plugin

ถ้าใครที่เคยใช้งาน Jenkins จะรู้ว่ามี plugin ให้ใช้จำนวนมาก
จากระบบ Statatistic ของ Jenkins
ซึ่งได้สรุปจำนวนการใช้งานหรือการติดตั้งของ plugin ไว้ในทุกๆ เดือน
แต่การแสดงผลนั้นแย่มากๆ ใครสนใจจะทำ
แนะนำให้ทำการดึงข้อมูลในรูปแบบ JSON ไปประมวลผล
และแสดงผลในรูปแบบกราฟที่สวยงามได้
โดยข้อมูลอยู่ที่นี่  Plugin Installation Trend

สามารถดูวิธีการประมวลผลข้อมูลได้จากที่นี่ Jenkins Infra Statistic 

มาดูสิ่งที่ผมต้องการดีกว่า นั่นคือข้อมูลการใช้งาน plugin

เริ่มด้วยข้อมูลกลุ่มแรก คือ มีจำนวนการติดตั้งมากกว่า 10,000 ครั้งขึ้นไป
โดยข้อมูลที่สรุปมานั้นคือ การใช้งานประจำเดือนพฤษภาคม ปี 2557
ประกอบไปด้วย  plugin 39 ตัว ดังนี้

Screen Shot 2557-06-23 at 10.54.30 PM

จาก plugin ทั้ง 39 ตัวนั้น พบว่า เป็น plugin พื้นฐาน
ซึ่งจะถูกติดตั้งให้เมื่อเริ่มใช้งาน Jenkins อยู่แล้ว
แต่ตัวที่น่าสนใจคือ

1. Git และ Git-client ที่ถูกติดตั้งจำนวนมาก
นั่นหมายความว่า Git นั้นได้รับความนิยมอย่าางสูง
และมีการใช้งาน github-api  เยอะเช่นกัน
เนื่องจากทำการเก็บ sourcecode ไว้ที่ github.com

2. Greenballs 
คือ plugin fancy ที่เปลี่ยนการแสดงผลสถานะของ project
เป็นสีเขียวและสีแดง

3. Sonar
เป็น plugin ที่ใช้เชื่อมต่อกับ Sonarqube
สำหรับการวิเคราะห์และตรวจสอบ sourcecode
ผมแนะนำให้นำมาใช้งานทันที เพื่อเพิ่มคุณภาพของระบบที่เราพัฒนา

4. พวก Sourcecode analysis
เช่น cobertura, checkstyle, xunit, pmd, violations, msbuild และ findbugs

5.  Build pipeline  
สำหรับแสดงผลของขั้นตอนการ build และ deploy

ดังนั้นจึงพอสามารถสรุปได้ว่า สถิติการติดตั้งในอันดับต้นๆ
ล้วนเป็น plugin พื้นฐานต่อการใช้งาน jenkins ทั้งนั้น

และเมื่อไปดู plugin ที่อยู่แบบ longtail แล้วจะพบว่าเยอะมาก

ซึ่งทำให้เห็นว่ามีการนำ Jenkins ไปใช้งานเฉพาะทางเยอะมาก
และสามารถใช้งานร่วมกับระบบงานที่พัฒนาด้วยภาษาโปรแกรมอะไรก็ได้
ตัวอย่างข้อมูล เช่น

Screen Shot 2557-06-23 at 10.45.56 PM

 

ผมลองตัวข้อมูลบางส่วนมาให้ดูรายละเอียดชัดๆ ดังรูป

Screen Shot 2557-06-23 at 10.21.25 PM

การใช้งาน Plugin เยอะและกระจัดกระจายแบบนี้ แล้วมีที่แนะนำไหม  ?

ส่วนตัวของผมมี plugin ที่ผมใช้งานประจำ ซึ่งขอแนะนำดังนี้
โดยไม่ขอซ้ำกับข้างบน ที่ต้องติดตั้งกันอยู่แล้วนะ

1.  Multiple SCM
ทำให้สามารถดึงข้อมูล หรือ sourcecode    จากหลายๆ repository ใน 1 project
ซึ่งอำนวยความสะดวกมากยิ่งขึ้น

2. Disk Usage
สำหรับเก็บข้อมูลการใช้งาน disk ที่เก็บข้อมูล
ช่วยทำให้เราเห็นว่า server ที่ใช้งานอยู่มีพื้นที่เพียงหรือไม่

3. Robot Framework
เนื่องจากผมทำการพัฒนา ATDD ด้วย Robot framework
ดังนั้น plugin ตัวนี้จึงขาดไปไม่ได้ เพื่อทำการอ่านข้อมูลจาก report ของ Robot framework มาแสดงผล
โดยสามารถกำหนดค่า Threshold ได้สำหรับตัดสินใจว่าผ่านหรือไม่ผ่านการตรวจสอบ

4. Build Monitor
เป็น Dashboard ที่ทำให้ทีมเห็นว่าแต่ละ project มีสถานะเป็นอย่างไร
ผมใช้ plugin ตัวนี้เพื่อแสดงให้ใครก็ตามเห็นสุขภาพของ project อยู่เสมอ

5. Sound 
เป็น fancy plugin อีกตัว ที่แนะนำให้ใช้เลย
เพื่อทำให้ทุกๆ คนรู้ว่าตอนนี้ project เป็นอย่างไร ซึ่งจะมีเสียงให้ใช้มากมาย

ลองติดตั้งและใช้งาน plugin เหล่านี้ดูครับ
เพื่อประโยชน์สุข ของทุกๆ คนครับ

โดยสรุปแล้ว

จากข้อมูลการติดตั้ง plugin ของ Jenkins ก็ทำให้เห็นว่า
ผู้ที่นำ Jenkins ไปใช้งานนั้น มีรูปแบบและแนวทางในการพัฒนาอย่างไรบ้าง เช่น

  • มีการใช้งาน SCM ( Sourcecode  Control Management ) ซึ่งนิยมใช้ Git เป็นจำนวนมาก
  • มีการใช้งาน plugin ที่หลากหลาย นั่นหมายถึงว่า Jenkins นั้นยึดหยุ่นต่อการใช้งาน

แล้วคุณล่ะนำ Jenkins ไปใช้งานแล้วหรือยัง !!!!!