Tầm nhìn Bazel

Báo cáo sự cố Xem nguồn

Bất kỳ nhà phát triển phần mềm nào cũng có thể xây dựng, thử nghiệm và đóng gói một cách hiệu quả mọi dự án, ở mọi quy mô hoặc độ phức tạp, bằng công cụ dễ áp dụng và mở rộng.

  • Các kỹ sư có thể xem xét những nguyên tắc cơ bản về bản dựng. Các nhà phát triển phần mềm tập trung vào quá trình biên soạn mã vì quá trình xây dựng và kiểm thử cơ học đã được giải quyết. Khi tùy chỉnh hệ thống xây dựng để hỗ trợ các ngôn ngữ mới hoặc nhu cầu tổ chức đặc biệt, 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 cải tiến 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. Một 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 phải định cấu hình cục bộ - cấu hình này chỉ hoạt động. Với tính năng thực thi từ xa trên nhiều nền tảng, các công cụ này có thể hoạt động trên mọi máy ở mọi nơi và thử nghiệm đầy đủ các thay đổi đối với tất cả nền tảng mà dự án nhắm mục tiêu. 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 tăng dần quá trình tạo một bản dựng hiện có.

  • Các dự án có thể điều chỉnh theo tỷ lệ với mọi nhóm mã kích thước, nhóm kích thước. Thử nghiệm 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 đưa ra 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 mở 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 mức độ phù hợp của thử nghiệm để đạt được tốc độ bản dựng.

Chúng tôi tin rằng Bazel có tiềm năng thực hiện được 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 các dữ liệu đầu vào nhất định sẽ luôn tạo ra các kết quả giống nhau) và có thể linh động (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 kết quả).

Những đặc điểm này hỗ trợ mức độ gia tăng an toàn (chỉ khi bạn tạo lại dữ liệu đầu vào đã thay đổi thì nguy cơ bị hỏng) và khả năng phân phối (các hành động tạo bản dựng được 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 bản dựng chính xác và tải song song công việc đó trên nhiều lõi và hệ thống từ xa, Bazel có thể nhanh chóng tạo ra một bản dựng bất kỳ.

Lớp trừu tượng của Bazel – các 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ữ có thể mở rộng đơn giản – cho phép áp dụng dễ dàng vào bất kỳ ngữ cảnh nào.

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 nhiều ngôn ngữ, đa nền tảng. Bạn có thể chạy một lệnh để tạo và kiểm thử toàn bộ cây nguồn của mình, bất kể bạn kết hợp các ngôn ngữ và nền tảng nào.
  2. Bản dựng Bazel nhanh và chính xác. Mọi bản dựng và bả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.
  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 và lưu vào bộ nhớ đệm từ xa.
  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 áp dụng Bazel cần nỗ lực, nhưng có thể áp dụng dần. Giao diện của Bazel 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.

Cộng đồng các ngôn ngữ phục vụ

Kỹ thuật phần mềm phát triển trong bối cảnh các 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.

Để được sử dụng cho các thành viên của cộng đồng ngôn ngữ, các quy tắc Bazel chất lượng cao phải có sẵn để 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ở và 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 hiệu quả

  1. 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ả mức độ sử dụng mã.
  2. Các quy tắc cần phải 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 dần dần từ 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, theo nguyên tắc "Bánh mì kiểu Âu".
  4. Các quy tắc cần phải dù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 diện 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 có tài liệu hữu ích, hữu ích và có nội dung 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 trong số này đều cần thiết và chỉ khi cùng nhau, chúng mới mang lại năng lực cho Bazel đối với hệ sinh thái cụ thể của mình.

Bazel cũng đủ lớn – sau khi tất cả đều được đáp ứng, Bazel hoàn toàn mang lại giá trị cho các thành viên trong cộng đồng ngôn ngữ đó.