Tossapon Nuanchuay
ntossapo
Published in
3 min readJul 14, 2016

--

ครั้งแรกกับ Jenkins

สวัสดีครับ ผมขาดการเขียนบล็อกมานานพอสมควรเพราะติดงาน เยอะมาก ๆ แต่วันนี้มีเวลานิดหน่อยเลยเลือกเรื่องสั้นๆ มานำเสนอครับ
ผมได้ยิน jenkins และการทำ continuous integration(ci) เมื่อตอนไปฝึกฝนที่ THE GEEK BASE เมื่อตอนเรียนปี 2

ตอนนั้นไม่ได้สนใจไรมากเลยไม่ค่อยเข้าใจเจ้า jenkins เท่าไหร
2–3 สัปดาห์มานี้ผมได้ลองเล่นเจ้าตัว jenkins และการทำ ci มานิดๆหน่อยๆ อยากจะแบ่งปันให้เพื่อนๆได้ลองเล่นกัน

หากใครไม่รู้จัก continuous integration ลองอ่าน จากพี่ปุ๋ยดูนะครับ
หรือลองอ่านจาก wikipedia
ส่วน jenkins เป็น tool ที่ทำให้เราทำ ci ได้ง่ายและเร็วขึ้นครับ
โดยตัว jenkins ที่ผมเอาไปใช้ คือเอาไปใช้เป็นตัวควบคุมการ test, build, monitor ครับ
ลองมาดูกัน
การติดตั้ง jenkins บน ubuntu ตาม document นี้เลยครับ

ผมมีชุด code อยู่ชุดหนึ่งประกอบด้วย src ที่เป็น api และ test ประมาณนี้ครับ

ซึ่งวาง project structure ในแบบภาษา go และอัพโหลด source code ไว้บน github ครับ
จากนั้น ผมเข้าไปที่ jenkins ของผม
login อะไรเรียบร้อย ผมก็ New item สำหรับโปรเจคนี้ครับ
ใส่ชื่อของ item ครับและเลือก Freestyle

jenkins จะนำเข้าสู่หน้า configuration ตรงนี้สำคัญ

ส่วนแรก General เป็นข้อมูลพื้ยฐานทั่วไปครับ
ตรงนี้ผมตั้งค่า project name, Description
ถ้าเป็น Github Project ก็ติ๊กแล้วก็ใส่ URL ของหน้า project ใน github ด้วยนะครับ
“Execute concurrent builds if necessary” อันนี้หมายถึงสามารถ build แบบขนาน พร้อม ๆ กันได้ครับ

ส่วนต่อไปตั้งค่าเกี่ยวกับ source code management ครับ
ผมเลือกใช้ git
ตั้งค่า repository url
กับ credential โดยใช้แบบ username และ password ของ github ครับ
branches to build ผมจะ build branch master เพื่อดูว่า code ที่จะ merge กับ master นั้นโอเคไหมครับ test ผ่านรึปล่าว
ถ้า project ของท่านๆ ใช้ svn หรือ hg ก็เลือก tool ให้ถูกนะครับ

ส่วน Build Trigger เป็นเหตุการณ์ที่จะ build ครับ
ผมจะให้มัน build เมื่อผม push code ขึ้น github ผมก็จะเลือกที่
Build when a change is pushed to GitHub
และ
Poll SCM

ในส่วนของ build นั้นผมใช้ execute shell ครับ
โดยเขียน script การ build ของโปรเจคครับ เป็นลำดับขั้นตอน
ผมของจะมีการ set environment เป็นอันดับแรก
จากนั้นติดตั้ง library, dependency ต่างๆ
จากนั้นใช้คำสั่ง go test เพื่อทดสอบชุด code ครับ

อันนี้แล้วแต่ภาษาและรูปแบบวิธีในการ build นะครับ

จากนั้น save ได้เลยครับ

จากนั้นลอง build ดูเลยครับ โดยกลับไปที่หน้าแรกและกด icon ที่อยู่ด้านขวา(นาฬิกากับสีเหลี่ยมเขียวๆ)
รอมัน build ก็ใช้เวลาสักพักหนึ่ง ขึ้นอยู่กับ ชนิดของโปรเจค และขนาดครับ

เมื่อ build เสร็จก็จะขึ้นวงกลม
สีแดงหมายถึง build ไม่ผ่านครับ
สีน้ำเงินคือ build ผ่านครับ

ถ้า build ไม่ผ่านสามารถเข้าไปที่โปรเจค >> build history ที่ไม่ผ่าน >> console output
เราสามารถดูได้ว่า ด้วยเหตุใดภึง build ไม่ผ่านครับ

สำหรับการ build หลังจาก push code ขึ้น github, bitbucket จะต้องเข้าไป set ค่าที่เว็บนิดหน่อยครับ
โดยไปที่ github/bitbucket ของเรา >> setting >> webhooks & services
เพิ่ม webhook แล้วใส่ url นี้ครับ
http://jenkins-host/github-webhook/
ถ้าเป็น bitbucket จะต้องลง plug-ins ของ bitbucket และวิธีเดียวกันกับ github ครับแต่ใช้ url นี้ครับ
http://jenkins-host/bitbucket-hook/

ผมแนะนำให้ติดตั้ง plug-ins Build Monitor View นี้ด้วยครับ จะทำให้การทำงานของเรา สนุกและตื่นเต้น มากขึ้นครับ
หลังจากติดตั้ง เราสามารถเพิ่ม view ได้โดยการคลิก tab +
ใส่ view name และเลือก Build Monitor View
และเลือก Jobs ที่ต้องการแสดงใน view นี้ครับ

ตั้งค่าอะไรเสร็จเรียบร้อย ถ้าอยากให้แสดง view ที่เพิ่งสร้าง ก็กดที่แท๊ปชื่อ view ที่เราสร้างเมื่อสักครู่ ที่อยู่ใกล้ๆ + ที่เรากดตอนสร้าง view ครับ

ก็จะได้หน้าตาประมาณนี้ครับ

เรื่อง jenkins และการทำ ci เป็นเรื่องที่ใหม่สำหรับผมมากและยังมีเรื่องที่ยังไม่เข้าใจอีกเยอะมากครับ หากผิดพลาดตรงไหนต้องขออภัยด้วย
สำหรับ jenkins ก็ขอจบไว้เพียงเท่านี้ก่อน ตอนแรกคิดว่าจะเขียนสั้นๆ ไปๆมาๆ ยาวมากครับ (ฮ่า) ขอบคุณครับ

Originally published at www.ntossapo.me on July 14, 2016.

--

--