Topic 10: Test PHP project with PHPUnit

1. ในหน้า Homepage ของ Jenkins ให้เลือก New Item เพื่อสร้าง Item ใหม่ ใน Jenkins โดยกดที่ New Item

2. เมื่อเลือก new item ให้ตั้งชื่อ Project จากนั้นเลือกแบบFreestyle project และกด OK เพื่อสร้าง Project

3. ให้เลือก Source Code Management และเลือกที่ Git เพื่อเพิ่ม Repository URL ซึ่งนำมาจาก GitLab
หมายเหตุ: ถ้าหากไม่สามารถใส่ git repository ได้ จะต้องตั้งค่า config ให้กับ Jenkins ให้เข้าไปที่ Directory ของ Jemkins โดยคำสั่ง
cd /var/lib/jenkins/jobs/
git ls-remote -h git@gitlab.com:username/repository.git HEAD
หรือหลังจาก add ssh key ให้ทดสอบ clone project มาไว้ใน Jenkins เพื่อตรวจสอบ status การ link ระหว่าง GitLab และ และ Jenkins โดยเปลี่ยนเป็นใช้ผู้ใช้งานแบบ Jenkins และใช้คำสั่ง
sudo su jenkins
cd ~

ssh-T git@gitlab.com
หมายเหตุ: ถ้าหากสถานะ 200 เป็นสถานเชื่อต่อสำเร็จ แต่ถ้า 404 จะเชื่อมต่อไม่สำเร็จ

4. จากนั้นเลือก Build Triggers และเลือก Poll SCM และกำหนดค่าเป็น * * * * * เพื่อตรวจสอบการเปลี่ยนแปลง หรือการเพิ่มไฟล์ใหม่ใน Git ทุก 1 นาที (build automated 1 นาที) จากนั้นกด Save

อ้างอิง: https://medium.com/devopsthailand/มี-git-แล้วชีวิตง่ายขึ้น-เรามา-set-ให้-jenkins-กับ-GitLab-รู้จักกันดีกว่า-65c983c6720f

5.
จากนั้นเลือก Build ให้กด Add build step และเลือกเป็น Invoke Ant กำหนด Targets เป็น build-phpunit
เพื่อทำการ build PHPUnit และทดสอบ project อัตโนมัติทุกครั้ง เมื่อมีไฟล์ถูกดึงมากจาก Git ที่เกิดจากการ commit ล่าสุด
หมายเหตุ: build-phpunit เป็น target ซึ่งสามารถตรวจสอบได้จากไฟล์ build.xml

3. ในส่วนของ Post-build Actions ให้กด Add post-build action และเลือก Publish xUnit test result report

    เมื่อได้ดังนี้ ให้เลือก Add และเลือกเป็น PHPUnit-3.x (default) จากนั้นให้กำหนด Path เป็นbuild/logs/junit.xml ซึ่ง junit.xml เป็นไฟล์ที่เก็บผลลัพธ์จากการทดสอบของ PHPUnit

4. เมื่อทำการสร้างและตั้งค่าให้กับ Project จะได้ตัวอย่างดังนี้

5. workspace จะเป็นโฟลเดอร์ในการเก็บ project ที่ได้จากการ Pull ของ git
6. ในการทดสอบ code โดย PHPUnit แบบอัตโนมัติ จะต้องใช้ build.xml และ phpunit.xml.dist ซึ่งถูก build เมื่อมีไฟล์เพิ่ม หรือแก้ไขบน GitLab ผ่าน Repository URL
     6.1 การทดสอบ code ด้วย PHPUnit  จะต้องนำไฟล์ที่เขียนเพื่อทดสอบนมาเก็บไว้ในโฟลเดอร์ tests
     6.2 build/logs ถูกสร้างโดยไฟล์ build.xml จะเป็นโฟลเดอร์ที่เก็บผลการทดสอบไว้ในไฟล์ junit.xml ซึ่งใช้ในการแสดงผลบน Jenkins
    6.3 โฟลเดอร์ project ใช้เก็บ code เพื่อใช้ test function
 

7. ตัวอย่าง code ที่ใช้ทดสอบด้วย PHPUnit
    7.1 datax.php จะถูกเก็บในโฟลเดอร์ Project เพื่อใช้ทดสอบ function getUser มี code ดังนี้



  7.2 dataxtest.php จะถูกเก็บในโฟลเดอร์ tests เพื่อใช้ในการทดสอบด้วย PHPUnit มี code ดังนี้



8. เมื่อเขียนทดสอบเสร็จ ให้อัพขึ้น GitLab ซึ่ง Jenkin จะทำการ pull และทดสอบพร้อมกับแสดงผลลัพพธ์ ซึ่งสามารถดูผลการทดสอบได้ที่ Lastest Test Result
อ้างอิง: http://freepdf-books.com/integrating-php-projects-with-jenkins/

ความคิดเห็น