Hình ảnh Bazel

Báo cáo vấn đề Xem nguồn Nightly/3}

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 một cách hiệu quả cho mọi dự án, thuộc mọi quy mô hay độ phức tạp, bằng cá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 quy trình sáng tạo của việc soạn thả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 đặc thù của tổ chức, người dùng sẽ tập trung vào những 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 phát minh lạ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. 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 cấu hình cục bộ - 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, các mô-đun này có thể làm việc trên mọi máy ở bất cứ đâu và kiểm thử đầy đủ các thay đổi 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 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. Việc kiểm thử gia tăng và nhanh chóng cho phép các nhóm xác thực đầy đủ mọi thay đổi trước khi thực hiện. Điều này vẫn đúng ngay cả khi các kho lưu trữ tăng lên, các dự án mở rộng nhiều kho lưu trữ và nhiều ngôn ngữ được ra mắt. Cơ sở hạ tầng không buộc nhà phát triển phải đổ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 nhóm đầ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 đầu ra).

Các đặc điểm này hỗ trợ mức độ gia tăng an toàn (việc chỉ xây dựng lại các dữ liệu đầu vào đã thay đổi sẽ không gây ra nguy cơ bị hỏng) và khả năng phân phối (các hành động xây dựng bị tách riêng và có thể giảm tải). Bằng cách giảm thiểu lượng công việc cần thiết để tạo một bản dựng chính xác và tải song song hoạt động đó trên nhiều lõi và hệ thống từ xa, Bazel có thể làm cho mọi bản dựng trở nên nhanh chóng.

Tầng 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 ngôn ngữ mở rộng đơn giản – giúp bạn dễ dàng áp dụng yếu tố 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 mục tiêu đến tổ hợp ngôn ngữ và nền tảng nào.
  2. Các bản dựng Bazel nhanh và chính xác. Mỗi lần tạo bản dựng và lần chạy kiểm thử đều gia tăng trên máy 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 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 bạn cần nỗ lực để sử dụng Bazel, nhưng có thể áp dụng dần. Bazel giao tiếp 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ủa các cộng đồng ngôn ngữ. Thông thường là việc tự tổ chức các nhóm người sử dụng các công cụ và phương pháp chung.

Để 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ó sẵn, có khả năng 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à mở, đồng thời hỗ trợ các quy tắc phù hợp 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 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 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 mở rộng và có khả năng 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 đầy đủ và hữu ích, kèm theo 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 đều cần thiết và chỉ khi kết hợp với nhau thì Bazel mới có thể phát triển các năng lực trong hệ sinh thái cụ thể của họ.

Về cơ bản, các ngôn ngữ này cũng đầy đủ – sau khi tất cả được thực hiện, Bazel sẽ cung cấp đầy đủ giá trị của mình cho các thành viên của cộng đồng ngôn ngữ đó.