0
0
Lập trình
NM

Học hỏi từ Tập tin YML trong CI/CD

Đăng vào 1 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

Học hỏi từ Tập tin YML trong CI/CD

Trong dự án của chúng tôi, chúng tôi đã tự động hóa việc triển khai cơ sở dữ liệu bằng cách tích hợp Liquibase với GitLab CI/CD. Chúng tôi đã cấu trúc kho mã nguồn với các thư mục theo môi trường và một bản changelog chính, đảm bảo các thay đổi về schema được kiểm soát phiên bản.

Cấu trúc Pipeline CI/CD

Pipeline chạy vào ban đêm với ba giai đoạn chính: Pre-DB (sao lưu, xác thực, xem trước SQL), DB (cập nhật Liquibase & gán thẻ), và Post-DB (sửa lỗi dữ liệu, thu thập thống kê, tái biên dịch các đối tượng không hợp lệ). Các thông tin xác thực cơ sở dữ liệu và driver JDBC được quản lý một cách an toàn thông qua các biến CI và artifacts.

Mỗi changeset bao gồm các script rollback và được xem trước bằng cách sử dụng liquibase updateSQL trước khi thực thi, giúp giảm thiểu rủi ro trong môi trường sản xuất. Các pipeline theo lịch được cấu hình với các quy tắc thích hợp, và logs cùng với các bản xem trước được lưu trữ như artifacts để phục vụ cho việc kiểm toán.

Phương pháp này đã giảm thiểu nỗ lực thủ công, cải thiện độ tin cậy và đảm bảo việc triển khai cơ sở dữ liệu nhất quán giữa các môi trường.


Tự động hóa Pipeline CI/CD trong GitLab

Trong GitLab, một pipeline theo lịch cho phép thực hiện tự động các job vào những thời điểm cụ thể bằng cách sử dụng các biểu thức cron. Tập tin .gitlab-ci.yml xác định cấu trúc của pipeline, bao gồm các giai đoạn, job và các script được thực thi. Mỗi job có thể chỉ định các quy tắc hoặc chỉ: [schedules] để kiểm soát thời gian chạy, đảm bảo các job theo lịch không được kích hoạt khi có push hoặc merge requests.

Khi một lịch trình được tạo ra trong giao diện người dùng của GitLab, nó nhắm đến một nhánh và xác định thời gian cũng như các biến tùy chọn. Tại thời điểm đã định, GitLab sẽ kích hoạt một pipeline trên nhánh đã chọn với CI_PIPELINE_SOURCE="schedule". Runner sẽ tiếp nhận các job mà quy tắc của chúng phù hợp với ngữ cảnh theo lịch và thực thi các script đã định nghĩa. Logs và trạng thái của job được ghi lại trong GitLab để phục vụ cho việc giám sát và gỡ lỗi. Các biến được xác định trong lịch trình được truyền vào pipeline, cho phép cấu hình động.

Việc sử dụng các giai đoạn đảm bảo rằng các job sẽ được thực thi theo thứ tự mong muốn ngay cả trong các pipeline phức tạp. Tổng thể, việc tích hợp này cung cấp một cơ chế tự động hóa đáng tin cậy để thực hiện các tác vụ lặp đi lặp lại mà không cần can thiệp thủ công. Bằng cách kết hợp các quy tắc trong .gitlab-ci.yml và lịch trình GitLab, các nhóm có thể hoàn toàn kiểm soát những gì được thực hiện và khi nào, duy trì tính linh hoạt và hiệu quả trong quy trình CI/CD.


Các Thực Hành Tốt Nhất

  • Quản lý Biến Môi Trường: Sử dụng biến môi trường để bảo mật thông tin xác thực.
  • Kiểm Tra Trước Khi Thực Thi: Luôn sử dụng liquibase updateSQL để xem trước các thay đổi trước khi thực hiện.
  • Lưu Trữ Logs: Đảm bảo logs và artifacts được lưu trữ cho việc kiểm toán.

Những Cạm Bẫy Thường Gặp

  • Không Giám Sát Logs: Bỏ qua việc theo dõi logs có thể dẫn đến việc bỏ sót các lỗi quan trọng.
  • Thiếu Quy Tắc Rõ Ràng: Không thiết lập quy tắc rõ ràng cho các job có thể dẫn đến việc chạy không đúng thời gian mong muốn.

Mẹo Tối Ưu Hiệu Suất

  • Tối Ưu Hóa SQL: Đảm bảo các câu lệnh SQL trong Liquibase được tối ưu hóa để cải thiện hiệu suất.
  • Sử Dụng Cache: Cân nhắc sử dụng cache cho các job để giảm thời gian thực thi.

Khắc Phục Sự Cố

  • Lỗi Kết Nối Cơ Sở Dữ Liệu: Đảm bảo các biến môi trường chứa thông tin chính xác.
  • Lỗi Trong Thực Thi Liquibase: Kiểm tra các thay đổi trong changelog và đảm bảo tính hợp lệ.

Tóm Tắt

Chúng tôi đã xây dựng và tinh chỉnh các pipeline CI/CD dựa trên GitLab (dựa trên YAML) để tự động hóa việc thực thi các script PL/SQL và các thay đổi cơ sở dữ liệu, loại bỏ các can thiệp thủ công. Điều này không chỉ giúp tiết kiệm thời gian mà còn đảm bảo tính nhất quán và độ tin cậy trong toàn bộ quy trình phát triển phần mềm.

FAQ

1. CI/CD là gì?
CI/CD là quy trình tự động hóa việc xây dựng, thử nghiệm và triển khai phần mềm.

2. Liquibase là gì?
Liquibase là một công cụ mã nguồn mở giúp quản lý các thay đổi trong cơ sở dữ liệu.

3. Tại sao nên sử dụng pipeline theo lịch?
Điều này giúp tự động hóa các tác vụ lặp đi lặp lại mà không cần can thiệp thủ công, tiết kiệm thời gian và giảm thiểu lỗi.

Liên Kết Tài Nguyên

Hãy tự động hóa quy trình phát triển của bạn ngay hôm nay với CI/CD!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào