Hình ảnh Bazel

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 6,5

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ột cách hiệu quả mọi dự án, thuộc mọi quy mô hoặc mức độ phức tạp, có công cụ dễ sử dụng và mở rộng.

  • Các kỹ sư có thể coi việc xây dựng các nguyên tắc cơ bản là điều đương nhiên. Nhà phát triển phần mềm tập trung vào quá trình sáng tạo khi viết mã vì hệ thống máy đã giải quyết được quá trình xây dựng và kiểm thử. Khi tuỳ chỉnh hệ thống xây dựng để hỗ trợ các ngôn ngữ mới hoặc các nhu cầu đặc thù của tổ chức, người dùng tập trung vào riêng biệt về khả năng mở rộng đối với trường hợp sử dụng mà không cần phải để đổi mới hệ thống ống nước cơ bản.

  • Các kỹ sư có thể dễ dàng đóng góp cho mọi dự án. Nhà phát triển muốn Khi bắt đầu làm việc trên một dự án mới, bạn có thể 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ộ - chỉ cần hoạt động. Bằng thực thi từ xa trên nhiều nền tảng, chúng có thể hoạt động trên mọi máy ở bất cứ đâu và thử nghiệm đầy đủ các thay đổi của họ 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 định cấu hình dần dần di chuyển một bản dựng hiện có.

  • Các dự án có thể mở rộng quy mô theo mọi quy mô cơ sở mã, bất kỳ nhóm quy mô nào. Nhanh, thử nghiệm gia tăng cho phép các nhóm xác thực đầy đủ mọi thay đổi trước khi chúng được thực hiện cam kết. Điều này vẫn đúng ngay cả khi các kho lưu trữ tăng lên, các dự án trải rộng trên nhiều repos và nhiều ngôn ngữ được ra mắt. Cơ sở hạ tầng không bắt buộc để các nhà phát triển đá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ể 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 độ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ỉ tạo lại từ khoá đã thay đổi dữ liệu đầu vào không gây ra rủi ro bị hỏng) và khả năng phân phối (bản dựng các hành động được tách riêng và có thể giảm tải). Hạn chế tối đa lượng công việc cần làm một bản dựng chính xác và việc tải song song hoạt động trên nhiều lõi và điều khiển từ xa hệ thống khác, Bazel có thể tạo ra bất kỳ công trình nào có tốc độ nhanh.

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 dễ dàng áp dụng vào 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ể kết hợp ngôn ngữ và nền tảng nào mà bạn nhắm đến.
  2. Các bản dựng Bazel nhanh và chính xác. Mỗi bản dựng và lần chạy thử nghiệm tăng dần theo mức độ gia tăng của các nhà phát triển và trên CI.
  3. Bazel cung cấp một ngôn ngữ đồng nhất và 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 giú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 tính năng thực thi từ xa và dịch 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 triển khai Bazel đòi hỏi nhiều nỗ lực, nhưng việc áp dụng dần sẽ nhất có thể. Bazel giao tiếp với các công cụ tiêu chuẩn phi thực tế cho một ngôn ngữ/nền tảng.

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ủa các cộng đồng ngôn ngữ — thường là tự tổ chức các nhóm người sử dụng các công cụ và biện pháp thông thường.

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

Yêu cầu của một bộ quy tắc hiệu quả

  1. Các quy tắc này cần hỗ trợ việc xây dựng và thử nghiệm hiệu quả cho ngôn ngữ, bao gồm 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 dần dần so với 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 mở rộng và có khả năng tương tác, tuân theo "Bánh mì bazel" của Google.
  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 đầy đủ và hữu dụng, kèm theo phần 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.

Tất cả những yếu tố này đều rất cần thiết và chỉ khi kết hợp với nhau mới có thể giúp Bazel năng lực khác nhau cho hệ sinh thái cụ thể của họ.

Nói chung, các nhiệm vụ đó cũng đủ - sau khi tất cả được thực hiện, Bazel hoàn toàn đều mang lại giá trị cho các thành viên của cộng đồng ngôn ngữ đó.