08/05/2016

Cấu hình Gitlab CI: Python Django + Gitlab + Gitlab Runner + Heroku




Trong khuôn khổ bài viết mình sẽ không đề cập nhiều về các khái niệm như CI là gì? Travis CI dùng để làm gì? Làm thế nào để auto deploy lên server production, ...


Các bạn có thể tham khảo các link sau:



Bài viết nhằm hướng dẫn làm thế nào để sử dụng công cụ có sẵn của Gitlab là Gitlab CI và Shared Runner để thực hiện quy trình CI của dự án.

Ví dụ trong bài sử dụng Python example project (Django) của Heroku

Bên dưới là các bước thực hiện, các bạn cần follow theo đúng quy trình để đạt được kết quả như mong muốn.

B1. Clone xample project từ Github về Gitlab: https://github.com/heroku/python-sample
Tip: bạn nên fork project này về account github personal sau đó dùng third-party để clone về Gitlab.


B2. Lấy API key của Heroku tại: https://dashboard.heroku.com/account



B3. Cấu hình .gitlab-ci.yml



Trong cấu hình này sẽ có 3 jobs sẽ thực hiện:

- test: chạy các script test trong project
- staging: auto deploy lên staging environment mỗi khi có push lên branch master (phần này do mình cấu hình)
- production: auto deploy lên production environment mỗi khi tạo tags mới

* quy trình thực thi: 
+ test passed -> staging || production
+ test failed -> skipped

* trong phần auto deploy (staging, production) sử dụng deloyment tool của Travis-CI tên gọi là Dpl http://doc.gitlab.com/ce/ci/deployment/README.html


B4. Add Heroku API vào Variables project

url: https://gitlab.com/username/project_name/variables


B5. Thử commit mới trên repo đã clone 
Tip: trong hình là mình clone về máy rồi edit -> commit, các bạn có thể edit trực tiếp trên Gitlab đỡ tốn thời gian clone về local.


Commit xong, trên Gitlab sẽ create Build Task và thực thi command trong file .gitlab-ci-yml




(Build succeeded and auto deployed)


Thành quả cuối cùng !

Ngoài lề: Bạn sẽ thắc mắc là  lấy đâu ra Runner đã chạy CI cho project của bạn, thực ra thì Gitlab và Digital Ocean mới hợp tác để hỗ trợ miễn phí Runner với tên gọi là Shared runners. Ngoài ra bạn cũng có thể setup cho mình 1 runner riêng sau đó link về project trên GL.



Vậy từ giờ bạn đã có thể áp dụng quy trình CI trên cả private project mà không cần các dịch vụ có phí như Travis CI (chỉ áp dụng trên Github và Bitbucket), CircleCI hoặc Codeship mà có thể sử dụng Gilab CI như một quy trình tích hợp liên tục của dự án.


1 nhận xét: