Bazel 비전

문제 신고 <ph type="x-smartling-placeholder"></ph> 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

모든 소프트웨어 개발자가 효율적으로 빌드, 테스트, 패키징할 수 있음 규모나 복잡성에 관계없이 모든 프로젝트를 쉽게 채택할 수 있고 확장할 수 있습니다

  • 엔지니어는 빌드 기본사항을 당연하게 여길 수 있습니다. 소프트웨어 개발자 코드 작성의 창조적인 프로세스에 집중하는 것이 문제가 해결될 수 있습니다 빌드 시스템을 지원을 제공할 수 있으려면 사용자들은 확장 가능성을 고려해야 합니다. 기본 배관을 재창조할 수 있었습니다.

  • 엔지니어는 어떤 프로젝트에도 쉽게 참여할 수 있습니다. 개발자가 프로젝트를 복제하고 새 명령어를 실행하여 있습니다. 로컬에 구성할 필요가 없으며 작동하기만 하면 됩니다. 다음으로 바꿉니다. 장소에 구애받지 않고 모든 머신에서 작동할 수 있으며 프로젝트가 대상으로 하는 모든 플랫폼에 대해 변경사항을 완전히 테스트합니다. 엔지니어는 새 프로젝트에 맞게 빌드를 신속하게 구성하거나 점진적으로 구성 가능 기존 빌드를 마이그레이션할 수 있습니다

  • 프로젝트는 모든 규모의 코드베이스, 모든 규모의 팀에 맞게 확장할 수 있습니다. 빠르고 점진적 테스트를 통해 팀은 모든 변경사항이 실제로 적용되기 전에 완전히 검증할 수 있습니다. 있습니다. 저장소가 증가하더라도 프로젝트는 여러 여러 언어를 도입합니다 인프라는 빌드 속도와 테스트 범위를 바꾸어야 합니다.

Google은 Bazel이 이 비전을 실현할 수 있는 잠재력을 가지고 있다고 생각합니다.

Bazel은 재현 가능한 빌드( 주어진 입력 세트가 항상 동일한 출력을 생성하며 이식성 (빌드)을 출력에 영향을 주지 않고 모든 머신에서 실행할 수 있음).

이러한 특성은 안전한 성과 증분을 뒷받침합니다 (재빌드는 변경 시에만 손상 위험을 초래하지 않는 입력) 및 배포 가능성 (빌드) 격리되며 오프로드할 수 있음). 운영에 필요한 작업을 최소화하고 다중 코어 및 원격에서 작동하는 올바른 빌드 및 병렬화 Bazel은 모든 빌드를 빠르게 만들 수 있습니다.

Bazel의 추상화 계층 — 특정 언어, 플랫폼, 간단한 확장성 언어로 구현된 도구 모음으로 쉽게 적용할 수 있습니다

Bazel 핵심 역량

  1. Bazel은 다국어, 다중 플랫폼 빌드 및 테스트를 지원합니다. 다음과 같은 작업을 할 수 있습니다. 명령어 하나로 전체 소스 트리를 빌드하고 테스트할 수 있습니다. 타겟팅할 언어 및 플랫폼의 조합을 결정합니다.
  2. Bazel 빌드는 빠르고 정확합니다. 모든 빌드와 테스트 실행은 개발자가 CI에서 확장할 수 있습니다
  3. Bazel은 균일하고 확장 가능한 언어를 제공하여 선택할 수 있습니다
  4. Bazel을 사용하면 원격 실행에 연결하여 빌드를 확장할 수 있습니다. 캐싱 서비스입니다
  5. Bazel은 모든 주요 개발 플랫폼 (Linux, MacOS, 합니다(Windows).
  6. Bazel을 도입하는 데 많은 노력이 필요하다는 것은 인정하지만 점진적 도입은 있습니다. Bazel은 특정 애플리케이션을 위한 사실상의 표준 도구와 언어/플랫폼입니다.

언어 커뮤니티 서비스 제공

소프트웨어 엔지니어링은 언어 커뮤니티의 맥락에서 진화합니다. 일반적으로 일반적인 도구와 관행을 사용하는 사람들의 그룹을 스스로 조직하는 것입니다.

언어 커뮤니티 구성원이 사용하려면 고품질 Bazel 규칙이 해당 커뮤니티의 워크플로 및 규칙과 통합되는 더 많은 것을 제공합니다.

Bazel은 확장성과 개방성을 갖추고 모든 언어를 지원합니다.

좋은 규칙 집합의 요구사항

  1. 규칙이 효율적으로 구축 및 테스트할 수 있도록 코드 적용 범위를 비롯한 모든 언어에 적용될 수 있습니다
  2. 규칙은 널리 사용되는 '패키지 관리자'와 상호작용하여 다른 언어 (예: Java용 Maven)에서 사용할 수 있으며 증분 이전 경로를 지원합니다. 다른 널리 사용되는 다른 빌드 시스템에서 실행할 수 있습니다
  3. 규칙은 다음과 같이 확장 및 상호 운용 가능해야 합니다. "Bazel sandwich" 원칙을 기반으로 합니다
  4. 규칙은 remote-실행 준비여야 합니다. 실제로 이는 다음을 의미합니다. 도구 모음 메커니즘을 사용하여 구성 가능합니다.
  5. 규칙 (및 Bazel)은 널리 사용되는 IDE와 있습니다(있는 경우).
  6. 규칙에는 철저하고 유용한 문서가 포함되어야 하며 신규 사용자를 위한 자료, 전문가 사용자를 위한 포괄적인 문서를 제공합니다.

이러한 각 항목은 필수적이며 함께 Bazel의 역량을 강화하는 데 도움을 줄 수 있습니다

또한 이러한 원칙은 대체로 충분합니다. 모든 조건이 충족되면 Bazel이 완전히 해당 언어 커뮤니티의 구성원들에게 가치를 제공합니다.