มี git แล้วชีวิตง่ายขึ้น เรามา Set ให้ Jenkins กับ gitlab รู้จักกันดีกว่า

Phatcharaphan Ananpreechakun
devopsthailand
Published in
4 min readMay 27, 2016

เมื่อก่อนไม่เคยได้ใช้ Git เวลาที่จะเอา file ขึ้น server ก็ใช้ Tool ต่างๆ ซึ่งปัญหาในการนำ File ขึ้น server นั้น บางทีลืมว่าแก้ไข file ไหนบ้าง บางทีอยากที่ย้อนกลับมายัง code เดิม แต่แก้ไข code ไปไกลล่ะก็เลยใช้วิธีง่ายๆก็คือ ลบ File แล้วดึง File จาก Server มาใหม่ แล้วก็ปัญหาต่างๆมากมาย จนได้มาเจอ Git แล้วคิดว่าทำไมเพิ่งได้เจอเนี่ยซึ่งก็เขียนโปรแกรมมาตั้ง 3 ปีล่ะ ความสามารถของ Git นี่เทพจริงๆ ซึ่งแค่เราใช้คำสั่ง git status เราก็สามารถรู้ล่ะว่าแก้ไข File อะไร หรือส่วนไหนไปแล้ว และยังสามารถกลับไปยังก่อนหน้าที่เราจะแก้ไขได้ด้วยด้วยคำสั่ง git checkout ตามด้วยชื่อ File และข้อดีอีกเยอะม๊ากๆ ซึ่งใน site งานที่เราทำงานมีคนมา config ให้แล้ว เราก็สามารถใช้ได้เลย เราเลยคิดอยากที่จะ config เองบ้างก็เลยเช่า server มาลอง config เลย

เนื่องด้วยเราอยากจะลอง set Jenkins อยู่แล้ว วันนี้ก็เลยลงทุนเช่า server มาเล่นเลย ขั้นตอนการ set ก็ค่อนข้างหาใน Google ยาก เมื่อเรา set ได้ก็เลยอยากจะมาแชร์ให้คนที่อยากจะลอง set ให้ Jenkins กับ gitlab รู้จักกัน งั้นเรามาลองกันเลย

  1. เข้าไปลงทะเบียน https://gitlab.com กันก่อนน่ะค่ะ มี account กันแล้วก็ทำการเข้าไป config ใน gitlab กันก่อนเนอะ และขั้นตอนการติดตั้ง Jenkins ก็ทำตาม link นี้เลย https://medium.com/@phatpan/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%A5%E0%B8%87-jenkins-2-1-6-%E0%B9%83%E0%B8%99-ubuntu-%E0%B8%9A%E0%B8%99-server-55cb8f807d5f#.q26ry2wai
  2. เข้าไป generate key กันก่อน เวลาที่เราจะ generate key นั้นเราต้องเข้าไปใน server ของ jenkins เพื่อนำ key นั้นไป add
  3. เข้า jenkins โดยพิมพ์คำสั่งดังภาพ

4. ทำการ generate SSH key ใหม่ โดยพิมพ์คำสั่งนี้

ssh-keygen -t rsa -C "phat.pan@gmail.com"

ซึ่งคำสั่งนี้เราสามารถเข้าไปใน SSH Keys ของ Gitlab จะมี link ให้เรากดคำว่า generate it. ดังภาพ

เมื่อเรากด link generate it. แล้วก็จะแสดง Help ให้เราดูว่าคำสั่งในการ generate SSH key ใช้คำสั่งอะไรบ้างดังภาพ

5. เมื่อทำการ generate SSH key เสร็จแล้ว เราก็จะดูว่า key ของเราคืออะไร โดยเราจะใช้คำสั่ง

cat ~/.ssh/id_rsa.pub

key เราจะได้จะมีประมาณดังภาพ แต่ในภาพจะ sensor ไว้นิดนึง

6. เมื่อเราได้ key แล้ว ก็นำ key ไปใส่ช่อง key ดังภาพ

7 . เราก็ทำการสร้าง project ที่ gitlab ดังภาพ

เมื่อทำการกดปุ่ม create project จะแสดงหน้าจอดังภาพ

8. เมื่อเราสร้าง Project เสร็จแล้วก็ทำการสร้าง Repository โดยคำสั่งดังภาพ

9. เมื่อสร้าง Repository เสร็จแล้ว เรามาเริ่ม Config ให้ Jenkins รู้จักโดยเข้าไปที่เมนู Webhooks โดย Webhooks ที่เราจะเข้าไปนั้นจะต้องเข้าเมนู Project ที่เราเลือก แล้วเข้า Setttings จะมีเมนู Webhooks แสดงขึ้นมาให้เราเลือกดังภาพ

10. ในช่อง URL เราต้องเข้าไปสร้าง Item ใหม่ ใน Jenkins กันก่อน โดยวิธีการสร้างนั้นเราต้องเข้าไป Jenkins แล้วเลือก ใหม่ Item ดังภาพ

11. เมื่อเราสร้าง Item ใหม่แล้ว ให้เราเลือก Tab Source Code Management แล้วเลือกที่ Git ในส่วนของ Repository URL ให้เรานำ URL ที่ได้จาก Gitlab ใส่ ตัวอย่างดังภาพ

  • ** หมายเหตุ ถ้ามี Error Failed to connect to repository : Command “git ls-remote -h git@gitlab.com:phatpan/Test.git HEAD” returned status code 128:
    stdout:
  • ให้ นำ git ls-remote -h git@gitlab.com:phatpan/Test.git HEAD เข้าไป Run บน Server ที่มี jenkins รันอยู่
  • จะมีข้อความ Are you sure you want to continue connecting (yes/no)? ให้กรอก yes เพื่อยืนยัน

12. และให้เรากดที่ tab Build Triggers แล้วเลือก Build when a change is pushed to GitLab. GitLab CI Service และนำ URL ในตรงนี้ไปใส่ในช่อง URL ข้อ 9

13. เมื่อเรา Copy URL มาจาก Jenkins แล้วให้เราไปใส่ที่ Gitlab ดังภาพ

14. แล้วทำการกดปุ่ม Add webhook

15. เมื่อเรากดปุ่มแล้วจะแสดงดังภาพ ให้เราสามารถ Test ได้

16. เมื่อเรากดปุ่ม Test จะแสดง สถานะดังภาพ

17. เราลองแก้ไข Code แล้วทำการ push ขึ้นก็จะเห็นว่า Jenkins จะทำการ Build ดังภาพ

18. เรามาดูว่า path ที่ jenkins นำ Code ไปไว้ใน Server อยู่ที่ไหน ให้เราเข้า path

/var/lib/jenkins/workspace/

เราก็จะเห็นชื่อ Project ที่เราสร้างใน path นี้

เย้ๆ เสร็จแล้วการ set ให้ gitlab กับ Jenkins รู้จักกันนี่ set แรกๆๆนี่ยากม๊ากเลย ดีที่มีเพื่อนข้างๆมาช่วย set ให้ไม่งั้นคงไม่เสร็จแน่ๆ สำหรับการ set Jenkins ในครั้งนี้

--

--