Bazel 로드맵

문제 신고하기 소스 보기

개요

Bazel 커뮤니티에서 새해 복 많이 받으세요. 새해를 맞이하여 2023년 로드맵에 대한 세부정보를 제공할 계획입니다. 지난해 Google은 Bazel 6.0 계획을 포함한 2022년 로드맵을 발표했습니다. 이 로드맵을 통해 개발자님의 빌드 도구 요구사항에 맞는 정보를 얻으셨길 바랍니다. Bazel 프로젝트가 귀사의 니즈를 반영하여 계속 발전함에 따라 2023년 업데이트를 공유해 드리고자 합니다.

이러한 변화를 통해 Google은 오픈소스 커뮤니티에 계속해서 정보를 제공하고 참여를 유도하기 위해 노력하고 있습니다. 이 로드맵에서는 Bazel 개발의 미래에 대한 현재 이니셔티브와 예측을 설명하여 현재 우선순위와 진행 중인 프로젝트를 파악할 수 있습니다.

Bazel 7.0 출시

2023년 말에 Bazel 7.0 장기 지원 (LTS)이 제공될 예정입니다. Bazel 7.0을 통해 현재 진행 중인 많은 항목을 제공하고 사용자들이 요청한 기능 개선을 통해 계속해서 작업을 수행하는 것을 목표로 하고 있습니다.

크로스 플랫폼 캐시 공유 개선

주로 Java/Kotlin 및 Android 개발을 위해 다양한 빌드 로컬 (Mac) 및 원격 (Linux) 빌드 플랫폼에서 캐시된 아티팩트를 공유할 수 있으므로 성능이 개선되고 캐시 사용이 효율적입니다.

Bazel을 사용한 Android 앱 빌드

매니페스트 및 리소스 병합기가 v30.1.3으로 업데이트되어 Android 앱 개발자가 tools:node="merge"와 같은 최신 매니페스트 병합 기능을 사용할 수 있습니다.

원격 실행 개선

Bazel 7.0은 비동기 실행을 지원하여 플래그 --jobs를 사용한 동시 로드 증가를 통해 원격 실행 속도를 높입니다.

Bzlmod: 외부 종속 항목 관리 시스템

Bzlmod는 전이 종속 항목을 자동으로 해결하므로 빠르고 리소스 효율성을 유지하면서 프로젝트를 확장할 수 있습니다. Bazel 7.0에는 다음을 비롯하여 Bazel의 외부 종속 항목 관리 기능에 대한 여러 가지 향상된 기능이 포함되어 있습니다.

  • Bazel의 외부 종속 항목 관리를 위해 Bzlmod가 기본적으로 사용 설정됨
  • 잠금 파일 지원 — Bzlmod를 사용한 밀폐 빌드 사용
  • 공급업체/오프라인 모드 지원 — 사용자가 사전 다운로드한 종속 항목으로 빌드를 실행할 수 있도록 허용
  • 완벽한 저장소 캐시 지원 (다운로드 아티팩트뿐만 아니라 최종 저장소 콘텐츠 캐싱)
  • Bazel Central Registry는 정기적인 커뮤니티 참여와 주요 Bazel 규칙 및 프로젝트 채택을 포함합니다.

분석 측정항목 빌드

Bazel 7.0은 분석 단계 시간 측정항목을 제공하므로 개발자가 자신의 빌드 성능을 최적화할 수 있습니다.

기본적으로 Bytes를 사용 설정하지 않고 빌드

바이트가 없는 빌드는 중간 아티팩트의 다운로드를 방지하고 빌드의 네트워크 대역폭 병목 현상을 방지하여 성능을 최적화합니다. 추가된 기능은 다음과 같습니다.

Skymeld로 생산성 높이기

Bazel 7.0에는 다중 타겟 빌드의 실제 경과 시간을 줄이는 평가 모드인 Skymeld가 도입되었습니다. Skymeld는 분석과 실행 단계 사이의 장벽을 제거하여 빌드 속도를 개선하며, 특히 최상위 대상이 여러 개인 빌드의 경우 더욱 그렇습니다. 그러나 단일 대상 빌드의 경우 큰 차이가 없을 것으로 예상됩니다.

Bazel 생태계 및 도구

Bazel을 사용한 Android 앱 빌드

  • Android 기본 규칙을 Starlark로 이전: Bazel 7.0의 경우 Android 규칙이 Starlark로 이전되어 Bazel 자체에서 개발을 분리하고 커뮤니티 기여를 더 효과적으로 지원합니다. 또한 이러한 규칙을 핵심 Bazel 바이너리와 독립적으로 만들어 더 자주 릴리스할 수 있도록 했습니다.
  • Starlark로 Android 규칙 이전
  • R8 지원: Android 앱 개발자가 업데이트된 R8 최적화를 사용할 수 있습니다.
  • 모바일 설치: Android 앱 개발자가 모바일 설치의 업데이트된 버전을 통해 Android 앱 변경사항을 신속하게 개발, 테스트, 배포할 수 있습니다.

소프트웨어 재료명세서 데이터 생성 (SBOM) 및 OSS 라이선스 규정 준수 도구

개발자는 Bazel을 사용하여 SBOM을 생성하는 데 도움이 되는 데이터를 생성할 수 있습니다. 이 데이터는 텍스트 또는 JSON 형식으로 출력되며 SPDX 또는 CycloneDX 사양에 맞게 쉽게 포맷할 수 있습니다. 또한 이 프로세스는 Bazel 모듈이 사용 가능한 라이선스임을 선언하는 규칙과 이러한 선언을 중심으로 프로세스를 빌드하는 도구를 제공합니다. GitHub에서 진행 중인 rules_license 구현을 참고하세요.

서명된 빌드

Bazel은 Google 키로 서명된 Windows 및 Mac용 신뢰할 수 있는 바이너리를 제공합니다. 이 기능을 사용하면 멀티 플랫폼 개발자/개발 운영팀이 Bazel 바이너리의 소스를 식별하고 잠재적으로 악성이고 확인되지 않은 바이너리로부터 시스템을 보호할 수 있습니다.

Java, C++, Python 규칙을 Starlark로 이전

Java, C++, Python 규칙 세트를 Starlark로 완전히 이전했습니다. 따라서 Bazel 사용자는 Bazel 바이너리 코드베이스가 아닌 규칙 세트만 포크할 수 있으므로

  • 필요에 따라 규칙 업데이트 및 맞춤설정
  • Bazel과 독립적으로 규칙 업데이트

Bazel-JetBrains* IntelliJ IDEA 지원

최신 JetBrains 플러그인 출시를 지원하도록 증분 IntelliJ 플러그인 업데이트

이 로드맵은 스냅샷을 대상으로 하며 이를 보장하는 것으로 간주해서는 안 됩니다. 우선순위는 개발자 및 고객 의견 또는 새로운 시장 기회에 따라 변경될 수 있습니다.

이 로드맵 업데이트를 비롯한 새로운 기능에 대한 알림을 받으려면 Google 그룹 커뮤니티에 가입하세요.

*Copyright © 2022 JetBrains s.r.o. JetBrains 및 IntelliJ는 JetBrains s.r.o의 등록 상표입니다.