ในระบบ Git stores repository จะมี directory ที่ชื่อว่า .git ภายในนั้นจะมีสิ่งที่เรียกว่า git hooks ที่อนุญาติให้คุณสามารถเขียน script เพื่อคุมการทำงานของ workflow ได้ แต่โดยปกติแล้ว Git จะไม่สามารถที่จะ push .git ขึ้นไปยัง repository ได้ นั้นหมายความว่า git hooks ที่ผมจะพูดนั้นทำงานได้เฉพาะบน local เท่านั้น ( แต่โชคไม่ทีเท่าไหร่มีคนสามารถหาช่องเจอ โดยอาศัย case-insensitive filesystems ซึ่งสามารถ push .Git หรือ .GIT ขึ้นไปยัง repository ได้ อ่านเพิ่มเติมได้ที่ CVE-2014-9390 )

มาดูสิ่งที่ git เตรียมไว้ให้ใน git hooks กัน

git hooks

เราสามารถอ่านคำอธิบายการทำงานต่างๆ ของแต่ละไฟล์ได้เลย หากต้องการจะใช้งานให้ลบนามสกุล .sample ออก แล้วทำการ change mode ให้สามารถ execute ได้


Continue reading

ครั้งนี้เราจะมาลองใช้งานบริการที่มีอยู่เดิมอย่าง Git และ Dropbox เพื่อสร้าง Free private repository แบบง่ายๆ โดยไม่เสียสตางค์กัน ก่อนอื่นมาทำความรู้จักกับ Git และ Dropbox กันก่อน Git คือ ระบบควบคุมการแก้ไขข้อมูลย้อนหลัง (revision control systems) อธิบายง่ายๆ ให้พอมองเห็นภาพได้ว่า Git คือ ซอฟท์แวร์ที่ช่วยเราในการสำรองข้อมูล (ฺBackup) ซึ่งการสำรองข้อมูลนี้เองทำให้เราสามารถย้อนกลับไป ณ ช่วงเวลาใดๆของข้อมูลได้ (ในทางเทคนิคแล้ว Git ไม่ได้เป็นแค่เพียงซอฟท์แวร์ในการ Backup ข้อมูล แต่ Git ยังเป็นซอฟท์แวร์ที่ใช้ในการจัดการรุ่นของซอร์สโค้ดอีกด้วย) Dropbox คือ แหล่งเก็บข้อมูลแบบก้อนเมฆ (Cloud storage) อธิบายแบบสั้นๆง่ายๆ ได้ว่า Cloud storage นั่นก็คือแหล่งเก็บข้อมูลบน Internet นั่นแหละครับ

ตอนนี้เรารู้จักกับ Git และ Dropbox กันแล้ว ต่อไปเรามาลองดูวิธีใช้งาน Git ควบคู่กับ Dropbox กันเลยครับ ก่อนอื่นให้เข้าไปที่แฟ้มโปรเจคที่เราอยากใช้ Git ในการควบคุม source code ครับ แล้วทำการรันคำสั่ง

~/project $ git init

เพื่อทำการเริ่มต้น (Initialize) การใช้ Git ขั้นตอนต่อไปคือ ให้เราทำการเพิ่ม (add) โค้ดเราเข้าไปใน Staging area (สำหรับ Staging area ให้จินตนาการง่ายๆว่า มันคือตะกร้าเก็บเอกสารใบนึงที่วางอยู่บนโต๊ะเราครับ)

Continue reading

บทความที่แล้วเราได้รู้จักและติดตั้ง 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 ได้เลยเป็นต้น


Continue reading

ถ้าคุณเป็นแฟนพันธ์แท้หรือติดตาม thaiopensource.org อยู่เป็นประจำ ก็จะเห็นบทความหนึ่งได้พูดถึงเรื่องของ Gitlab CI ไปแล้ว แต่สำหรับคนที่เริ่มนำ Agile เข้ามาอยู่ในชีวิต และอยากที่จะมี build tools เจ๋งๆ และมี plugin ให้เลือกเล่นได้เยอะๆ ก็ต้อง Jenkins เลยซึ่งก็เป็นอีกทางเลือกหนึ่งที่ได้รับความนิยมมากๆ เช่นกัน

Jenkins ก็คือ open source continuous integration tools เขียนโดย java และยัง support พวก source code management อย่าง git subversion cvs อีกด้วย ซึ่งถ้าพูดไปแล้วก็เป็น tools ที่สะดวกเอามากๆ เมื่อคุณ push code ผ่านทาง git (ถ้าคุณทำให้ git hook ไปยัง Jenkins server) ตัว Jenkins ก็จะทำการ build ให้คุณด้วยอัตโนมัติตามที่คุณเขียน job เอาไว้ใน Jenkins

เรามาเริ่มติดตั้ง Jenkins กันเลยดีกว่า ในที่ผมจะทำการติดตั้งมันลงบน CentOS 6.5

เริ่มจากติดตั้ง Java 6 กันก่อน เนื่องจาก Jenkins นั้นถูกเขียนโดย java

# yum install java

หรือจะ

# yum install java-1.6.0-openjdk


Continue reading