Bất kỳ nhà phát triển phần mềm nào cũng có thể xây dựng, kiểm thử và đóng gói mọi dự án một cách hiệu quả, 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.
Kỹ sư có thể coi các nguyên tắ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 quá trình sáng tạo mã nguồn vì quá trình cơ học của bản dựng và kiểm thử đã được giải quyết. Khi tuỳ chỉnh hệ thống bản 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 tập trung vào các khía cạnh của khả năng 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 phát minh lại hệ thống cơ bản.
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 sao chép dự án và chạy bản dựng. Không cần định cấu hình cục bộ – chỉ cần chạy là được. 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 cứ đâu và kiểm thử đầy đủ các thay đổi của mình trên tất cả các nền tảng mà dự án nhắm đến. 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 dần một bản dựng hiện có.
Dự án có thể mở rộng quy mô đến bất kỳ cơ sở mã nào, bất kỳ nhóm nào. Tính năng kiểm thử nhanh chóng, gia tăng cho phép các nhóm xác thực đầy đủ mọi thay đổi trước khi cam kết. Điều này vẫn đúng ngay cả khi kho lưu trữ phát triển, dự án trải rộng 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 thực hiện tầm nhìn này.
Bazel được xây dựng từ đầu để cho phép các bản dựng có thể tái tạo (một tập hợp đầu vào nhất định sẽ luôn tạo ra cùng một đầu ra) và có thể di chuyển (có thể chạy bản dựng 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ợ khả năng tăng dần an toàn (chỉ xây dựng lại các đầu vào đã thay đổi sẽ không gây ra nguy cơ hỏng hóc) và khả năng phân phối (các hành động xây dựng được tách biệt và có thể được chuyển sang máy khác). Bằng cách giảm thiểu công việc cần thiết để thực hiện một bản dựng chính xác và song song hoá công việc đó trên nhiều lõi và hệ thống từ xa, Bazel có thể giúp mọi bản dựng đều nhanh chóng.
Lớp trừu tượng của Bazel – hướng dẫn dành riêng cho 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 cho mọi ngữ cảnh.
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 để xây dựng và kiểm thử toàn bộ cây nguồn, bất kể bạn nhắm đến sự kết hợp nào giữa ngôn ngữ và nền tảng.
- Các bản dựng Bazel nhanh chóng và chính xác. Mỗi lần chạy bản dựng và kiểm thử đều là gia tăng, trên máy của nhà phát triển và trên CI.
- Bazel cung cấp một ngôn ngữ mở rộng, đồng nhất để xác định các bản dựng cho mọi ngôn ngữ hoặc nền tảng.
- 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 và lưu vào bộ nhớ đệm từ xa.
- 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 rằng việc áp dụng Bazel đòi hỏi nỗ lực, nhưng bạn có thể áp dụng dần dần được. Bazel kết nối 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 người tự tổ chức sử dụng các công cụ và phương pháp phổ biến.
Để hữu ích cho các thành viên của cộng đồng ngôn ngữ, phải có các quy tắc Bazel chất lượng cao tích hợp với quy trình làm việc và quy ước của cộng đồng đó.
Bazel cam kết có thể mở rộng và mở, đồng thời hỗ trợ các bộ quy tắc tốt cho mọi ngôn ngữ.
Yêu cầu của một bộ quy tắc tốt
- Các quy tắc cần hỗ trợ xây dựng và kiểm thử hiệu quả cho ngôn ngữ, bao gồm cả phạm vi kiểm thử mã.
- Các quy tắc cần kết nối 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 bản dựng được sử dụng rộng rãi khác.
- Các quy tắc cần có thể mở rộng và tương tác, tuân theo "Bazel sandwich" các nguyên tắc.
- 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 kết nối với một IDE được sử dụng rộng rãi cho ngôn ngữ, nếu có.
- Các quy tắc cần có tài liệu đầy đủ, hữu ích,với tài liệu giới thiệu cho người dùng mới, tài liệu toàn diện cho người dùng chuyên gia.
Mỗi mục này đều cần thiết và chỉ khi kết hợp với nhau, chúng 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, chúng cũng đủ – sau khi hoàn thành tất cả, Bazel sẽ mang lại đầy đủ giá trị cho các thành viên của cộng đồng ngôn ngữ đó.