SlideShare uma empresa Scribd logo
1 de 31
Jenkins CI
What is it?
ก่อนแรกมาทาความรู้จักกับ CI ก่อนนะครับ
 CI (Continuous Integration) คือแนวคิด ทัศนะคติ รวมไป
ถึงวัฒนธรรมของทีมและองค์กร
 สิ่งที่ทีมพัฒนาควรจะตกลงร่วมกันในการพัฒนา
1. เมื่อมีเราทาการดึง code จาก repository ล่าสุดลงมาแล้ว จะต้อง
สามารถ build และทดสอบผ่านทั้งหมดอยู่เสมอ
2. ทุกๆ คนจะต้องทาการ check-in code ไปยัง repository ทุกๆ
ชั่วโมง หรือ ทุกๆ การเปลี่ยนแปลง ยิ่งทาบ่อยยิ่งดี เพราะว่าการ check-in มัน
จะทาให้เกิดการพูดคุยภายในทีมอยู่เสมอ
จากข้อตกลงข้างต้นนั้น
เราจะทาให้มันเกิดขึ้นได้อย่างไรล่ะ?
1. ก่อนที่จะทาการ Check-in code ของคุณไปยัง repository นั้น
จะต้องทาการ build และต้องทดสอบผ่านทั้งหมด
2. แจ้งหรือตะโกนบอกให้ทีมรู้ว่า เราทาการแก้ไข code แล้วนะ เพื่อให้แต่ละคนทาการดึง
code ล่าสุดลงมา เพื่อทาให้มั่นใจว่าการ integrate มันผ่านและทางานได้จริงๆ
นะ
3. ทาการ Check-in code ไปยัง repository
4. จะต้องมีเครื่อง server หรือเครื่องแยกออกมา ทาการดึง code ล่าสุดจาก
repository ลงมา แล้วทาการ build และ ทดสอบทั้งหมดอีกครั้ง เพื่อให้มั่นใจ
ว่าทุกๆ อย่างผ่านนะ และในขั้นตอนนี้จะทาให้ไม่เกิดคาพูดที่ว่า มันสามารถทางานได้บน
เครื่องผม/หนู นะ!! ดังนั้นถ้าเกิดปัญหาหรือข้อผิดพลาดขึ้นมาก็กลับไปแก้ไขใหม่หรือ
rollback กลับไป และกลับไปทาข้อ 1 อีกครั้ง
5. เมื่อข้อ 4 ผ่านแล้ว ให้บอกทุกๆ คนในทีมทาการดึง code ชุดล่าสุดจาก
repository ลงมาอีกครั้งหนึ่ง
แล้วเราจะลดขั้นตอนการทางานได้อย่างไรล่ะ?
 คาถามนี้แหละ เป็นเหตุผลที่ต้องให้ทีมเริ่มมองหาเครื่องมือมาช่วยทาในข้อ 4 เพื่อ
รวบรวมขั้นตอนการทางานจากขั้นตอนการทางานของแต่ละคนในทีม ซึ่งทุกคนจะต้อง
ทางานด้วยขั้นตอนเหมือนกันด้วยนะ
 ตัวอย่างเครื่องมือข้างต้นก็เช่น
 SVN (Subversion)
 CVS (Concurrent Versions System)
 GIT
 และอื่นๆ อีกมากมาย
กับมาที่ Jenkins มันคืออะไร?
 Jenkins ก็คือ open source continuous integration
tools เขียนโดย java และยัง support พวก source code
management อย่าง git, svn, cvs อีกด้วย
 สรุปก็คือ Jenkins จะเข้ามาช่วยทา CI และ Jenkins ยังสามารถเฝ้า
repository ใดๆก็ได้เมื่อเกิดการ commit ขึ้น jenkins จะทาการ
build version นั้นให้ทันที แล้วเราสามารถกาหนดได้ว่า หาก build สาเร็จให้
ลองรัน test case ก็ได้หรือจะให้ทาอะไร อื่นๆ ต่อไปได้
 หลักการของ Jenkins คือเราจะต้องสร้าง Job ขึ้นมาก่อน แล้วกาหนดว่า Job นี้
จะใช้อะไรในการ Build หลังจาก Build สาเร็จแล้วให้ทาอะไร เมื่อได้ Job แล้วเรา
ก็สามารถควบคุม Job นี้อีกทีได้เช่นตั้งเวลาการทางาน หรือจะสั่ง build โดยตรงเลย
ก็ได้
สรุปแล้ว Jenkins CI ช่วยงานเรายังไง
ในระบบการพัฒนา sotware ต่าง ๆ หลัก ๆ แล้วจะไม่พ้นในระบบการพัฒนาที่เป็น
Design -> Dev -> Test -> Deploy
CI มันคือกระบวนการที่ทาให้การส่งผ่านแต่ละขั้นตอนมันเกิดการ
continuous คือต่อเนื่องนั่นเอง แต่เดิม Design เสร็จแล้ว Dev ต้องเขียน
โปรแกรมเพื่อเปลี่ยน Design ให้เป็น หน้าตาเป็นโปรแกรม Dev เสร็จแล้ว Tester
ก็ต้องทาการทดสอบต่าง ๆ เมื่อเสร็จแล้วก็ค่อย Deploy คาถามคือถ้า Test ไม่ผ่านทา
ยังไง? Dev ก็ต้องเอาไปแก้ แล้วให้Tester ทาการ Test อีกรอบ ถามว่าตรงนี้จะเกิด
การรอไหม? ช้าไหม? คาตอบคือมันช้าแน่ ๆ ไม่มีความต่อเนื่อง พูดถึงปัญหาต่อ ถ้า Test ผ่าน
ต้อง Deploy ถูกไหม ปกติก็ต้อง Deploy โดยคน หรือใช้โปรแกรมต่าง ๆ ซึ่ง
สุดท้ายก็ไม่พ้นคนอยู่ดี มันเลยมี Technology เข้ามาแก้ปัญหาส่วนนี้
แก้ยังไง?
จะดีไหมถ้า Tester ไม่ต้องมาทาซ้า ๆ Dev ไม่ต้องคอยบอก Tester ว่าเสร็จ
แล้วนะมาเทสด้วย แต่ให้มัน Test โดยอัตโนมัตหลังจากแก้Code เสร็จเลย หรือ แทนที่พอ
Test เสร็จแล้ว ผ่านแล้ว Tester ต้องบอกให้คนที่มีหน้าที่ Deploy มา Deploy ต่อ ก็
ให้มันผ่าน Test แล้ว ก็ Deploy เลย มันลดขั้นตอน ลด Overhead เกิด ความเป็น
Continuous ขึ้น ทีนี้ทาไมต้อง Integration เพราะว่า Dev Test Deploy
มันคนละระบบกัน เลยต้อง Integrate กันแค่นั้นเอง
ทีนี้ Jenkins ทาอะไรได้บ้าง มองจากที่ใช้งาน Dev -> update
code Jenkins จะทาการดึง code นั้นมาทาการ Test ด้วยโปรแกรมต่าง ๆ ที่
Tester เขียน ถ้า Test แล้วผ่าน ก็ Deploy ด้วย script หรือ Program ไปเลย
Jenkins เรียกการทางานเหล่านี้ในหนึ่งกระบวกการว่า Project
ใน 1 Project มีหลาย Job ทางานต่อเนื่องกันไป
วิธีติดตั้ง Jenkins (สาหรับ windows)
 ไปที่ Native packages ด้านขวามือ
 เลือก Windows เพื่อ Download
 Download ได้จาก https://jenkins-ci.org/
 File ที่ได้จากการ download เป็น .rar
 ทาการแตก file .rar ออกมา จะได้ออกมาเป็นแบบนี้
 เลือก setup เพื่อทาการติดตั้ง
 หน้าตาของ File setup ให้ทาการติดตั้งจนเสร็จ
หน้าตาของ Jenkins
 สามารถ เข้าใช้งาน Jenkins ผ่านทาง
web browser ได้
 ด้วย url: http://localhost:8080/
1
2
1
คือส่วนของเมนู ประกอบไปด้วย
-สร้าง job ใหม่
-บุคคลที่เข้าใช้งาน
-ประวัติการ build
-Credentials
-คิวของ job ที่กาลังทาการ build
-สถานะของ job ที่กาลังทาการ build
2
คือส่วนของjob ประกอบไปด้วย
S คือ status ของ job นั้น
แบ่งออกเป็น 3สี คือ
สีเทา = ยังไม่ได้build
สีแดง = job Failed
สีเหลือง = job Unstable
สีน้าเงิน = job Success
W คือ ค่าเฉลี่ยของการ build แต่ละครั้ง
มีตั้งแต่ แจ่มใส จนถึง เมฆฝน ก็คือ build
แล้ว job Success มากกว่า จนถึง
job Failed มากกว่า
สิ่งที่ต้องรู้เกี่ยวกับ การเชื่อมต่อ Jenkins กับ
Programs ต่างๆ
1. เราควรจะโหลดโปรแกรมเกียวกับ plugins ที่เราจะใช้งานเสียก่อน
2. Plugins ของ jenkins เป็นเพียงตัวเรียกใช้งานโปรแกรมหรือตัวเชื่อมต่อ
เท่านั้น
3. ถ้าไม่มีโปรแกรม Plugins ก้อไม่สามารถใช้งานได้
การตั้งค่า Jenkins เชื่อมต่อ กับ Git
(ติดตั้ง Plugin Git)
 ก่อนอื่นต้องทาการติดตั้ง get clients โดยสามารถ download ได้จาก
https://git-scm.com/download/win
 เมือติดตั้งเสร็จเรียบร้อยให้กลับมาที่ Jenkins เพื่อทาการโหลด Plugin
 กดเข้าไปที่ Manage Jenkins -> Manage Plugins ->
Available / Installed(ที่มีอยู่)
 ติ๊กถูกเลือก Git Plugin และ Git Client Plugin
 กด
 รอให้Jenkins ติดตั้ง Plugin จนเสร็จ
 ติ๊กถูกที่
การตั้งค่า Jenkins เชื่อมต่อ กับ Git
(ตั้งค่า Git ให้พร้อมใช้งาน)
 กดเข้าไปที่ Manage Jenkins -> Configure System
 เลือกไปที่ Git -> Add Git ใส่ Name กับ Path to Git…
 เมื่อใส่เสร็จเรียบร้อย กด Save ,เสร็จการตั้งค่า Git แล้วนะครับ ^^
ในช่องนี้ให้ใส่ Path ของ Git Clients ที่เรา download มาแต่แรก เดิมทีจะอยู่ที่
C:Program FilesGitcmdgit.exe
การตั้งค่า Jenkins เชื่อมต่อ กับ MSBuild
(ติดตั้ง Plugin MSBuild)
 โดยปกติ MSBuild จะมากับการลง MS.Visual Studio
 กดเข้าไปที่ Manage Jenkins -> Manage Plugins
-> Available / Installed(ที่มีอยู่)
 ติ๊กถูกเลือก MSBuild Plugin
 กด
 รอให้Jenkins ติดตั้ง Plugin จนเสร็จ
 ติ๊กถูกที่
การตั้งค่า Jenkins เชื่อมต่อ กับ MSBuild
(ตั้งค่า MSBuild ให้พร้อมใช้งาน)
 กดเข้าไปที่ Manage Jenkins -> Configure System
 เลือกไปที่ MSBuild -> MS Build installations... -> Add
MSBuild, ใส่ Name กับ Path to MSBuild …
 เมื่อใส่เสร็จเรียบร้อย กด Save ,เสร็จการตั้งค่า MSBuild แล้วนะครับ ^^
ในช่องนี้ให้ใส่ Path ของ MSBuild ปกติทีจะอยู่ที่
C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
การใช้งาน jenkins ร่วมกับ Git, MSBuild
และ Nunit
 เริ่มจากการสร้าง job กัน Jenkins -> New item(ใหม่ Item)
-> ใส่ Item name เลือก Freestyle project -> กด OK
 จะได้หน้าตาของ Item ที่เราสร้างขึ้นมาใหม่
ใช้งาน Git ทาไม?
 เพราะเป็นโปรแกรม Source Code Management หรือโปรแกรมจัดการซอส
โค้ด นั้นเอง เราจึงต้องใช้งาน โปรแกรมประเภทนี้ เพื่อ ดึงซอสโค้ด มาให้jenkins ได้เรียกใช้งาน
ต่างๆนาๆ
 แล้วใช้โปรแกรม Source Code Management ตัวอื่นมีไหม? แล้วสามารถใช้
ร่วมกับ jenkins ได้ไหม? แล้วทาไมต้องใช้ Git?
 คาตอบคือ มีครับ เช่น CVS, SVN เป็นต้น แล้วก็สามารถใช้ร่วมกับ jenkins ได้เช่นกัน
เหตุผลที่ใช้Git เพราะเป็น Source Code Management ที่ได้รับความนิยม
สูงสุดในการใช้ร่วมกับ jinkins ซึ่งทาให้หาข้อมูลได้ง่าย และที่สาคัญคนสั่งให้ทา
presentation บอกให้ทา ผมจึงต้องทาครับ - -’
 และควรจะ build job ให้ผ่านเพื่อให้รู้ว่าตอนนี้ เราสามารถดึง Source Code ได้แล้ว
การใช้งาน Git
1. มาที่ Source Code Management
เลือกที่ Git
2. ใส่ URL ของ Git ที่ต้องการ
3.กด Add เพื่อใส่ username, password
(ถ้ามี)
เมื่อเซตทุกอย่างแล้ว กด Save
ได้เลย
การสั่ง build Job ของ Jenkins
1. กด “Build Now” เพื่อสั่ง build
ตอนนี้ Job เรากาลัง build ครับ
ใช้งาน MSBuild ทาไม?
 หลังจากที่เรา build Git ของเราผ่านแล้ว ตอนนี้เราได้ Source Code มาอยู่ที่เครื่อง
แล้วนะครับ ปกติจะอยู่ที่ C:Program Files (x86)Jenkinsjobs[ชื่อ
item ที่เราตั้ง]workspace
 เพราะเราทา Web App ด้วย MVC ซึ่งพัฒนาจาก MS. visual studio
 เพราะเป็นโปรแกรมที่ติดตั้งมาพร้อมกับ visual studio เพื่อใช้ในการ build โปรแกรม
 ซึ่งถ้าเราต้องการเช็คว่าโปรแกรมเรา build Source Code ของ VS ได้ไหม มี
Error หรือ Warnings หรือป่าว และใช้งาน test อื่นๆต่อไป เราควรจะใช้ MSBuild
ในการ build ให้สาเร็จเสียก่อน
การใช้งาน MSBuild
1. Add build step -> Build a Visual
Studio…
2. MSBuild Version เลือก
Version ของ .Net 3. ใส่ Path ที่เก็บ .sln
(ไฟล์ที่ไว้รันโปรเจคอะครับ)
4. (ตย.)ถ้ามีปัญหา กรณี MSBuild Build
Version ที่เครื่องไม่มี สามารถ ใช้คาสั่ง
Command Line เปลี่ยนได้
การใช้งาน Nunit ทาไม?
 หลังจากที่ใช้งาน MSBuild ได้แล้ว ตอนนี้ Project เราสามารถ
build Source Code ของ VS ได้แล้วนะครับ
 เพราะเราใช้ Nunit ในการ test Project เราจึงต้อง เชื่อมต่อ Nunit
เพื่อ test job ใน jenkins
 และที่สาคัญเหมือนเดิมครับ คนสั่งให้ทา presentation บอกให้ทา ผมจึง
ต้องทาครับ - -’
 ก่อนอื่น เราต้องโหลด Nunit เพื่อเรียกใช้งาน จาก
http://nunit.org/?p=download
การใช้งาน Nunit
1. Add build step -> Execute
Windows batch commend
2. ใส่ “pathของNunit” ตามด้วย pathของtest ที่เราสร้างไว้
3. กด Save
 หลังจากที่ Build Now เข้ามาใน Build Hissory เพื่อดู console
เลือก build ที่เราพึ่ง build
 ถ้าขึ้นยังงี้ คือ เราสามารถ run test ผ่านหมดแล้วนะครับ
 เรามาดูที่ foder job เรา จะได้ไฟล์ .xml แบบนี้มานะครับ
 จากนั้นเราไปที่ Configure เพื่อ ทา report
 เลื่อนลงมาที่ Add post-build action -> Publish Nunit test…
1. ใส่ path ของ .xml ที่ได้มา
2. กด Save
การดู Report
 หลังการ Save แล้ว เข้ามาดูที่ build ล่าสุด จะได้test Result
ขึ้นมา สามารถ กดไปดูได้
Test Result
การตั้งเวลาในการ poll&build
2. (ตย)การตั้งเวลา Build
ทุก 10 นาที
1. (ตย)การตั้งเวลา Poll ทุก
10 นาที
เมื่อเซตทุกอย่างแล้ว กด Save
ได้เลย
การทาให้Jenkins build ทุกครั้งที่ git มีการ
เปลี่ยนแปลง
 นา link ที่เรา copy มาวางไว้ใน Webhook & Services
 เท่านี้ Jenkins ก็สามารถเอา Code มา build ทุกครั้งที่คุณ push ขึ้น
git server แล้วครับ
 ***ถ้าหากคุณติดตั้ง Jenkins ไว้หลัง Router บ้านคุณเองอย่าลืมที่จะทา Port
Forwarding นะครับ...!!!

Mais conteúdo relacionado

Semelhante a Jenkins, Git, MSBuild, NUnit

การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Android
การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Androidการเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Android
การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App AndroidAod Parinthorn
 
โปรแกรม Net beans
โปรแกรม Net beansโปรแกรม Net beans
โปรแกรม Net beansBoOm mm
 
การเขียนโปรแกรมโดยใช้ Net beans
การเขียนโปรแกรมโดยใช้ Net beansการเขียนโปรแกรมโดยใช้ Net beans
การเขียนโปรแกรมโดยใช้ Net beansDonnapha Bor-sap
 
Lesson1 programing concept
Lesson1 programing conceptLesson1 programing concept
Lesson1 programing conceptskiats
 
การสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforia
การสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforiaการสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforia
การสร้างสื่อ AR Augmented Reality ด้วย Unity + VuforiaDr.Kridsanapong Lertbumroongchai
 
Netbeans and Android Appliation
Netbeans and Android AppliationNetbeans and Android Appliation
Netbeans and Android AppliationSedthawoot Pitapo
 
การเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ Netbeansการเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ NetbeansWasin Kunnaphan
 
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i os
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i osคู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i os
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i osNisachol Poljorhor
 
คู่มือ Sony Vegus 7.0
คู่มือ Sony Vegus 7.0คู่มือ Sony Vegus 7.0
คู่มือ Sony Vegus 7.0usanee31
 
Gisเป้
Gisเป้Gisเป้
Gisเป้cream3703
 
Gisครีม
GisครีมGisครีม
Gisครีมcream3703
 
56170171
5617017156170171
56170171nuisnit
 
Imv unit7-1-pr3-introduction-pdf
Imv unit7-1-pr3-introduction-pdfImv unit7-1-pr3-introduction-pdf
Imv unit7-1-pr3-introduction-pdfPipit Sitthisak
 

Semelhante a Jenkins, Git, MSBuild, NUnit (20)

การเขียนโปรแกรมโดยใช้ Netbean
การเขียนโปรแกรมโดยใช้ Netbeanการเขียนโปรแกรมโดยใช้ Netbean
การเขียนโปรแกรมโดยใช้ Netbean
 
CI/CD
CI/CDCI/CD
CI/CD
 
การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Android
การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Androidการเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Android
การเขียนโปรแกรมโดยใช้ Net beans และการสร้าง App Android
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
โปรแกรม Net beans
โปรแกรม Net beansโปรแกรม Net beans
โปรแกรม Net beans
 
การเขียนโปรแกรมโดยใช้ Net beans
การเขียนโปรแกรมโดยใช้ Net beansการเขียนโปรแกรมโดยใช้ Net beans
การเขียนโปรแกรมโดยใช้ Net beans
 
Lesson1 programing concept
Lesson1 programing conceptLesson1 programing concept
Lesson1 programing concept
 
การสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforia
การสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforiaการสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforia
การสร้างสื่อ AR Augmented Reality ด้วย Unity + Vuforia
 
Netbeans and Android Appliation
Netbeans and Android AppliationNetbeans and Android Appliation
Netbeans and Android Appliation
 
การเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ Netbeansการเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ Netbeans
 
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i os
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i osคู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i os
คู่มือการใช้งานโปรแกรมพัฒนา Application สำหรับระบบปฏิบัติการ i os
 
Know1 1
Know1 1Know1 1
Know1 1
 
Gis3
Gis3Gis3
Gis3
 
Dev c++
Dev c++Dev c++
Dev c++
 
คู่มือ Sony Vegus 7.0
คู่มือ Sony Vegus 7.0คู่มือ Sony Vegus 7.0
คู่มือ Sony Vegus 7.0
 
Gisเป้
Gisเป้Gisเป้
Gisเป้
 
Gnewvb01 090401013958-phpapp01
Gnewvb01 090401013958-phpapp01Gnewvb01 090401013958-phpapp01
Gnewvb01 090401013958-phpapp01
 
Gisครีม
GisครีมGisครีม
Gisครีม
 
56170171
5617017156170171
56170171
 
Imv unit7-1-pr3-introduction-pdf
Imv unit7-1-pr3-introduction-pdfImv unit7-1-pr3-introduction-pdf
Imv unit7-1-pr3-introduction-pdf
 

Jenkins, Git, MSBuild, NUnit

  • 2. ก่อนแรกมาทาความรู้จักกับ CI ก่อนนะครับ  CI (Continuous Integration) คือแนวคิด ทัศนะคติ รวมไป ถึงวัฒนธรรมของทีมและองค์กร  สิ่งที่ทีมพัฒนาควรจะตกลงร่วมกันในการพัฒนา 1. เมื่อมีเราทาการดึง code จาก repository ล่าสุดลงมาแล้ว จะต้อง สามารถ build และทดสอบผ่านทั้งหมดอยู่เสมอ 2. ทุกๆ คนจะต้องทาการ check-in code ไปยัง repository ทุกๆ ชั่วโมง หรือ ทุกๆ การเปลี่ยนแปลง ยิ่งทาบ่อยยิ่งดี เพราะว่าการ check-in มัน จะทาให้เกิดการพูดคุยภายในทีมอยู่เสมอ
  • 3. จากข้อตกลงข้างต้นนั้น เราจะทาให้มันเกิดขึ้นได้อย่างไรล่ะ? 1. ก่อนที่จะทาการ Check-in code ของคุณไปยัง repository นั้น จะต้องทาการ build และต้องทดสอบผ่านทั้งหมด 2. แจ้งหรือตะโกนบอกให้ทีมรู้ว่า เราทาการแก้ไข code แล้วนะ เพื่อให้แต่ละคนทาการดึง code ล่าสุดลงมา เพื่อทาให้มั่นใจว่าการ integrate มันผ่านและทางานได้จริงๆ นะ 3. ทาการ Check-in code ไปยัง repository 4. จะต้องมีเครื่อง server หรือเครื่องแยกออกมา ทาการดึง code ล่าสุดจาก repository ลงมา แล้วทาการ build และ ทดสอบทั้งหมดอีกครั้ง เพื่อให้มั่นใจ ว่าทุกๆ อย่างผ่านนะ และในขั้นตอนนี้จะทาให้ไม่เกิดคาพูดที่ว่า มันสามารถทางานได้บน เครื่องผม/หนู นะ!! ดังนั้นถ้าเกิดปัญหาหรือข้อผิดพลาดขึ้นมาก็กลับไปแก้ไขใหม่หรือ rollback กลับไป และกลับไปทาข้อ 1 อีกครั้ง 5. เมื่อข้อ 4 ผ่านแล้ว ให้บอกทุกๆ คนในทีมทาการดึง code ชุดล่าสุดจาก repository ลงมาอีกครั้งหนึ่ง
  • 4. แล้วเราจะลดขั้นตอนการทางานได้อย่างไรล่ะ?  คาถามนี้แหละ เป็นเหตุผลที่ต้องให้ทีมเริ่มมองหาเครื่องมือมาช่วยทาในข้อ 4 เพื่อ รวบรวมขั้นตอนการทางานจากขั้นตอนการทางานของแต่ละคนในทีม ซึ่งทุกคนจะต้อง ทางานด้วยขั้นตอนเหมือนกันด้วยนะ  ตัวอย่างเครื่องมือข้างต้นก็เช่น  SVN (Subversion)  CVS (Concurrent Versions System)  GIT  และอื่นๆ อีกมากมาย
  • 5. กับมาที่ Jenkins มันคืออะไร?  Jenkins ก็คือ open source continuous integration tools เขียนโดย java และยัง support พวก source code management อย่าง git, svn, cvs อีกด้วย  สรุปก็คือ Jenkins จะเข้ามาช่วยทา CI และ Jenkins ยังสามารถเฝ้า repository ใดๆก็ได้เมื่อเกิดการ commit ขึ้น jenkins จะทาการ build version นั้นให้ทันที แล้วเราสามารถกาหนดได้ว่า หาก build สาเร็จให้ ลองรัน test case ก็ได้หรือจะให้ทาอะไร อื่นๆ ต่อไปได้  หลักการของ Jenkins คือเราจะต้องสร้าง Job ขึ้นมาก่อน แล้วกาหนดว่า Job นี้ จะใช้อะไรในการ Build หลังจาก Build สาเร็จแล้วให้ทาอะไร เมื่อได้ Job แล้วเรา ก็สามารถควบคุม Job นี้อีกทีได้เช่นตั้งเวลาการทางาน หรือจะสั่ง build โดยตรงเลย ก็ได้
  • 6. สรุปแล้ว Jenkins CI ช่วยงานเรายังไง ในระบบการพัฒนา sotware ต่าง ๆ หลัก ๆ แล้วจะไม่พ้นในระบบการพัฒนาที่เป็น Design -> Dev -> Test -> Deploy CI มันคือกระบวนการที่ทาให้การส่งผ่านแต่ละขั้นตอนมันเกิดการ continuous คือต่อเนื่องนั่นเอง แต่เดิม Design เสร็จแล้ว Dev ต้องเขียน โปรแกรมเพื่อเปลี่ยน Design ให้เป็น หน้าตาเป็นโปรแกรม Dev เสร็จแล้ว Tester ก็ต้องทาการทดสอบต่าง ๆ เมื่อเสร็จแล้วก็ค่อย Deploy คาถามคือถ้า Test ไม่ผ่านทา ยังไง? Dev ก็ต้องเอาไปแก้ แล้วให้Tester ทาการ Test อีกรอบ ถามว่าตรงนี้จะเกิด การรอไหม? ช้าไหม? คาตอบคือมันช้าแน่ ๆ ไม่มีความต่อเนื่อง พูดถึงปัญหาต่อ ถ้า Test ผ่าน ต้อง Deploy ถูกไหม ปกติก็ต้อง Deploy โดยคน หรือใช้โปรแกรมต่าง ๆ ซึ่ง สุดท้ายก็ไม่พ้นคนอยู่ดี มันเลยมี Technology เข้ามาแก้ปัญหาส่วนนี้
  • 7. แก้ยังไง? จะดีไหมถ้า Tester ไม่ต้องมาทาซ้า ๆ Dev ไม่ต้องคอยบอก Tester ว่าเสร็จ แล้วนะมาเทสด้วย แต่ให้มัน Test โดยอัตโนมัตหลังจากแก้Code เสร็จเลย หรือ แทนที่พอ Test เสร็จแล้ว ผ่านแล้ว Tester ต้องบอกให้คนที่มีหน้าที่ Deploy มา Deploy ต่อ ก็ ให้มันผ่าน Test แล้ว ก็ Deploy เลย มันลดขั้นตอน ลด Overhead เกิด ความเป็น Continuous ขึ้น ทีนี้ทาไมต้อง Integration เพราะว่า Dev Test Deploy มันคนละระบบกัน เลยต้อง Integrate กันแค่นั้นเอง ทีนี้ Jenkins ทาอะไรได้บ้าง มองจากที่ใช้งาน Dev -> update code Jenkins จะทาการดึง code นั้นมาทาการ Test ด้วยโปรแกรมต่าง ๆ ที่ Tester เขียน ถ้า Test แล้วผ่าน ก็ Deploy ด้วย script หรือ Program ไปเลย Jenkins เรียกการทางานเหล่านี้ในหนึ่งกระบวกการว่า Project ใน 1 Project มีหลาย Job ทางานต่อเนื่องกันไป
  • 8. วิธีติดตั้ง Jenkins (สาหรับ windows)  ไปที่ Native packages ด้านขวามือ  เลือก Windows เพื่อ Download  Download ได้จาก https://jenkins-ci.org/
  • 9.  File ที่ได้จากการ download เป็น .rar  ทาการแตก file .rar ออกมา จะได้ออกมาเป็นแบบนี้  เลือก setup เพื่อทาการติดตั้ง
  • 10.  หน้าตาของ File setup ให้ทาการติดตั้งจนเสร็จ
  • 11. หน้าตาของ Jenkins  สามารถ เข้าใช้งาน Jenkins ผ่านทาง web browser ได้  ด้วย url: http://localhost:8080/ 1 2 1 คือส่วนของเมนู ประกอบไปด้วย -สร้าง job ใหม่ -บุคคลที่เข้าใช้งาน -ประวัติการ build -Credentials -คิวของ job ที่กาลังทาการ build -สถานะของ job ที่กาลังทาการ build 2 คือส่วนของjob ประกอบไปด้วย S คือ status ของ job นั้น แบ่งออกเป็น 3สี คือ สีเทา = ยังไม่ได้build สีแดง = job Failed สีเหลือง = job Unstable สีน้าเงิน = job Success W คือ ค่าเฉลี่ยของการ build แต่ละครั้ง มีตั้งแต่ แจ่มใส จนถึง เมฆฝน ก็คือ build แล้ว job Success มากกว่า จนถึง job Failed มากกว่า
  • 12. สิ่งที่ต้องรู้เกี่ยวกับ การเชื่อมต่อ Jenkins กับ Programs ต่างๆ 1. เราควรจะโหลดโปรแกรมเกียวกับ plugins ที่เราจะใช้งานเสียก่อน 2. Plugins ของ jenkins เป็นเพียงตัวเรียกใช้งานโปรแกรมหรือตัวเชื่อมต่อ เท่านั้น 3. ถ้าไม่มีโปรแกรม Plugins ก้อไม่สามารถใช้งานได้
  • 13. การตั้งค่า Jenkins เชื่อมต่อ กับ Git (ติดตั้ง Plugin Git)  ก่อนอื่นต้องทาการติดตั้ง get clients โดยสามารถ download ได้จาก https://git-scm.com/download/win  เมือติดตั้งเสร็จเรียบร้อยให้กลับมาที่ Jenkins เพื่อทาการโหลด Plugin  กดเข้าไปที่ Manage Jenkins -> Manage Plugins -> Available / Installed(ที่มีอยู่)  ติ๊กถูกเลือก Git Plugin และ Git Client Plugin  กด  รอให้Jenkins ติดตั้ง Plugin จนเสร็จ  ติ๊กถูกที่
  • 14. การตั้งค่า Jenkins เชื่อมต่อ กับ Git (ตั้งค่า Git ให้พร้อมใช้งาน)  กดเข้าไปที่ Manage Jenkins -> Configure System  เลือกไปที่ Git -> Add Git ใส่ Name กับ Path to Git…  เมื่อใส่เสร็จเรียบร้อย กด Save ,เสร็จการตั้งค่า Git แล้วนะครับ ^^ ในช่องนี้ให้ใส่ Path ของ Git Clients ที่เรา download มาแต่แรก เดิมทีจะอยู่ที่ C:Program FilesGitcmdgit.exe
  • 15. การตั้งค่า Jenkins เชื่อมต่อ กับ MSBuild (ติดตั้ง Plugin MSBuild)  โดยปกติ MSBuild จะมากับการลง MS.Visual Studio  กดเข้าไปที่ Manage Jenkins -> Manage Plugins -> Available / Installed(ที่มีอยู่)  ติ๊กถูกเลือก MSBuild Plugin  กด  รอให้Jenkins ติดตั้ง Plugin จนเสร็จ  ติ๊กถูกที่
  • 16. การตั้งค่า Jenkins เชื่อมต่อ กับ MSBuild (ตั้งค่า MSBuild ให้พร้อมใช้งาน)  กดเข้าไปที่ Manage Jenkins -> Configure System  เลือกไปที่ MSBuild -> MS Build installations... -> Add MSBuild, ใส่ Name กับ Path to MSBuild …  เมื่อใส่เสร็จเรียบร้อย กด Save ,เสร็จการตั้งค่า MSBuild แล้วนะครับ ^^ ในช่องนี้ให้ใส่ Path ของ MSBuild ปกติทีจะอยู่ที่ C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
  • 17. การใช้งาน jenkins ร่วมกับ Git, MSBuild และ Nunit  เริ่มจากการสร้าง job กัน Jenkins -> New item(ใหม่ Item) -> ใส่ Item name เลือก Freestyle project -> กด OK  จะได้หน้าตาของ Item ที่เราสร้างขึ้นมาใหม่
  • 18. ใช้งาน Git ทาไม?  เพราะเป็นโปรแกรม Source Code Management หรือโปรแกรมจัดการซอส โค้ด นั้นเอง เราจึงต้องใช้งาน โปรแกรมประเภทนี้ เพื่อ ดึงซอสโค้ด มาให้jenkins ได้เรียกใช้งาน ต่างๆนาๆ  แล้วใช้โปรแกรม Source Code Management ตัวอื่นมีไหม? แล้วสามารถใช้ ร่วมกับ jenkins ได้ไหม? แล้วทาไมต้องใช้ Git?  คาตอบคือ มีครับ เช่น CVS, SVN เป็นต้น แล้วก็สามารถใช้ร่วมกับ jenkins ได้เช่นกัน เหตุผลที่ใช้Git เพราะเป็น Source Code Management ที่ได้รับความนิยม สูงสุดในการใช้ร่วมกับ jinkins ซึ่งทาให้หาข้อมูลได้ง่าย และที่สาคัญคนสั่งให้ทา presentation บอกให้ทา ผมจึงต้องทาครับ - -’  และควรจะ build job ให้ผ่านเพื่อให้รู้ว่าตอนนี้ เราสามารถดึง Source Code ได้แล้ว
  • 19. การใช้งาน Git 1. มาที่ Source Code Management เลือกที่ Git 2. ใส่ URL ของ Git ที่ต้องการ 3.กด Add เพื่อใส่ username, password (ถ้ามี) เมื่อเซตทุกอย่างแล้ว กด Save ได้เลย
  • 20. การสั่ง build Job ของ Jenkins 1. กด “Build Now” เพื่อสั่ง build ตอนนี้ Job เรากาลัง build ครับ
  • 21. ใช้งาน MSBuild ทาไม?  หลังจากที่เรา build Git ของเราผ่านแล้ว ตอนนี้เราได้ Source Code มาอยู่ที่เครื่อง แล้วนะครับ ปกติจะอยู่ที่ C:Program Files (x86)Jenkinsjobs[ชื่อ item ที่เราตั้ง]workspace  เพราะเราทา Web App ด้วย MVC ซึ่งพัฒนาจาก MS. visual studio  เพราะเป็นโปรแกรมที่ติดตั้งมาพร้อมกับ visual studio เพื่อใช้ในการ build โปรแกรม  ซึ่งถ้าเราต้องการเช็คว่าโปรแกรมเรา build Source Code ของ VS ได้ไหม มี Error หรือ Warnings หรือป่าว และใช้งาน test อื่นๆต่อไป เราควรจะใช้ MSBuild ในการ build ให้สาเร็จเสียก่อน
  • 22. การใช้งาน MSBuild 1. Add build step -> Build a Visual Studio… 2. MSBuild Version เลือก Version ของ .Net 3. ใส่ Path ที่เก็บ .sln (ไฟล์ที่ไว้รันโปรเจคอะครับ) 4. (ตย.)ถ้ามีปัญหา กรณี MSBuild Build Version ที่เครื่องไม่มี สามารถ ใช้คาสั่ง Command Line เปลี่ยนได้
  • 23. การใช้งาน Nunit ทาไม?  หลังจากที่ใช้งาน MSBuild ได้แล้ว ตอนนี้ Project เราสามารถ build Source Code ของ VS ได้แล้วนะครับ  เพราะเราใช้ Nunit ในการ test Project เราจึงต้อง เชื่อมต่อ Nunit เพื่อ test job ใน jenkins  และที่สาคัญเหมือนเดิมครับ คนสั่งให้ทา presentation บอกให้ทา ผมจึง ต้องทาครับ - -’  ก่อนอื่น เราต้องโหลด Nunit เพื่อเรียกใช้งาน จาก http://nunit.org/?p=download
  • 24. การใช้งาน Nunit 1. Add build step -> Execute Windows batch commend 2. ใส่ “pathของNunit” ตามด้วย pathของtest ที่เราสร้างไว้ 3. กด Save
  • 25.  หลังจากที่ Build Now เข้ามาใน Build Hissory เพื่อดู console เลือก build ที่เราพึ่ง build  ถ้าขึ้นยังงี้ คือ เราสามารถ run test ผ่านหมดแล้วนะครับ
  • 26.  เรามาดูที่ foder job เรา จะได้ไฟล์ .xml แบบนี้มานะครับ  จากนั้นเราไปที่ Configure เพื่อ ทา report  เลื่อนลงมาที่ Add post-build action -> Publish Nunit test… 1. ใส่ path ของ .xml ที่ได้มา 2. กด Save
  • 27. การดู Report  หลังการ Save แล้ว เข้ามาดูที่ build ล่าสุด จะได้test Result ขึ้นมา สามารถ กดไปดูได้
  • 29. การตั้งเวลาในการ poll&build 2. (ตย)การตั้งเวลา Build ทุก 10 นาที 1. (ตย)การตั้งเวลา Poll ทุก 10 นาที เมื่อเซตทุกอย่างแล้ว กด Save ได้เลย
  • 30. การทาให้Jenkins build ทุกครั้งที่ git มีการ เปลี่ยนแปลง
  • 31.  นา link ที่เรา copy มาวางไว้ใน Webhook & Services  เท่านี้ Jenkins ก็สามารถเอา Code มา build ทุกครั้งที่คุณ push ขึ้น git server แล้วครับ  ***ถ้าหากคุณติดตั้ง Jenkins ไว้หลัง Router บ้านคุณเองอย่าลืมที่จะทา Port Forwarding นะครับ...!!!