Bỏ qua để đến nội dung

CLI và CI/CD

Model chỉ thực sự là “nguồn sự thật” khi thay đổi trên model tự động chảy xuống database — không phụ thuộc ai đó nhớ export thủ công. Hackolade cung cấp CLI (Command-Line Interface) để làm việc đó: mọi thao tác chính của Studio đều gọi được bằng dòng lệnh, chạy được trong Docker container, ghép thẳng vào pipeline CI/CD (Continuous Integration/Continuous Deployment).

Cú pháp chung: hackolade <command> [--arguments] (trên Windows, đường dẫn cài đặt có dấu cách thì gọi qua dạng rút gọn, ví dụ C:\PROGRA~1\Hackolade\hackolade).

LệnhChức năng
revEngReverse engineering: kết nối database hoặc đọc file script để lấy/suy luận schema thành model
forwEngForward engineering: sinh script/schema (DDL — Data Definition Language, JSON Schema…) từ model
compModSo sánh hai model, phát hiện khác biệt, tùy chọn merge
genDocSinh tài liệu model ra HTML, Markdown hoặc PDF
forwEngAPISinh đặc tả Swagger/OpenAPI từ model và template
polyglotConvert / polyglotDerive / polyglotUpdateChuyển model vật lý thành polyglot model (model logic dùng chung), derive model target từ polyglot, và đồng bộ các target khi polyglot thay đổi
forwEngDataDictionary / revEngDataDictionaryĐẩy model lên nền tảng governance (Collibra) và lấy/đồng bộ ngược về
obfuscLàm rối (garble) các thuộc tính nhạy cảm: business name, technical name, description, comment — hữu ích khi cần gửi model ra ngoài
extRefUpdateCập nhật các model tham chiếu khi external reference thay đổi
openMở Hackolade Studio với một file model chỉ định

Theo tài liệu chính thức, CLI chỉ có trong các edition: Professional, Workgroup, và bản trial 14 ngày. Community và Personal không có CLI. Với máy build/agent CI chạy CLI, cần tính seat license cho máy đó — trao đổi với hãng về mô hình phù hợp (per-seat hay floating, xem bài License và kích hoạt).

Về hạ tầng: Hackolade có hướng dẫn chính thức chạy CLI trong Docker container — đây chính là kịch bản hãng nhắm tới cho CI/CD; file cấu hình đầy đủ đặt trên GitHub của Hackolade. Docs cũng ghi nhận hai kiểu kích hoạt trong pipeline: push-triggered (sự kiện Git kích hoạt) và pull-triggered.

Team đặt model trong Git repository (Workgroup edition có tích hợp Git native). Khi data architect sửa model và mở pull request:

  1. Pipeline chạy compMod so bản mới với nhánh chính — reviewer thấy chính xác schema thay đổi gì.
  2. Merge xong, pipeline chạy forwEng sinh DDL/script migration từ model.
  3. Script sinh ra được apply lên môi trường dev/staging (bằng tool migration sẵn có của team), chạy test.
  4. genDoc sinh lại tài liệu HTML/Markdown, publish lên portal nội bộ — tài liệu không bao giờ lệch model.
flowchart LR
  A[Data architect<br>sửa model] --> B[Pull request<br>trên Git]
  B --> C[CI: compMod<br>báo cáo khác biệt]
  C --> D{Review &<br>merge}
  D --> E[CI: forwEng<br>sinh DDL/script]
  E --> F[Apply lên<br>dev/staging]
  D --> G[CI: genDoc<br>cập nhật tài liệu]

Ví dụ dưới đây chỉ mang tính minh họa cấu trúc pipeline — tên image, đường dẫn, tham số lệnh và cách cấp license cho runner cần điều chỉnh theo môi trường thực tế của bạn (tham chiếu hướng dẫn Docker + CLI chính thức của Hackolade trên GitHub để có arguments chính xác):

name: schema-forward-engineering
on:
push:
branches: [main]
paths: ['models/**']
jobs:
generate-ddl:
runs-on: self-hosted # runner đã cài Hackolade CLI + license hợp lệ
steps:
- uses: actions/checkout@v4
- name: Sinh DDL tu model
run: |
hackolade forwEng \
--model models/ban-le-khach-hang.json \
--path out/ddl
- name: Sinh tai lieu model
run: |
hackolade genDoc \
--model models/ban-le-khach-hang.json \
--format markdown \
--doc out/docs
- name: Luu artifact
uses: actions/upload-artifact@v4
with:
name: schema-output
path: out/

Bước “apply lên database” nên tách riêng và đi qua cơ chế duyệt (environment approval) — sinh script là việc của Hackolade, còn thực thi script lên môi trường production luôn cần con người xác nhận.

CLI đẩy được model lên cả nền tảng governance — xem bức tranh lớn hơn tại Tích hợp hệ sinh thái dữ liệu.

BSD Insight là đối tác triển khai Hackolade tại Việt Nam — liên hệ tư vấn.

Chia sẻ: