Hình ảnh Bazel

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, thuộc mọi quy mô hay mức độ phức tạp, bằng các công cụ dễ sử dụng và mở rộng.

  • Kỹ sư có thể coi các nguyên tắc cơ bản trong xây dựng là điều tất yếu. Các nhà phát triển phần mềm tập trung vào quy trình sáng tạo tạo mã vì quy trình cơ học của việc xây dựng và kiểm thử đã đượ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 tập trung vào các khía cạnh 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ự thiết kế lại hệ thống ống nước 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 với 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 cấu hình cục bộ - nó chỉ cần hoạt động. Với tính năng thực thi từ xa trên nhiều nền tảng, nhà phát triển có thể hoạt động trên bất kỳ máy nào ở bất cứ đâu và kiểm thử đầy đủ các thay đổi 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 dần bản dựng hiện có.

  • Các dự án có thể mở rộng quy mô theo bất kỳ quy mô mã nguồn nào, bất kỳ quy mô nhóm nào. Quá trình 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 xác nhận. Điều này vẫn đúng ngay cả khi 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 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 các bản dựng có thể mô phỏng (một nhóm đầu vào nhất định sẽ luôn tạo ra cùng đầu ra) và di động (một bản dựng có thể chạy trên mọi máy mà không ảnh hưởng đến đầu ra).

Các đặc điểm này hỗ trợ mức độ gia tăng an toàn (chỉ tạo lại dữ liệu đầu vào đã thay đổi sẽ không gây ra nguy cơ hỏng) và khả năng phân phối (các thao tác bản dựng bị tách riêng và có thể 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à áp dụng song song công việc đó trên nhiều lõi và hệ thống từ xa, Bazel có thể khiến mọi bản dựng trở nên 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 ngôn ngữ có thể mở rộng đơn giản) cho phép bạn dễ dàng áp dụng lớp này cho mọi ngữ cảnh.

Năng lực cốt lõi của Bazel

  1. Bazel hỗ trợ các bản dựng và thử nghiệm đ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 kết hợp ngôn ngữ và nền tảng nào.
  2. Các bản dựng của Bazel nhanh chóng và chính xác. Mỗi bản dựng và lần chạy thử nghiệm sẽ tăng dần trên các máy của nhà phát triển và trên CI.
  3. 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.
  4. 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.
  5. 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).
  6. Chúng tôi chấp nhận rằng việc sử dụng Bazel tốn nhiều công sức, nhưng vẫn có thể áp dụng dần. 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ác 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à những nhóm người tự tổ chức và sử dụng các công cụ và phương pháp phổ biến.

Để các thành viên của một cộng đồng ngôn ngữ sử dụng, các quy tắc Bazel chất lượng cao phải có sẵn tích hợp với các quy trình làm việc và quy ước của cộng đồng đó.

Bazel cam kết dễ mở rộng và cởi mở, đồng thời hỗ trợ các bộ quy tắc phù hợp cho mọi ngôn ngữ.

Các yêu cầu của một bộ quy tắc phù hợp

  1. Các quy tắc này cần hỗ trợ việc xây dựng và kiểm thử hiệu quả cho ngôn ngữ đó, bao gồm cả mức độ sử dụng mã.
  2. Các quy tắc này cần giao diện 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 qua các hệ thống xây dựng được sử dụng rộng rãi khác.
  3. Các quy tắc cần phải có thể mở rộng và tương tác, tuân theo các nguyên tắc "Bazel sandwich".
  4. 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ế chuỗi công cụ.
  5. 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ó).
  6. Các quy tắc đó cần phải có tài liệu chi tiết và dễ sử dụng, 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 cần thiết và chỉ khi kết hợp với nhau, chúng mới giúp Bazel có thể cạnh tranh với hệ sinh thái cụ thể của họ.

Nhìn chung, các giá trị này cũng đủ để đáp ứng yêu cầu, Bazel sẽ cung cấp đầy đủ giá trị cho các thành viên của cộng đồng ngôn ngữ đó.