Mọi nhà phát triển phần mềm đều có thể xây dựng, kiểm thử và đóng gói hiệu quả bất kỳ dự án nào, bất kể quy mô hay độ phức tạp, bằng các công cụ dễ dàng áp dụng và mở rộng.
Các kỹ sư có thể coi những kiến thức cơ bản về bản dựng là điều hiển nhiên. Nhà phát triển phần mềm tập trung vào quy trình sáng tạo của việc viết mã vì quy trình xây dựng và kiểm thử cơ học đã được giải quyết. Khi tuỳ chỉnh hệ thống xây dựng để hỗ trợ các ngôn ngữ mới hoặc nhu cầu riêng của tổ chức, người dùng sẽ tập trung vào các khía cạnh mở rộng dành riêng cho trường hợp sử dụng của họ mà không cần phải tạo lại hệ thống cơ sở.
Các kỹ sư có thể dễ dàng đóng góp cho bất kỳ dự án nào. Nhà phát triển muốn bắt đầu làm việc trên một dự án mới chỉ cần nhân bản dự án và chạy bản dựng. Bạn không cần phải định cấu hình cục bộ – tính năng này sẽ hoạt động ngay. Với tính năng thực thi từ xa trên nhiều nền tảng, họ có thể làm việc trên bất kỳ máy nào ở bất kỳ đâu và kiểm thử đầy đủ các thay đổi của họ trên tất cả nền tảng mà dự án nhắm đến. Các kỹ sư có thể nhanh chóng định cấu hình bản dựng cho một dự án mới hoặc di chuyển từng bước một bản dựng hiện có.
Dự án có thể mở rộng quy mô cho cơ sở mã có kích thước bất kỳ, nhóm có quy mô bất kỳ. Tính năng kiểm thử tăng dần, nhanh chóng cho phép các nhóm xác thực đầy đủ mọi thay đổi trước khi thực hiện. Điều này vẫn đúng ngay cả khi kho lưu trữ phát triển, dự án trải dài trên nhiều kho lưu trữ và nhiều ngôn ngữ được giới thiệu. Cơ sở hạ tầng không buộc nhà phát triển phải đánh đổi phạm vi kiểm thử để lấy tốc độ bản dựng.
Chúng tôi tin rằng Bazel có tiềm năng để hiện thực hoá tầm nhìn này.
Bazel được xây dựng từ đầu để cho phép tạo các bản dựng có thể tái tạo (một nhóm đầu vào nhất định sẽ luôn tạo ra cùng một đầu ra) và có thể di chuyển (một bản dựng có thể chạy trên bất kỳ máy nào mà không ảnh hưởng đến đầu ra).
Các đặc điểm này hỗ trợ tính gia tăng an toàn (chỉ xây dựng lại các đầu vào đã thay đổi sẽ không gây ra rủi ro hỏng hóc) và khả năng phân phối (các thao tác xây dựng được tách biệt và có thể được giảm tải). Bằng cách giảm thiểu công việc cần thiết để tạo một bản dựng chính xác và chạy song song công việc đó trên nhiều lõi và hệ thống từ xa, Bazel có thể tạo mọi bản dựng một cách nhanh chóng.
Lớp trừu tượng của Bazel – hướng dẫn dành riêng cho các ngôn ngữ, nền tảng và chuỗi công cụ được triển khai bằng một ngôn ngữ mở rộng đơn giản – cho phép dễ dàng áp dụng lớp này cho bất kỳ ngữ cảnh nào.
Năng lực cốt lõi của Bazel
- Bazel hỗ trợ các bản dựng và kiểm thử đa ngôn ngữ, đa nền tảng. Bạn có thể chạy một lệnh duy nhất để tạo và kiểm thử toàn bộ cây nguồn, bất kể bạn nhắm đến tổ hợp ngôn ngữ và nền tảng nào.
- Bản dựng Bazel nhanh và chính xác. Mỗi bản dựng và lần chạy kiểm thử đều tăng dần trên máy của nhà phát triển và trên CI.
- Bazel cung cấp một ngôn ngữ đồng nhất, có thể mở rộng để xác định các bản dựng cho bất kỳ ngôn ngữ hoặc nền tảng nào.
- Bazel cho phép các bản dựng mở rộng quy mô bằng cách kết nối với các dịch vụ thực thi từ xa và lưu vào bộ nhớ đệm.
- Bazel hoạt động trên tất cả các nền tảng phát triển chính (Linux, MacOS và Windows).
- Chúng tôi chấp nhận việc sử dụng Bazel đòi hỏi nỗ lực, nhưng bạn có thể dần dần sử dụng. Bazel giao tiếp với các công cụ tiêu chuẩn thực tế cho một ngôn ngữ/nền tảng nhất định.
Phục vụ cộng đồng ngôn ngữ
Kỹ thuật phần mềm phát triển trong bối cảnh cộng đồng ngôn ngữ – thường là các nhóm tự tổ chức gồm những người sử dụng các công cụ và phương pháp chung.
Để có thể hữu ích cho các thành viên của một cộng đồng ngôn ngữ, bạn phải có các quy tắc Bazel chất lượng cao tích hợp với quy trình công việc và quy ước của cộng đồng đó.
Bazel cam kết mở rộng và mở, đồng thời hỗ trợ các quy tắc tốt cho mọi ngôn ngữ.
Yêu cầu đối với một bộ quy tắc hiệu quả
- Các quy tắc cần hỗ trợ tạo và kiểm thử hiệu quả cho ngôn ngữ, bao gồm cả mức độ sử dụng mã.
- Các quy tắc cần giao tiếp với "trình quản lý gói" được sử dụng rộng rãi cho ngôn ngữ (chẳng hạn như Maven cho Java) và hỗ trợ các đường dẫn di chuyển gia tăng từ các hệ thống xây dựng khác được sử dụng rộng rãi.
- Các quy tắc cần có thể mở rộng và tương tác, tuân theo các nguyên tắc "bánh sandwich Bazel".
- Các quy tắc cần sẵn sàng để thực thi từ xa. Trong thực tế, điều này có nghĩa là có thể định cấu hình bằng cơ chế chuỗi công cụ.
- Các quy tắc (và Bazel) cần giao tiếp với một IDE được sử dụng rộng rãi cho ngôn ngữ, nếu có.
- Quy tắc cần có tài liệu chi tiết, hữu ích, với tài liệu giới thiệu dành cho người dùng mới và tài liệu toàn diện dành cho người dùng chuyên nghiệp.
Mỗi mục trong số này đều cần thiết và chỉ khi kết hợp với nhau, các mục này mới mang lại năng lực của Bazel cho hệ sinh thái cụ thể của chúng.
Nhìn chung, các tính năng này cũng là đủ – sau khi tất cả các tính năng được đáp ứng, Bazel sẽ cung cấp đầy đủ giá trị cho các thành viên của cộng đồng ngôn ngữ đó.