มาทำให้ Jenkins รู้จักกับ Git ของเรากัน

Jedsada Tiwongvorakul
20Scoops CNX
Published in
4 min readOct 10, 2017
มาทำให้ Jenkins รู้จักกับ Git ดีกว่า

ในยุคนักพัฒนา 4.0 คงไม่มีใครไม่รู้จักคำว่า Continuous Integration (CI) ซึ่งการทำ CI ก็จะมีเครื่องมือมากมายที่เข้ามาช่วยให้ชีวิตสบายขึ้น อาทิ เช่น Travis-CI, CircleCI, Gitlab CI, buddybuild และ อื่นๆ ซึ่งวันนี้เจ้าของบล็อคจะพามารู้จักเครื่องมือตัวหนึ่งที่มีชื่อว่า Jenkins กันสักหน่อย ว่ามันคืออะไร และถ้าจะทำให้เจ้าตัว Jenkins ทำความรู้จักกับ Git ของเราได้ทำยังไง ไปดูกันเลย ปู้น ปู้น … 🚂

เริ่มต้นด้วย Jenkins คืออะไร

เครื่องมือตัวหนึ่งที่ทำตามหลักการ Continuous Integration (CI) โดยทั่วไป แต่เจ้าตัวนี้มีข้อดีตรงที่เป็น open source และสามารถติดตั้งผ่าน Docker ได้อีกด้วยนะ สำหรับใครยังไม่รู้จักว่า CI คืออะไรก็สามารถเข้าไปอ่านเพิ่มเติมด้านล่างได้เลย

การที่เราจะทำให้ Jenkins สามารถเข้าถึง Git ของเรา (สามารถ clone git ได้นั่นเอง) ก็จะมีขั้นตอนดังนี้

ขั้นตอนที่ 1 ติดตั้ง Jenkins (ถ้าใครมี Jenkins อยู่แล้วข้ามขั้นตอนนี้ไปได้เลย)

ให้เข้าไปดาวน์โหลดตัว Jenkins ได้จากลิงค์ด้านล่าง

โดยในตัวอย่างเจ้าของบล็อคจะทำการติดตั้งบนเครื่อง Mac OSX ซึ่งเจ้าของบล็อคทำดาวน์โหลด Jenkins เว่อร์ชัน 2.83 เมื่อดาวน์โหลดเสร็จก็จะได้ไฟล์ที่มีชื่อว่า jenkins-2.83.pkg แต่ถ้าหากใครยังไม่ได้ติดตั้ง Java Runtime Environment (JRE) ให้ติดตั้งก่อนนะครับ

เมื่อติดตั้ง JRE เรียบร้อยแล้วก็กลับมาที่ไฟล์ jenkins ที่เราดาวน์โหลดมาจากนั้นให้ทำการดับเบิ้ลคลิกเพื่อทำการติดตั้ง

ให้ทำตามขั้นตอนที่ Jenkins บังคับ เห้ย แนะนำให้เราทำจนเสร็จ ซะก่อน เมื่อติดตั้งเสร็จก็จะเด้งบราวเซอร์ขึ้นมาแบบนี้

หน้านี้เจ้าตัว Jenkins จะถามหา Password เพื่อทำการ unlock วิธีการเอา Password มาให้ทำการเปิด Terminal ขึ้นมาแล้วใช้คำสั่งนี้

sudo cat ตามด้วย path ที่เป็นตัวหนังสือสีแดง
เช่น sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword

ก็จะได้ Password ออกมาดังนี้

จากนั้นก็ให้ Copy Password ที่ได้ไปใส่ในช่อง Administrator Password แล้วกด Continue ไปได้เลยจากนั้น Jenkins ก็จะถามต่ออีกว่าจะติดตั้งแบบไหน ก็ให้เลือกอันที่หนึ่ง (ให้ติดตั้งพร้อมกับ plug in ที่แนะนำไปเลย)

ก็จะได้หน้าตาแบบนี้ขึ้นมาก็ปล่อยให้เป็นเรื่องของความเร็ว Internet ไปแล้วกัน อะเนาะ ขยับตูดไปชงกาแฟดีกว่า ☕️

เมื่อทำการติดตั้ง และดาวน์โหลด plug in เสร็จเรียบร้อยก็จะเจอหน้าที่ให้ตั้งค่า Admin User ดังนี้

เมื่อทำการตั้งค่า Admin User สิ้นเรียบร้อยก็ถือว่าเป็นอันเสร็จสิ้นพิธีกรรมของ Jenkins แล้วจ้า จากนั้นก็จะเห็นหน้าตาที่แท้จริงแบบนี้

พล่ามมาซะยาว ในที่สุดก็มาถึงวัตถุประสงค์ของงานสักที

ขั้นตอนที่ 2 ทำให้ Jenkins สามารถเข้าถึง Git ของเราได้

ให้ทำการ Generate SSH key โดยเป็น User ของ Jenkins วิธีก็คือให้เปิด Terminal ขึ้นมาแล้วทำการพิมพ์คำสั่งนี้ลงไป sudo su jenkins เพื่อเข้าสู่ User Jenkins แล้วตามด้วยคำสั่ง ssh-keygen เพื่อทำการสร้าง SSH key ก็จะได้หน้าตาแบบนี้

เมื่อทำการสร้าง SSH key เสร็จเรียบร้อยแล้ว จากนั้นให้ทำการเอา public key ออกมาเพื่อนำไปวางบน Git ของเราโดยใช้คำสั่งดังนี้ cat ~/.ssh/id_rsa.pub ก็จะได้ public key ออกมาดังภาพ

ก็ให้ทำการ copy public key เอาไว้ก่อนนะครับ จากนั้นก็ให้เข้าไปที่การตั้งค่าของ SSH Key ของ Git ที่ใช้บริการอยู่ในที่นี้เจ้าของบล็อคใช้บริการของ Gitlab

ต่อไปทำการนำเอา public key ที่เราได้ copy เอาไว้ไปใส่ลงไปในช่องที่ชื่อว่า Key แล้วให้ทำการกด Add Key เข้าไป…

ขั้นตอนที่ 3 ทำการทดสอบ Clone Git ผ่าน Jenkins

ให้ทำการกลับมาที่ Jenkins ถ้าหากใครปิด Jenkins ไปแล้วก็ให้ทำการเปิดขึ้นมาใหม่โดยเข้าไปที่ http://localhost:8080/ แล้วให้ทำการกดที่เมนู New Item เพื่อทำการสร้าง Project โดยให้เลือกแบบ Freestyle project ดังภาพด้านล่าง

ก็ให้กด OK ก็จะเจอหน้าตาให้ตั้งค่าต่างๆ ของ Project ซึ่ง ณ​ ตอนนี้ให้เลือนไปที่เมนู Source Code Management แล้วทำการเลือกที่ Git ก็จะได้หน้าตาประมาณนี้ออกมา

ซึ่งในส่วนของ Repositories นั้นให้ทำการเอาลิงค์ของ Git ที่เป็นแบบ SSH มาวาง ถ้าเชื่อมต่อกับ Git ได้ก็จะไม่ขึ้น Error ใดๆ ดังรูปด้านบน และในส่วนของ Branches to build ก็สามารถเปลี่ยนได้ซึ่งก็อาจจะเปลี่ยนจาก master เป็น dev หรือ อะไรก็แล้วแต่เอาที่สบายใจเลยครับ และเมื่อทำการตั้งค่าเสร็จแล้วก็ให้ทำการกด Save ก็จะได้หน้าตาแบบนี้ออกมา

ให้ทำการกดที่เมนู Build Now ดูเพื่อทดสอบว่า Jenkins สามารถ clone git ของเราได้ รึ เปล่าเมื่อกดแล้วก็เห็นว่ามี Progrees ของ Job ที่กำลังทำงานอยู่โผล่ขึ้นมา ดังนี้

และเมื่อกดเข้าที่ Job ที่กำลังทำงานอยู่เพื่อเข้าไปดู​ Console Output ดูก็จะเห็นว่าสามารถ clone git ของเราได้แล้ว เย้ เย้ 🎊 🎉

เพียงเท่านี้เราก็สามารถทำให้ Jenkins เข้าถึง Repository ที่อยู่บน Git ของเราได้แล้ว ไม่ว่าจะเป็น Gitlab, Bitbucket หรือ Github (private) แต่ถ้าหากใครยังใช้ Flash drive หรือ Google drive ในการเก็บ Source Code อยู่ละก็ตัวใครตัวมัน ล่ะกัน

และหลังจากที่เราสั่งให้ Jenkins ทำการ clone project มาแล้ว และอยากจะสั่งให้ทำการ Build, Test หรือ Deploy อันนี้ก็เป็นอีกเรื่องหนึ่งที่ขึ้นอยู่กับคำสั่งของแต่ละภาษาอีกทีหนึ่ง ซึ่งในบทความถัดไปเจ้าของบล็อคจะพามาทำให้ Jenkins สามารถ Build Project ที่เป็นแอพแอนดรอยด์กันอีกทีหนึ่ง

สรุป

ถ้าหากใครที่กำลังจะมองหา Tools ในการทำ Continuous Integration (CI) ส่วนตัวก็ถือว่าตัว Jenkins เป็นเครื่องมืออีกตัวหนึ่งที่น่าสนใจเป็นอย่างมากแต่ก็จะมีคำถามที่ว่าแล้วจะเอาเครื่องไหนมาทำละ เพราะลำพังเครื่องตัวเองที่ทำงานอยู่ก็อึดพอสมควรแล้วจะแบก Project ของคนอื่นๆ ก็ดูไม่สมเหตุสมผลเท่าไร หรือจะเอาขึ้นบน Server ก็ถือว่าเป็นทางเลือกที่ดี และจากงาน Workshop Agile ที่ CNX พี่หนุ่มได้พูดเอาไว้ว่า ถ้ามี Jenkins แต่ไม่มี Test ก็ไม่นับว่ามี Jenkins เพราะฉะนั้นการทำ CI ให้สมบูรณ์ควรจะมีการเขียน Test นั่นเอง 😎

--

--