Artifacts trong CI/CD không nên phức tạp — DSCI làm cho nó trở nên đơn giản hơn bao giờ hết
Bài viết giới thiệu cách tiếp cận mới của hệ thống CI/CD tên DSCI (Deadsimple CI) trong việc xử lý artifacts, giúp giảm đáng kể độ phức tạp của pipeline. Thay vì cấu hình phức tạp, chỉ cần tạo file trong thư mục ~/artifacts/ là mọi job trong pipeline có thể truy cập dễ dàng, giống như một bộ đệm dữ liệu tự nhiên.
Artifacts trong CI/CD không nên phức tạp — DSCI làm cho nó trở nên đơn giản hơn bao giờ hết
Trong các hệ thống CI/CD truyền thống như Jenkins, GitLab CI hay GitHub Actions, việc quản lý artifacts (tệp kết quả giữa các bước) thường đòi hỏi cấu hình phức tạp, khai báo đường dẫn, quyền truy cập và cơ chế lưu trữ riêng. DSCI (Deadsimple CI) — một hệ thống CI/CD mã nguồn mở mới — đang thách thức quan điểm đó bằng một phương pháp tiếp cận tối giản đến bất ngờ.
Artifact trong DSCI: Chỉ là một thư mục
Thay vì sử dụng các cú pháp cấu hình như artifacts: paths: trong GitLab CI hay actions/upload-artifact trong GitHub Actions, DSCI định nghĩa artifact đơn giản là bất kỳ tệp tin nào nằm trong thư mục ~/artifacts/ trên môi trường chạy job.
Ví dụ, trong một task chạy bằng Bash, bạn chỉ cần tạo một tệp tin:
#!/bin/bash
echo "DSCI is cool" > ~/artifacts.txt
Đó là toàn bộ quá trình tạo artifact. Không cần khai báo thêm bất kỳ cấu hình nào.
Ở job tiếp theo (ví dụ viết bằng Python), tệp tin đó sẽ tự động xuất hiện:
#!/usr/bin/python3
from pathlib import Path
file_path = Path.home() / "artifacts.txt"
try:
with open(file_path, "r", encoding="utf-8") as file:
content = file.read()
print(content) # Kết quả: "DSCI is cool"
except FileNotFoundError:
print(f"Error: The file at {file_path} was not found.")
Cơ chế hoạt động: Buffer dữ liệu liên pipeline
Điểm thú vị của DSCI là artifacts hoạt động như một bộ đệm dữ liệu xuyên suốt pipeline:
- Nếu job A tạo file trong
~/artifacts/, job B (chạy sau) sẽ nhìn thấy file đó ngay lập tức. - Nếu một job quyết định xóa file khỏi
~/artifacts/, các job tiếp theo sẽ không còn thấy file đó nữa. - Không có cơ chế bảo vệ hay phân quyền phức tạp — đơn giản là chia sẻ thư mục.
Điều này phù hợp với triết lý "deadsimple" (cực kỳ đơn giản) của dự án, khi mà người dùng có thể tập trung vào logic của pipeline thay vì phải loay hoay với các cấu hình artifact rắc rối.
So sánh với các hệ thống CI/CD khác
| Đặc điểm | DSCI | GitLab CI / GitHub Actions |
|---|---|---|
| Cách tạo artifact | Ghi file vào ~/artifacts/ | Cấu hình artifacts: hoặc action riêng |
| Độ phức tạp | Thấp, ngôn ngữ tự nhiên | Trung bình-cao, yêu cầu cú pháp |
| Cơ chế xóa | Xóa trực tiếp file | Cần cấu hình expire_in hoặc quản lý riêng |
| Khả năng truy cập | Tự động, mọi job | Phụ thuộc vào cấu hình khai báo |
Lợi ích với nhà phát triển Việt Nam
Đối với lập trình viên Việt Nam, đặc biệt là những người làm việc với các dự án mã nguồn mở hoặc DevOps, DSCI là một lựa chọn đáng thử nếu bạn:
- Mới bắt đầu với CI/CD và không muốn đối mặt với đường cong học tập dốc của các công cụ truyền thống.
- Muốn tối giản pipeline cho các dự án nhỏ hoặc prototype nhanh.
- Muốn giảng dạy về khái niệm pipeline mà không bị sa lầy vào chi tiết cấu hình.
"Nếu bạn muốn một công cụ CI/CD mà bạn có thể nắm bắt toàn bộ cơ chế hoạt động chỉ trong 5 phút, DSCI chính là thứ bạn cần." — Trích tài liệu chính thức của dự án.
Tất nhiên, DSCI vẫn còn ở giai đoạn phát triển sớm và có thể chưa phù hợp cho các dự án lớn cần tính năng quản lý artifact mạnh mẽ như caching thông minh hay chính sách bảo mật chi tiết. Nhưng với triết lý đơn giản hóa mọi thứ, nó chắc chắn là một làn gió mới trong cộng đồng CI/CD.