บทความที่แล้วเราได้รู้จักและติดตั้ง Jenkinsกันไปแล้ว ส่วนบทความนี้ผมขอพูดถึงการเชื่อมจาก My repository มายัง Jenkins ก็แล้วกัน โดยมา repository ที่ว่ามันจาก 3 ที่คือ

  • Local repository
  • Gitlab repository
  • Github repository

ทั้งหมดนี้ใช้ Source Code Management (SCM) ตัวเดียวคือ git เมื่อ Jenkins จะ code ทำการ build ตาม job ที่เขียนไว้ใน Jenkins คุณยังสามารถสั่งให้มันอะไรได้ต่อได้อีกมากมาย ยกตัวอย่างเช่น ต้องการ push ใช้ git server แล้วให้ Jenkins ทำการสั่ง test ( เช่น mvn test ) ทุกๆ ครั้งของการ push หรืออาจจะมองไปไกลกว่านั้นคือ เมื่อ test pass แล้ว ให้ทำการไป deploy ลงบน UAT ได้เลยเป็นต้น

ใช้งาน Jenkins กับ Local repository

Local repos ในที่นี้คือไม่มี git server ให้เราเอาโค้ดไปฝาก แต่อยากที่จะเล่นท่ายาก build ผ่าน Jenkins ดังนั้นก็ต้องเริ่มจาก สร้าง Item บน Jenkins กันก่อนเลย

1

ใส่ Execute shell ตามนี้

rm -rf /var/lib/jenkins/jobs/LocalRepository/workspace/*

scp -r dev@local.dev:/path/to/LocalRepository .

mvn test

เนื่องจากเราไม่มี git server ทำให้เราต้องเพิ่ง transfer code มาที่ Jenkins เอง คุณอาจจะใช้วิธี scp หรือ rsync ก็ได้ แต่อย่าลืมนำ ssh key มาใช้เพื่อที่มันไม่ต้องถาม password ทุกครั้ง กลับมาดูเครื่อง developer กันบ้าง หลังจากได้ project ที่ต้องการจะเอามา build แล้วให้เราสั่ง

cd LocalRepository

git init

เพิ่ม git hooks

vi .git/hooks/post-commit

ก็อปปี้ลิงค์ Build Now จาก Jenkins มาใส่

#!/bin/sh

curl http://192.168.0.24:8080/job/LocalRepository/build?delay=0sec

หลังจากที่เรา commit code ที่เครื่องเรา code ก็จะถูกส่งไป build ที่ Jenkins แบบอัตโนมัติ

2

วิธีนี้เป็นวิธีที่คุณจะได้เรียนรู้ Jenkins และ git hooks ได้อย่างดี แต่ไม่มีใครเขาใช้กันหรอกครับ ต่อไปเรามาดูวิธีที่นิยมใช้กันดีว่า

การใช้งาน Jenkins กับ GitLab Repository

คุณสามารถที่จะดูวิธีติดตั้ง GitLab จาก บทความเก่าๆ ได้ ดังนั้น section ขอข้ามกันเลย เรามาเริ่มกันที่เตรียม project กันก่อน

3

หลังจากได้ project บน GitLab มาแล้ว ต่อไปคือการทำเอา ssh public key จาก Jenkins server มาใส่ใน Deploy key ในที่นี้ผมตั้งชื่อว่า jenkins

4

หลังจากที่ได้ Project และ นำ Deploy key มาวางแล้ว ต่อไปคือการผูก Jenkins เข้ากับ Gitlab โดยการ Create new item แล้วเลือก source code management เป็น git และนำ Repository url จาก Gitlab มาใส่และเลือก Credentials ให้เป็นตัวเดียวกับ Deploy key บน Gitlab

5

ถัดมาใส่ command script ตามที่เราได้ต้องการได้เลย

2

หลังจากได้ Jobs บน Jenkins แล้วให้ทำการ Copy url ของ Build Now มาด้วย

2

เป็นอันเสร็จสิ้นที่ Jenkins ต่อไปกลับไปยัง GitLab เอา link Build Now ไปใส่ใน Web Hooks ของ Repository ที่เราเตรียมไว้ได้เลย

3

ทดลองกด Test Hook สักหนึ่งครั้ง แล้วกับไปดูที่ Jenkins build history จะเห็นว่ามีการ build เกิดขึ้นแล้วจริงๆ ด้วย

4

หลังจากนี้คุณเพียงแค่ push code ขึ้น GitLab ตัว Jenkins ก็จะทำการ Build อย่างอัตโนมัติ

การใช้งาน Jenkins กับ Github Repository

ในส่วนของ Github นั้นทำเหมือนกับ section ของ GitLab เลยครับ นำ Deploy Key ใส่ลงใน Repository ของคุณจากนั้นก็สร้าง webhooks and service ขึ้นมา ถ้าหากคุณติดตั้ง Jenkins ไว้หลัง Router บ้านคุณเองอย่าลืมที่จะทำ Port Forwarding นะครับ

2

เท่านี้ Jenkins ก็สามารถเอา Code มา build ทุกครั้งที่คุณ push ขึ้น git server แล้วครับ

Comments are closed.