Triển khai CI/CD với gitlab

Vu
Devops là dễ
Published in
3 min readMar 4, 2020

Trong bài viết này mình sẽ nói về cách triển khai CI/CD một rails app với gitlab và deploy lên heroku.

  1. CI/CD là gì?

CI/CD là viết tắt của Continuous Integration(CI) và Continuous Delivery(CD), khái niệm này được đưa ra từ năm 1991. Đây là một quy trình hỗ trợ cho việc phát triển phần mềm.

CI là quy trình để build và test tự động. Mỗi một commit khi được push lên sẽ được build các package cần thiết và chạy test. Các lệnh này được định nghĩa từ trước.

CD là quy trình để tự động deploy lên môi trường test, staging hay production.

Qua đây ta có thể thấy tác dụng của CI/CD là tự động hoá việc buil, test, deploy.

2. Triển khai

Cách làm của mình ở phần này sẽ là:

Tạo một rails app -> config gitllab-ci -> deploy lên heroku

Khởi tạo 1 rails app:

Có lưu ý ở phần này là Heroku không allow SQLite nên ta sẽ thay thế bằng PostgreSQL.

Mình dùng macOS nên trước tiên phải cài PostgreSQL thông qua brew:

brew install postgresql

Tạo một app rails:

rails new rails_heroku -d postgresql

Tạo một trang welcome đơn giản:

rails g controller welcome index

Sửa lại trang root:

# config/routes.rb
root 'welcome#index'

Commit và push lên repository trên gitlab.

Config project

Khi push một commit lên gitlab, gitlab sẽ tìm và chạy file .gitlab-ci.yml. Trong bài viết này, mình sẽ tạo 1 file gitlab-ci đơn giản, có 2 stages là test và deploy:

test:
stage: test
script:
- echo "everything OK!"
staging:
stage: deploy
script:
- gem install dpl
- dpl --provider=heroku --app=heroku_app_name --api-key=$HEROKU_STAGING_API_KEY
only:
- master

Trong file này đã định nghĩa 2 stage:

  • test: stage này khi chạy sẽ hiển thị ra dòng chữ “everything OK!”
  • staging: stage này dùng để deploy app của ta lên heroku. Để thực hiện được bước này ta cần tạo một app trên heroku có tên là heroku_app_name. $HEROKU_STAGING_API_KEY được lấy từ link tại mục API Key. Ta cần add key này vào project trên gitlab theo đường dẫn Settings > CI/CD > Variables.

Tạo một commit

git add .
git commit -m 'add file gitlab-ci'
git push origin master

Kiểm tra trên gitlab

Kết quả:

Truy cập vào đường link được sinh ra khi tạo app trên heroku.

--

--