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ả mọi dự án, 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 các nguyên tắc cơ bản về việc xây 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 tạo mã vì quy trình cơ học của việc tạo 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 về 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 tạo lại cơ sở hạ tầng cơ bản.
Kỹ sư có thể dễ dàng đóng góp cho mọi dự án. 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. Bạn không cần phải thiết lập cấu hình trên thiết 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 mọi máy ở mọi nơi 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. 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 dần một bản dựng hiện có.
Các dự án có thể mở rộng quy mô cho mọi cơ sở mã, mọi quy mô nhóm. Việc kiểm thử gia tăng nhanh chóng cho phép các nhóm xác thực đầy đủ mọi thay đổi trước khi thay đổi đó được cam kết. Điều này vẫn đúng ngay cả khi các kho lưu trữ phát triển, các 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 các nhà phát triển phải đánh đổi độ bao phủ 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 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).
Những đặ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 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à song song hoá công việc đó trên nhiều lõi và hệ thống từ xa, Bazel có thể tạo bất kỳ bản dựng nào một cách nhanh chóng.
Lớp trừu tượng của Bazel (các chỉ 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ữ có khả năng mở rộng đơn giản) cho phép dễ dàng áp dụng cho mọi bối 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 để 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.
- Các bản dựng Bazel nhanh và chính xác. Mỗi bản dựng và lượt chạy 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ữ đồng nhất, có thể mở rộng để 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 của bạn 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 hiểu rằng việc áp dụng Bazel đòi hỏi nhiều nỗ lực, nhưng bạn có thể áp dụng dần dần. Bazel kết nối với các công cụ tiêu chuẩn trê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 phổ biến.
Để hữu ích cho các thành viên của một 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 đối với một bộ quy tắc hiệu quả
- Các quy tắc cần hỗ trợ việc tạo và kiểm thử hiệu quả cho ngôn ngữ, bao gồm cả mức độ bao phủ mã.
- Các quy tắc cần tương tác với một "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 được sử dụng rộng rãi khác.
- Các quy tắc cần phải có khả năng mở rộng và tương tác, tuân theo các nguyên tắc "Bazel sandwich".
- Các quy tắc cần phải 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ế toolchains.
- 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ó.
- 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 thành thạo.
Mỗi mục trong số này đều rất cần thiết và chỉ khi kết hợp với nhau, chúng mới có thể đáp ứng các năng lực của Bazel cho hệ sinh thái cụ thể của chúng.
Nhìn chung, những yêu cầu này cũng đủ – sau khi tất cả được đáp ứng, Bazel sẽ hoàn toàn mang lại giá trị cho các thành viên của cộng đồng ngôn ngữ đó.