[Jenkins] ตอนที่ 2 Deploy โค้ดด้วย Shell

ความเดิม ตอนที่แล้ว เราทำการติดตั้งให้ Jensins มัน Track โค้ดจาก Github หลังจากนั้นผมเองก็ไม่ได้ทำ(ห่า)อะไรเลยครับ งานเยอะจริงๆ T^T กรี๊ดดดดด จนกระทั่งได้อ่านบทความจาก Blog นี้ครับ
แนะนำ plug-in สำหรับการ deploy ผ่าน SSH อธิบายได้ละเอียดดีครับ

ถ้าตัวโค้ดกับ Jenkins อยู่ใน Server ตัวเดียวกันล่ะ?

มันมีวิธีอยู่ครับ ไม่ต้องลง plugin อะไรเพิ่มแต่ต้องปรับแต่งกันนิดหน่อย

เริ่มจากมาดูพาธพื้นฐานของตัว Jenkins กันก่อนครับ ... โดยปกติแล้ว มันจะอยู่ที่ /var/lib/jenkins  ให้เช็กจาก Home directory ครับ ของผมลองใน Koding.com มันจะอยู่ใน /var/lib/jenkins แต่พอลองไปติดตั้งใน CentOS มันอยู่ใน ~/.jenkins เอาเป็นว่าลองเช็กดูดีๆ ก่อนก็แล้วกันครับ ทีนี้ถ้าเราเข้าไปแล้วมองหา Folder ชื่อ jobs จะเห็นว่าภายในนั้นมีโปรเจคที่เราได้สร้างผ่าน Jenkins ไว้เยอะแยะเลย อย่างเช่นตัวโปรเจคผมตั้งชื่อไว้ว่า Demodemo ก็เข้าไปใน Folder นั้นเลยครับ แล้วมองหา Folder ที่ชื่อว่า workspace ตัวโคัดที่เรา track เอาไว้จะอยู่ในนี้ล่ะครับ

กลับมาดู Configuration ของตัวโปรเจคเราบ้าง ... เลื่อนลงมาด้านล่างจะเห็นหัวข้อ Build ให้คลิกที่ Add Build Step แล้วเลือก Execute Shell ตรงช่อง Command ให้ใส่ชื่อไฟล์ ที่เราจะรัน Shell ลงไปครับ เดี๋ยวเราจะมาเขียน Shell แบบง่ายๆ กัน ;)

ใช้ Vim หรือ Nano สร้างไฟล์ script/deploy.sh ขึ้นมาภายใน workspace เลยครับ ในสคริปที่เราเขียนนี้จะเป็นการสั่ง Command line ให้มันไปที่ตัวเว็บจริงๆ ของเราแล้วก็ให้มัน pull เอาโค้ดตัวล่าสุดมาแสดง

* อย่าลืม chown ตัว Folder script ให้เป็น user:group jenkins ด้วยนะครับ อย่างเช่น
sudo chown jenkins:jenkins script/

หรือถ้าเพิ่ม jenkins เข้าไปใน group ของ admin แล้วจะปรับเฉพาะ owner แบบนี้ก็ได้นะครับ
sudo chown jenkins:admin scrip/

** Folder demodemo ที่อยู่ /var/www เป็นตัวที่ผม git clone มาเรียบร้อยแล้ว

ถัดไปก็ chown Folder /var/www/demodemo ให้อยู่ใน user:group เหมือน script/ เลยครับ... เพราะตอนมันรัน Shell มันจะรันในฐานะของ user jenkins

*** ถ้ามีปัญหาเรื่อง Permission สามารถลักไก่ได้ตามบทความนี้ครับ

เป็นอันเสร็จเรียบร้อยครับ ทีนี้เวลาเราสั่ง git push ไปเซิฟเวอร์ก็จะทำงานให้เองหมดเลย(ตามที่เราตั้งค่าเอาไว้)
ซ้ายบน Build ผ่าน... สบายเฮ
ซ้ายล่าง รอ Refresh หน้าเว็บได้เลย
ขวาบน ทำงานผ่าน git อย่างเดียวได้เลยจ้า
ขวาล่าง ลอง...เอิ่ม...
เป็นอันจบ ในแบบที่ไม่ต้องเทสผ่าน PHPUnit
ปล.อย่าลืมไปปิด FTP ด้วยล่ะ ... บายแจ้ FTP

ข้อดี
ก็คือ... โค้ดไม่ชนกันมั่วนะเออ คือถ้ามันจะชนมันก็ไปชนกันใน Git ตอน push/pull นั่นล่ะ ไม่ต้องมาวุ่นวายอัพโหลดไฟล์ไปทับกันละ :)

ข้อเสีย
ก็แค่เซ็ตระบบนิดโหน่ย....(มั้ง)

Ref.

Comments