Skip to main content
Một pack bao gồm ba tệp được đính kèm vào GitHub release. failproofai pack build ghi tất cả ba tệp từ tệp policy mà bạn đã có.

1. Viết các policies

Một tệp, sử dụng API giống như bất kỳ custom policy nào. Hai trường bổ sung rất quan trọng đối với pack:
defaultEnabled mặc định là false khi bạn bỏ qua nó. Một lệnh failproofai pack add đơn giản chỉ bật những gì bạn đã đánh dấu — cài đặt tất cả các policies của người lạ mà không giám sát không phải là quyết định mà người cài đặt nên đưa ra cho người dùng của họ.
Entry phải là một tệp tự chứa đầy đủ. Chỉ entry được pinned bởi digest, vì vậy một pack nhập tệp cục bộ không thể thành thật tuyên bố rằng digest bao phủ những gì sẽ chạy. Hãy bundle trước (esbuild, bun build, rollup) và xây dựng pack từ bundle — pack build từ chối local import thay vì gửi một lời hứa mà nó không thể giữ.

2. Xây dựng các asset release

Nó ghi ba tệp và xác thực mọi policy với các quy tắc riêng của loader trước — vì vậy một pack không thể cài đặt sẽ thất bại ở đây, nơi bạn có thể sửa nó: Bị từ chối tại thời điểm build: một id không phải là publisher/name, tên policy chứa /, policy khai báo alwaysOn, thiếu description, category hoặc match, một entry không đăng ký bất cứ thứ gì, và một entry nhập tệp cục bộ.

3. Đính kèm chúng vào một release

Tag release với cùng version mà bạn đã build, và đính kèm cả ba tệp dưới dạng release assets:
Bây giờ bất kỳ ai cũng có thể cài đặt nó:
Tên assets là cố định — chúng là những gì CLI của người tiêu dùng sử dụng để xây dựng các URL của nó, không có cuộc gọi API và không có discovery.

Phân phối một phiên bản mới

Xây dựng với --version mới, tag một release mới, đính kèm ba assets lần nữa. Người tiêu dùng chạy lệnh pack add tương tự và giữ bất kỳ tập hợp con nào họ đã chọn; một policy mà họ đã tắt sẽ vẫn tắt trong quá trình nâng cấp. Thay đổi name của một policy là một breaking change: một máy tính đã tắt nó sẽ tắt một tên không còn tồn tại nữa, và tên mới tới với bất kỳ defaultEnabled nào.

Những gì người dùng của bạn đang tin tưởng

SHA256SUMS nằm trong cùng release với artifact, vì vậy nó chứng minh rằng các byte là những byte bạn đã công bố — không phải bạn là ai. Bất kỳ ai có thể ghi vào repository đều có thể ghi cả hai tệp. Sự bảo vệ của người dùng bạn là digest được pinned khi họ cài đặt, vì vậy những gì bạn gửi không thể thay đổi dưới họ sau đó. Công bố từ một repository mà bạn kiểm soát quyền ghi, và coi một pack release giống như công bố một package.

Quan sát trước khi bạn thực thi

Một manifest có thể khai báo "effect": "observe". Những policies đó chạy và verdicts của chúng được ghi lại và loại bỏ — không có gì bị chặn. Đó là cách để đo lường một quy tắc mới so với lưu lượng thực tế trước khi nó có thể gián đoạn công việc của bất kỳ ai.