Bắt đầu với Fish
🌐 Bản dịch & Đóng góp: Bạn muốn dịch hoặc cải thiện tài liệu này bằng ngôn ngữ của mình? Xem Hướng dẫn Dịch thuật.
Tài liệu này sẽ hướng dẫn bạn các bước làm quen và bắt đầu sử dụng Fish — hệ thống điều phối biên dịch tốc độ cao, ưu tiên bộ nhớ đệm (cache-first).
Cài đặt
Cài đặt 1 dòng lệnh (Khuyên dùng)
Linux & macOS:
curl -fsSL https://raw.githubusercontent.com/requla11/fish/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/requla11/fish/main/install.ps1 | iexCài đặt từ mã nguồn
# Clone kho lưu trữ
git clone https://github.com/requla11/fish.git
cd fish
# Biên dịch và cài đặt
cargo install --path crates/fish-cliCài đặt qua Cargo
cargo install fish-cli --git https://github.com/requla11/fishBắt đầu nhanh
Biên dịch dự án Rust
cd your-rust-project
fish buildBiên dịch Monorepo đa ngôn ngữ
# Clone monorepo mẫu
git clone https://github.com/requla11/fish.git
cd fish/examples/polyglot-demo
# Biên dịch tất cả dịch vụ
fish build
# Xem đồ thị phụ thuộc DAG
fish graph
# Chạy kiểm thử
fish testCác lệnh cơ bản
Lệnh biên dịch (Build)
# Biên dịch toàn bộ workspace
fish build
# Biên dịch một package cụ thể
fish build -p my-package
# Biên dịch với 8 luồng song song
fish build -j 8
# Biên dịch bỏ qua cache
fish build --no-cache
# Biên dịch trong sandbox cách ly
fish build --sandbox
# Giải thích chi tiết lý do rebuild
fish build --explain
# Quy trình tối ưu hóa dựa trên profile (PGO)
fish build --pgo-generate
# ... chạy benchmark / khối lượng công việc ...
fish build --pgo-useLệnh đồ thị & Truy vấn (Graph & Query)
# Truy vấn các phụ thuộc bắc cầu (phong cách Bazel)
fish query "deps(//fish-cli)"
# Truy vấn các phụ thuộc ngược
fish query "rdeps(//fish-graph)"
# Tìm tất cả đường đi giữa hai module
fish query "allpaths(//fish-cli, //fish-core)"
# Lọc phụ thuộc theo regex
fish query "filter('backend', deps(//fish-cli))"
# Trực quan hóa đồ thị
fish graph --format tree
fish graph --format dotLệnh Build Daemon
# Khởi chạy daemon chạy ngầm để tăng tốc độ warm build dưới mili-giây
fish daemon start
# Kiểm tra trạng thái daemon
fish daemon status
# Dừng daemon
fish daemon stopLệnh kiểm thử (Test)
# Chạy tất cả bài test
fish test
# Test một package cụ thể
fish test -p my-package
# Chạy test không dùng cache
fish test --no-cacheLệnh quản lý Cache
# Xem thống kê dung lượng cache
fish cache stats
# Dọn dẹp cache cũ
fish cache prune
# Khởi chạy máy chủ cache từ xa
fish cache-server --listen 0.0.0.0:8080Lệnh biên dịch phân tán (Distributed Build)
# Khởi chạy một worker
fish worker --listen 0.0.0.0:9000
# Biên dịch sử dụng cụm worker phân tán
fish build --workers worker1:9000,worker2:9000Lệnh tạo cấu hình CI/CD
# Tạo workflow cho GitHub Actions
fish ci init --platform github
# Tạo pipeline cho GitLab CI
fish ci init --platform gitlab
# Tạo cấu hình CircleCI
fish ci init --platform circleci
# Tạo cấu hình Bitbucket Pipelines
fish ci init --platform bitbucket
# Tạo cấu hình cho tất cả nền tảng
fish ci init --platform allLệnh Plugin
# Liệt kê các plugin khả dụng
fish plugin list
# Thực thi một lệnh của plugin
fish plugin execute my-plugin build
# Cài đặt một plugin
fish plugin install ./my-pluginCấu hình
Cấu hình Workspace (fish.toml)
Fish tự động phát hiện loại dự án dựa trên các tệp manifest. Để tùy chỉnh hành vi thực thi, caching và pipeline, hãy tạo tệp fish.toml tại thư mục gốc dự án:
[build]
backend = "auto"
jobs = 8
no_cache = false
sandbox = false
semantic = true
critical_path = true
ram_limit = 85
[cache]
dir = "~/.fish/cache"
reflink = true
[remote]
cache_url = "http://127.0.0.1:8080"
token = "secret-cache-token"
[daemon]
port = 9527
[pipelines.build]
depends_on = ["^build"]
inputs = ["src/**/*", "Cargo.toml"]
outputs = ["target/release/*"]
[pipelines.test]
depends_on = ["build"]
inputs = ["tests/**/*", "src/**/*"]Xem thêm tại Tài liệu cấu hình để biết đầy đủ tùy chọn.
Bảng điều khiển Web Dashboard & Đo lường Tương tác
Fish tích hợp sẵn bảng điều khiển web đo lường thời gian thực và trực quan hóa DAG với hỗ trợ 5 ngôn ngữ (Tiếng Anh, Tiếng Việt, Tiếng Trung giản thể, Tiếng Trung phồn thể, Tiếng Nhật):
# Khởi chạy giao diện web tại cổng 3000 và tự động mở trình duyệt
fish ui --port 3000 --open
# Kiểm tra dữ liệu đồ thị dạng JSON
curl http://localhost:3000/api/graph
# Kiểm tra thống kê phần cứng và CAS
curl http://localhost:3000/api/statsXử lý sự cố thường gặp
Build thất bại
Nếu quá trình build thất bại:
- Kiểm tra thông báo lỗi hoặc chạy
fish build --explainđể chẩn đoán nguyên nhân rebuild. - Chạy với log chi tiết:
RUST_LOG=debug fish build - Kiểm tra môi trường toolchain:
fish doctor - Thử xóa cache:
fish cache prune
Sự cố về Cache
Nếu cache không hoạt động:
- Kiểm tra thống kê cache:
fish cache stats - Đảm bảo thư mục cache có quyền ghi:
~/.fish/cache - Xóa và xây dựng lại cache:
fish cache prune && fish build
Sự cố kết nối Worker
Nếu worker không thể kết nối:
- Kiểm tra kết nối mạng giữa các máy
- Đảm bảo worker đang chạy:
fish worker --listen 0.0.0.0:9000 - Kiểm tra cấu hình tường lửa và mã token xác thực
- Xem nhật ký log của worker
Bước tiếp theo
- Đọc Hướng dẫn Kiến trúc
- Xem Hướng dẫn Phát triển
- Khám phá Danh mục Lệnh CLI
- Khám phá Tài liệu Backend ngôn ngữ