모든 소프트웨어 개발자가 효율적으로 빌드, 테스트, 패키징할 수 있음 규모나 복잡성에 관계없이 모든 프로젝트를 쉽게 채택할 수 있고 확장할 수 있습니다
엔지니어는 빌드 기본사항을 당연하게 여길 수 있습니다. 소프트웨어 개발자 코드 작성의 창조적인 프로세스에 집중하는 것이 문제가 해결될 수 있습니다 빌드 시스템을 지원을 제공할 수 있으려면 사용자들은 확장 가능성을 고려해야 합니다. 기본 배관을 재창조할 수 있었습니다.
엔지니어는 어떤 프로젝트에도 쉽게 참여할 수 있습니다. 개발자가 프로젝트를 복제하고 새 명령어를 실행하여 있습니다. 로컬에 구성할 필요가 없으며 작동하기만 하면 됩니다. 다음으로 바꿉니다. 장소에 구애받지 않고 모든 머신에서 작동할 수 있으며 프로젝트가 대상으로 하는 모든 플랫폼에 대해 변경사항을 완전히 테스트합니다. 엔지니어는 새 프로젝트에 맞게 빌드를 신속하게 구성하거나 점진적으로 구성 가능 기존 빌드를 마이그레이션할 수 있습니다
프로젝트는 모든 규모의 코드베이스, 모든 규모의 팀에 맞게 확장할 수 있습니다. 빠르고 점진적 테스트를 통해 팀은 모든 변경사항이 실제로 적용되기 전에 완전히 검증할 수 있습니다. 있습니다. 저장소가 증가하더라도 프로젝트는 여러 여러 언어를 도입합니다 인프라는 빌드 속도와 테스트 범위를 바꾸어야 합니다.
Google은 Bazel이 이 비전을 실현할 수 있는 잠재력을 가지고 있다고 생각합니다.
Bazel은 재현 가능한 빌드( 주어진 입력 세트가 항상 동일한 출력을 생성하며 이식성 (빌드)을 출력에 영향을 주지 않고 모든 머신에서 실행할 수 있음).
이러한 특성은 안전한 성과 증분을 뒷받침합니다 (재빌드는 변경 시에만 손상 위험을 초래하지 않는 입력) 및 배포 가능성 (빌드) 격리되며 오프로드할 수 있음). 운영에 필요한 작업을 최소화하고 다중 코어 및 원격에서 작동하는 올바른 빌드 및 병렬화 Bazel은 모든 빌드를 빠르게 만들 수 있습니다.
Bazel의 추상화 계층 — 특정 언어, 플랫폼, 간단한 확장성 언어로 구현된 도구 모음으로 쉽게 적용할 수 있습니다
Bazel 핵심 역량
- Bazel은 다국어, 다중 플랫폼 빌드 및 테스트를 지원합니다. 다음을 수행할 수 있습니다. 명령어 하나로 전체 소스 트리를 빌드하고 테스트할 수 있습니다. 타겟팅할 언어 및 플랫폼의 조합을 결정합니다.
- Bazel 빌드는 빠르고 정확합니다. 모든 빌드와 테스트 실행은 개발자가 CI에서 확장할 수 있습니다
- Bazel은 균일하고 확장 가능한 언어를 제공하여 선택할 수 있습니다
- Bazel을 사용하면 원격 실행에 연결하여 빌드를 확장할 수 있습니다. 캐싱 서비스입니다
- Bazel은 모든 주요 개발 플랫폼 (Linux, MacOS, 합니다(Windows).
- Bazel을 도입하는 데 많은 노력이 필요하다는 것은 인정하지만 점진적 도입은 있습니다. Bazel은 특정 애플리케이션을 위한 사실상의 표준 도구와 언어/플랫폼입니다.
언어 커뮤니티 서비스 제공
소프트웨어 엔지니어링은 언어 커뮤니티의 맥락에서 진화합니다. 일반적으로 일반적인 도구와 관행을 사용하는 사람들의 그룹을 스스로 조직하는 것입니다.
언어 커뮤니티 구성원이 사용하려면 고품질 Bazel 규칙이 해당 커뮤니티의 워크플로 및 규칙과 통합되는 더 많은 것을 제공합니다.
Bazel은 확장성과 개방성을 갖추고 모든 언어를 지원합니다.
좋은 규칙 집합의 요구사항
- 규칙이 효율적으로 구축 및 테스트할 수 있도록 코드 적용 범위를 비롯한 모든 언어에 적용될 수 있습니다
- 규칙은 널리 사용되는 '패키지 관리자'와 상호작용하여 다른 언어 (예: Java용 Maven)에서 사용할 수 있으며 증분 이전 경로를 지원합니다. 다른 널리 사용되는 다른 빌드 시스템에서 실행할 수 있습니다
- 규칙은 다음과 같이 확장 및 상호 운용 가능해야 합니다. "Bazel sandwich" 원칙을 기반으로 합니다
- 규칙은 remote-실행 준비여야 합니다. 실제로 이는 다음을 의미합니다. 도구 모음 메커니즘을 사용하여 구성 가능합니다.
- 규칙 (및 Bazel)은 널리 사용되는 IDE와 있습니다(있는 경우).
- 규칙에는 철저하고 유용한 문서가 포함되어야 하며 신규 사용자를 위한 자료, 전문가 사용자를 위한 포괄적인 문서를 제공합니다.
이러한 각 항목은 필수적이며 함께 Bazel의 역량을 강화하는 데 도움을 줄 수 있습니다
또한 이러한 원칙은 대체로 충분합니다. 모든 조건이 충족되면 Bazel이 완전히 해당 언어 커뮤니티의 구성원들에게 가치를 제공합니다.