개요
Bazel 커뮤니티 여러분, 새해 복 많이 받으세요. 새해에는 2023년 로드맵의 세부정보를 제공할 예정입니다. 작년에 Bazel 6.0 계획과 함께 2022년 로드맵을 발표했습니다. 이 로드맵이 빌드 도구 요구사항을 파악하는 데 도움이 되었기를 바랍니다. Bazel 프로젝트는 사용자의 요구사항에 따라 계속 발전하고 있으며, 이에 따라 2023년 업데이트를 공유하고자 합니다.
이번 변경을 통해 오픈소스 커뮤니티에 최신 정보를 제공하고 커뮤니티를 참여시킬 수 있기를 바랍니다. 이 로드맵에서는 현재 이니셔티브와 Bazel 개발의 미래에 대한 예측을 설명하여 현재 우선순위와 진행 중인 프로젝트를 파악할 수 있습니다.
Bazel 7.0 출시
2023년 말에 Bazel 7.0 장기 지원 (LTS)를 제공할 계획입니다. Bazel 7.0에서는 진행 중인 많은 항목을 제공하고 사용자가 요청한 기능 개선사항을 계속 해결하는 것을 목표로 합니다.
교차 플랫폼 캐시 공유 개선
캐시된 아티팩트를 다양한 로컬(Mac) 및 원격(Linux) 빌드 플랫폼 간에 공유할 수 있도록 지원합니다(주로 Java/Kotlin 및 Android 개발용). 이를 통해 성능이 개선되고 캐시 사용이 효율적으로 이루어집니다.
Bazel을 사용한 Android 앱 빌드
Android 앱 개발자가 tools:node="merge"와 같은 최신 매니페스트 병합 기능을 사용할 수 있도록 매니페스트 및 리소스 병합기가 v30.1.3으로 업데이트됩니다.
원격 실행 개선사항
Bazel 7.0은 비동기 실행을 지원하여 --jobs 플래그를 사용한 병렬 처리를 늘려 원격 실행 속도를 높입니다.
Bzlmod: 외부 종속 항목 관리 시스템
Bzlmod는 전이 종속 항목을 자동으로 해결하므로 프로젝트가 빠르고 리소스 효율적인 상태를 유지하면서 확장될 수 있습니다. Bazel 7.0에는 다음을 비롯한 Bazel의 외부 종속 항목 관리 기능이 여러 가지로 개선되었습니다.
- Bazel에서 외부 종속 항목 관리를 위해 기본적으로 사용 설정된 Bzlmod
- 잠금 파일 지원: Bzlmod로 hermetic 빌드 사용 설정
- 공급업체/오프라인 모드 지원: 사용자가 미리 다운로드한 종속 항목으로 빌드를 실행할 수 있음
- 완전한 저장소 캐시 지원 (다운로드된 아티팩트뿐만 아니라 최종 저장소 콘텐츠도 캐시)
- Bazel 중앙 레지스트리에는 정기적인 커뮤니티 기여와 주요 Bazel 규칙 및 프로젝트 채택이 포함됩니다.
분석 측정항목 빌드
Bazel 7.0은 분석 단계 시간 측정항목을 제공하여 개발자가 자체 빌드 성능을 최적화할 수 있도록 지원합니다.
기본적으로 바이트가 사용 설정되지 않은 상태로 빌드
바이트 없는 빌드는 중간 아티팩트의 다운로드를 방지하고 빌드가 네트워크 대역폭에서 병목 현상을 일으키지 않도록 하여 성능을 최적화합니다. 추가된 기능은 다음과 같습니다.
임대 서비스로 원격 캐시 제거 지원: 아티팩트가 너무 일찍 제거될 때 사용자가 오류를 겪지 않도록 합니다.
심볼릭 링크 지원의 기능 격차 해결
원격 작업에서 중간 출력을 가져오는 옵션 제공
Skymeld로 생산성 향상
Bazel 7.0에는 다중 타겟 빌드의 실제 시간을 줄이는 평가 모드인 Skymeld가 도입되었습니다. Skymeld는 분석 단계와 실행 단계 간의 장벽을 없애 빌드 속도를 개선합니다. 특히 여러 최상위 타겟이 있는 빌드의 경우 더욱 그렇습니다. 하지만 단일 타겟 빌드의 경우 큰 차이가 없을 것으로 예상됩니다.
Bazel 생태계 및 도구
Bazel을 사용한 Android 앱 빌드
- Android 네이티브 규칙을 Starlark로 이전: Bazel 7.0의 경우 Android 규칙이 Starlark로 이전되어 개발이 Bazel 자체와 분리되고 커뮤니티 기여가 더 잘 지원됩니다. 또한 이러한 규칙은 핵심 Bazel 바이너리와 독립적으로 만들어져 더 자주 출시할 수 있습니다.
- Android 규칙을 Starlark로 이전
- 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의 등록 상표입니다.