
Thông thường các hệ thống chỉ có cơ sở dữ liệu (CSDL) của chính nó, nhưng với các hệ thống phức tạp hơn, liên kết với các hệ thống khác thì nhiều khi sẽ phải truy cập trực tiếp vào các CSDL bên ngoài để lấy thông tin. Trên CircleCI, để tạo CSDL của chính hệ thống ta chỉ cần gọi bundle exec rake db:create
và bundle exec rake db:migrate
(ở đây mình giả sử các bạn sử dụng Rails) là tất cả các bảng sẽ tự động được tạo ra. Nhưng còn CSDL của hệ thống bên ngoài thì làm như thế nào ? Hôm nay mình sẽ giới thiệu với các bạn cách xử lý trong tình huống này.
Bước 1: Cài đặt postgres trên CircleCI
Cài đặt postgres ta cần chạy các lệnh sau
sudo curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install -y postgresql-client
Chú ý trước mỗi câu lệnh đều cần thêm sudo vì để thực hiện các lệnh này trên CircleCI ta cần quyển root
Bước 2: Tạo CSDL thứ 2
Khi đã có postgres ta có thể sử dụng câu lệnh SQL để tạo CSDL như sau
psql -h localhost -U #{user_name} -c "CREATE DATABASE #{database_name};"
user_name
là giá trị của POSTGRES_USER
ta khai báo tại image postgres (giả sử rằng bạn config image postgres trong file config.yml của circleci). Để hiểu hơn về cách viết file config.yml các bạn có thể đọc bài Tích hợp CircleCI trong phát triển ứng dụng Ruby on Rails mình đã viết khá lâu trước đây.
Bước 3: Tạo các bảng cần thiết trong CSDL
Trong test case các bạn cần đến bảng nào thì tạo thêm bảng đó. Ví dụ mình cần bảng User thì sẽ viết lệnh SQL như sau. Câu lệnh khá là dài vì vậy mình cho vào file users.sql rồi sử dụng tag -f của psql.
// users.sql CREATE TABLE public.users ( id serial not null primary key, name string, email string, phone string )
sử dụng psql để tạo bảng users
psql -h localhost -U #{user_name} -d #{database_name} -f users.sql
# Bước 4: Tổng hợp các bước trên
Từ các bước trên ta sẽ thêm lệnh run vào config.yml
- run: name: Setup Secondary Database command: | sudo curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - sudo apt-get update && sudo apt-get install -y postgresql-client psql -h localhost -U #{user_name} -c "CREATE DATABASE #{database_name};" psql -h localhost -U #{user_name} -d #{database_name} -f db/sql/users.sql
Kết quả
Tạo thành công CSDL và các bảng trên CircleCI
Như vậy mình đã hướng dẫn các bạn tạo thêm CSDL thứ 2 ngoài CSDL của hệ thống chính trên CircleCI. Chúc các bạn thành công!