ทำ Continuous Integration ด้วย Gitlab
หลังจาก Blog ที่แล้วได้เล่าถึง วิธีการติดตั้ง Gitlab ไปแบบคร่าวๆ คราวนี้เราจะใช้เจ้า Gitlab ทำ Continuous Integration กันดู โดยในที่นี้จะใช้โปรเจคนี้เป็นตัวอย่างในการทำ (https://github.com/kittinan/thailandpost-track) ซึ่งเราจะทำกับภาษา PHP นั้นเองสมมุติว่าเจ้าโปรเจค https://github.com/kittinan/thailandpost-track อยู่บน Gitlab ของเราเรียบร้อยแล้วนะครับ
สิ่งที่เราต้องทำอันดับแรกก็คือ เราต้องติดตั้งเจ้า Gitlab Runner (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner) ซึ่งเจ้าตัวนี้มีหน้าที่ทำการ Build และรันทดสอบ Code ของเราตามที่เราต้องการ
ติดตั้ง Gitlab Runner
https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md
วิธีการติดตั้งก็ง่ายๆเหมือนติดตั้งเจ้า Gitlab นั้นแหละ
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-ci-multi-runner
เปิดการใช้งาน Continuous Integration
คลิก Add Project to CI
ให้เราเข้าไปที่เมนู Runner
เมื่อเข้ามาในหน้า Runner แล้ว เจ้า Gitlab ก็จะมีให้เลือกว่าเราจะใช้ Sepecific runners หรือ Shared runners
Sepecific runners - private server ของเราเอง
Shared runners - server ฟรีของ gitlab
ให้กลับไปที่ Server ที่เราเพิ่งลง Gitlab Runner ไว้ รันคำสั่ง
sudo gitlab-ci-multi-runner register
ให้เรานำ url ที่อยู่ในหน้าเวปมาใส่ ในที่นี้ก็คือ http://gitlab.kittinan.domain/ci
หลังจากใส่ url แล้วก็ใส่ token ต่อ หลังจากนั้นจะมีให้ใส่ Description กับ tag จะใส่ไม่ใส่ก็แล้วแต่
แล้ว Gitlab Runner จะถามว่าจะใช้ executor ตัวไหน ซึ่ง Gitlab Runner ก็สามารถใช้ได้หลายอย่างเช่น docker, docker-ssh, ssh, shell, parallels ในที่นี้ใช้ shell ดังภาพ
เมื่อเรา Refresh หน้าเวป Runner ก็จะมี Runner ที่ Activate แล้วขึ้นมา
เตรียม Server ให้พร้อมรัน Test (PHP)
sudo apt-get install php5-cli php5-curl
ติดตั้ง composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/bin/composer
เสร็จสิ้นการเตรียม environment สำหรับการรัน Test โปรเจคนี้
สร้างไฟล์ .gitlab-ci.yml
สำหรับคำสั่งในไฟล์ .gitlab-ci.yml
before_script คือ ก่อนจะเริ่มทำงานตาม job ต่างๆ ให้ทำอะไรก่อนบ้าง ในที่นี้สั่งให้ composer โหลด library ต่างๆ
job1: <--- ชื่องาน ในที่นี้คือ job1 เราจะตั้งเป็นอะไรก็ได้เช่น TestModel
script:
- vendor/bin/phpunit tests/ <-- สั่งให้รัน test ใน directory tests
สามารถดูคำสั่งที่ใช้ใน .gitlab-ci.yml เพิ่มเติม ได้ที่ http://doc.gitlab.com/ci/yaml/README.html
เมื่อเพิ่มไฟล์ .gitlab-ci.yml ให้ทำการ commit และ push
ดูผลลัพท์ใน Gitlab
เข้าหน้าเวป Gitlab ของเรา ดูที่ commit ก็จะเห็นสถานะของการรัน Test ดังภาพ
ภาพขณะตัว Runner กำลังรัน composer เพื่อโหลด library ต่างๆ
ภาพเมื่อรัน Test เสร็จแล้ว
พอเรากลับมาดูที่หน้า Commit ก็จะเป็นว่า Run Test ผ่านเรียบร้อย Success เขียวๆ ดังภาพ
เป็นอันเสร็จสิ้นการทำ Continuous Integration ด้วย Gitlab (PHP) แบบคร่าวๆแล้วครับ
REF:
https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md
https://about.gitlab.com/gitlab-ci/
http://doc.gitlab.com/ci/yaml/README.html
0 comments: