Skip to content

feat(cloud-tasks): import the Java cloud-tasks service under Bazel#343

Open
balajinvda wants to merge 14 commits into
mainfrom
feat/cloud-tasks-bazel
Open

feat(cloud-tasks): import the Java cloud-tasks service under Bazel#343
balajinvda wants to merge 14 commits into
mainfrom
feat/cloud-tasks-bazel

Conversation

@balajinvda

@balajinvda balajinvda commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Why

Bring the cloud-tasks Java service (NVCT) into the monorepo under Bazel at src/control-plane-services/cloud-tasks, as standalone Bazel modules. The upstream GitLab repo (nvcf/nvct/cloud-tasks, feat/bazel) stays source-of-truth while it stabilizes; this PR establishes the monorepo-native Bazel integration.

Architecture

Java builds as standalone Bazel modules, not converged onto the root module. nv-boot-parent and nvcf_java_rules are their own modules (outside root), so every Java service depends on them and builds individually (bazel_dep + local_path_override). cloud-tasks is its own module depending on both.

What's included

  • Standalone modules, all build-verified: nvcf_java_rules (rules/java, shared macros + platform.bzl + vendored OCI image helper), nv_boot_parent (own @maven hub), nvct_cloud_tasks (own @maven hub incl. gRPC codegen), and the nvcf_java_example reference template.
  • Source synced to upstream feat/bazel@4c6f57c9 (OpenAPI 3.1 / SpringDoc schema annotations on the DTOs + MiscEndpointsTest).
  • GHA matrix rows (nv-boot-parent, cloud-tasks, java-spring-boot-service), all build and test; ROOT_GLOBS narrowed to src/libraries/go/ and cloud-tasks dropped from it (Java is its own row now). Rows receive the EC2 Buildbarn cache via the non-root injection block (Wire the EC2 Bazel remote cache for the standalone Java modules #372).
  • CI image: additive JDK (remotejdk_25) + Bazel pre-warm in ci/Dockerfile.bazel, bazel-ci-image.yml bumped to 0.13.0. The bazel.yml consumer ref stays 0.12.0 until the image publishes on merge (see follow-up).

Testing

  • Verified standalone builds: nv-boot-parent (1025 actions, 17/17 tests incl. bom_alignment_test), cloud-tasks (1743 actions), example (build + 3 tests). Root analyzes clean.
  • bazel integration (docker) (cloud-tasks DinD Cassandra integration) green on the synced source.
  • CodeQL: zip-slip guard hardened (normalized extraction base) and CSRF-disabled is intentional (stateless JWT resource server); all three CodeQL threads resolved.

Post-merge follow-up

References

Related

  • Upstream: nvcf/nvct/cloud-tasks (GitLab) feat/bazel.

… hub

Prepares the root nv_third_party_deps hub for the incoming cloud-tasks Java
service (src/control-plane-services/cloud-tasks):

- Add the 36 third-party coordinates cloud-tasks needs that were not already in
  the hub. All resolve from public Maven Central; the four BOMs it uses
  (spring-boot 4.0.7, spring-cloud 2025.1.2, testcontainers 2.0.5, shedlock
  7.7.0) already match, so no version reconciliation was required.
- Add gRPC-Java codegen support (rules_proto_grpc / rules_proto_grpc_java 5.8.0
  plus the protoc-gen-grpc-java native plugin binaries) — the first Java gRPC
  consumer in the monorepo.
- Re-pin //:maven_install.json.

Note: pulling the grpc deps bumped the resolved rules_python and
aspect_bazel_lib transitive versions above their direct pins (warnings only);
those direct pins can be bumped separately.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Too many files!

This PR contains 333 files, which is 33 over the limit of 300.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6d73b064-31f7-40f7-a47a-200497d9f963

📥 Commits

Reviewing files that changed from the base of the PR and between 9c96d69 and a1bcbb5.

⛔ Files ignored due to path filters (5)
  • MODULE.bazel.lock is excluded by !**/*.lock, !**/MODULE.bazel.lock
  • examples/java-spring-boot-service/MODULE.bazel.lock is excluded by !**/*.lock, !**/MODULE.bazel.lock
  • rules/java/MODULE.bazel.lock is excluded by !**/*.lock, !**/MODULE.bazel.lock
  • src/control-plane-services/cloud-tasks/MODULE.bazel.lock is excluded by !**/*.lock, !**/MODULE.bazel.lock
  • src/libraries/java/nv-boot-parent/MODULE.bazel.lock is excluded by !**/*.lock, !**/MODULE.bazel.lock
📒 Files selected for processing (333)
  • .bazelignore
  • .github/workflows/bazel.yml
  • MODULE.bazel
  • NOTICE
  • docs/bazel-java-architecture.md
  • examples/java-spring-boot-service/.bazelrc
  • examples/java-spring-boot-service/.gitignore
  • examples/java-spring-boot-service/AGENTS.md
  • examples/java-spring-boot-service/BUILD.bazel
  • examples/java-spring-boot-service/CLAUDE.md
  • examples/java-spring-boot-service/MODULE.bazel
  • examples/java-spring-boot-service/maven_install.json
  • maven_install.json
  • rules/java/.bazelrc
  • rules/java/.gitignore
  • rules/java/AGENTS.md
  • rules/java/CLAUDE.md
  • rules/java/MODULE.bazel
  • rules/java/bom_alignment.bzl
  • rules/java/defs.bzl
  • rules/java/platform.bzl
  • rules/java/platforms/BUILD.bazel
  • rules/java/private/oci.bzl
  • rules/java/private/spring_boot.bzl
  • rules/java/scripts/BUILD.bazel
  • rules/java/scripts/check_bom_alignment.sh
  • src/control-plane-services/cloud-tasks/.bazelrc
  • src/control-plane-services/cloud-tasks/.gitignore
  • src/control-plane-services/cloud-tasks/AGENTS.md
  • src/control-plane-services/cloud-tasks/BUILD.bazel
  • src/control-plane-services/cloud-tasks/CLAUDE.md
  • src/control-plane-services/cloud-tasks/MODULE.bazel
  • src/control-plane-services/cloud-tasks/NOTICE
  • src/control-plane-services/cloud-tasks/local_env/cassandra/cassandra.yaml
  • src/control-plane-services/cloud-tasks/local_env/cassandra/entrypoint.sh
  • src/control-plane-services/cloud-tasks/local_env/cassandra/keystore.node0
  • src/control-plane-services/cloud-tasks/local_env/cassandra/schema/0001_initial_schema.cql
  • src/control-plane-services/cloud-tasks/local_env/cassandra/truststore.node0
  • src/control-plane-services/cloud-tasks/local_env/docker-compose.test.yml
  • src/control-plane-services/cloud-tasks/local_env/docker-compose.yml
  • src/control-plane-services/cloud-tasks/local_env/vault/secrets.json
  • src/control-plane-services/cloud-tasks/lombok.config
  • src/control-plane-services/cloud-tasks/maven_install.json
  • src/control-plane-services/cloud-tasks/nvct-core/BUILD.bazel
  • src/control-plane-services/cloud-tasks/nvct-core/local_env
  • src/control-plane-services/cloud-tasks/nvct-core/pom.xml
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/AuthManagerResolverConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/ClockConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/DistributedLockConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/GrpcConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/JacksonConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/MethodSecurityConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/MetricsConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/NotaryJwtConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/ObservationConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/OpenApiDocConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/OutboundHttpResourcesConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/RegistryConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/SecurityConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/exceptions/ExceptionTracingExceptionHandler.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/exceptions/ValidationAwareExceptionHandler.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/filters/ExceptionHandlerFilter.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/ratelimit/AccountRateLimiterProperties.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/ratelimit/TaskRateLimiterProperties.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/staticclientauth/FixedBearerExchangeFilterFunction.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/configuration/staticclientauth/StaticClientAuthConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/grpc/GrpcSkywayService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/grpc/GrpcWorkerService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/grpc/ResultMetadataStreamObserver.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/grpc/auth/AuthHeaderPassthroughServerHttpRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/grpc/auth/SecurityExpression.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/event/EventsByTaskRepository.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/event/entity/EventByTaskEntity.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/event/entity/EventByTaskKey.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/result/ResultsByTaskRepository.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/result/entity/ResultByTaskEntity.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/result/entity/ResultByTaskKey.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/TasksRepository.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/ArtifactUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/GpuSpecUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/HealthUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/ModelUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/ResourceUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/ResultHandlingStrategy.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/TaskEntity.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/TaskStatus.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/persistence/task/entity/TelemetriesUdt.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/event/EventController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/event/EventFacade.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/event/XAccountEventController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/event/dto/EventDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/event/dto/ListEventsResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/misc/XAccountMiscEndpointsController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/misc/dto/GpuPlacementDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/misc/dto/GpuUsageDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/misc/dto/ListGpuUsageResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/result/ResultController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/result/ResultFacade.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/result/XAccountResultController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/result/dto/ListResultsResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/result/dto/ResultDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/secret/SecretManagementController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/secret/SecretManagementFacade.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/secret/XAccountSecretManagementController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/secret/dto/UpdateSecretsRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/TaskManagementController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/TaskManagementFacade.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/XAccountTaskManagementController.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ArtifactDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/BasicTaskDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/BulkTaskDetailsRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ContainerEnvironmentEntryDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/CreateTaskRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/GpuSpecificationDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/HealthDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/HelmValidationPolicyDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/InstanceDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/InstanceStateEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/InstanceUsageTypeEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ListBasicTaskDetailsResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ListTasksResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ResultHandlingStrategyEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/SecretDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/TaskDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/TaskResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/TaskStatusEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/rest/task/dto/ValidationPolicyNameEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/account/AccountService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/account/dto/AccountDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/account/dto/RegistryCredentialDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/apikeys/ApiKeyValidationResult.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/apikeys/ApiKeysClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/apikeys/ApiKeysService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/apikeys/dto/ApiKeyValidationRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/apikeys/dto/ApiKeyValidationResponse.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/client/ClientService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/client/dto/ClientDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ess/EssClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ess/EssService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ess/EssStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/event/EventService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/icms/IcmsClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/icms/IcmsClusterGroupClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/icms/IcmsService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/icms/IcmsStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/instance/InstanceService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/metrics/TaskErrorMetricsService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/metrics/TaskMetricsExpirationPolicy.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/metrics/TaskRunningMetricsService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/metrics/TaskSuccessMetricsService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ngc/NgcRegistryClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ngc/NgcRegistryStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ngc/dto/CreateModelRequest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/nvcf/NvcfClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/nvcf/NvcfStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ratelimit/BucketRateLimiter.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/ratelimit/RateLimiterService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/RegistryArtifactMapperService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/RegistryArtifactService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/RegistryArtifactValidationService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/RegistryCredentialService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/RegistryTaskMapperService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/dto/DockerConfigJsonAuthDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/dto/DockerConfigJsonDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/registry/dto/K8sSecretsDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/result/ResultService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/reval/RevalClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/reval/RevalStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/CleanTerminalTasksRoutine.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/CommonRoutineService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/MonitorLaunchedTasksRoutine.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/MonitorQueuedTasksRoutine.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/MonitorWorkerHeartbeatRoutine.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/scheduler/ScheduledRoutineService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/secret/SecretManagementService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/GpuSpecificationMapperService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/HelmValidationPolicyMapperService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/TaskAuditService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/TaskManagementService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/TaskMapperService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/TaskPredicateUtils.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/task/TaskService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/TelemetryService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/dto/TelemetriesDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/dto/TelemetryDto.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/dto/TelemetryProtocolEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/dto/TelemetryProviderEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/telemetry/dto/TelemetryTypeEnum.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/GrpcAuthService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/TokenService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/WorkerAssertionValidator.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/client/NotaryAudiencesConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/client/NotaryClient.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/service/token/client/NotaryStubService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/util/NvctConstants.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/util/NvctOAuth2ClientUtils.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/util/NvctUtils.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/java/com/nvidia/nvct/util/ProtoMappingUtils.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/main/proto/nvct.proto
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/IntegrationTestConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/NvctTestApp.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/actuator/ActuatorTracingIntegrationTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/actuator/ActuatorTracingTestConfiguration.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/actuator/MetricsIntegrationTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/configuration/exceptions/ValidationAwareExceptionHandlerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/grpc/GrpcSkywayServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/grpc/GrpcWorkerRefreshSecretAssertionsTokenTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/grpc/GrpcWorkerServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/grpc/TestResultMetadataStreamObserver.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/grpc/TestTaskService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/persistence/event/EventsByTaskRepositoryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/persistence/result/ResultsByTaskRepositoryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/persistence/task/TasksRepositoryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/event/EventControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/event/TestEventService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/event/XAccountEventControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/misc/MiscEndpointsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/result/ResultControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/result/TestResultService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/result/XAccountResultControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/secret/SecretManagementControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/secret/XAccountSecretManagementControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/FilterTaskTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/HelmChartBasedTaskCreationTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/ListTasksWithBasicDetailsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithAcrRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithArtifactoryRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithDockerHubRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithEcrRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithHarborRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithVolcengineRegistryTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskCreationWithoutRegistryCredentialsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskManagementControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskWithHelmValidationPolicyTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskWithTelemetriesTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/TaskWithUserSecretsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountFilterTaskTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountListTasksWithBasicDetailsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountMiscEndpointsControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountTaskManagementControllerTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountTaskWithHelmValidationPolicyTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountTaskWithTelemetriesTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/rest/task/XAccountTaskWithUserSecretsTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/account/AccountServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/apikeys/ApiKeyValidationResultTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/apikeys/ApiKeysClientTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/client/ClientServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/ess/EssServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/icms/IcmsClusterGroupClientTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/icms/IcmsServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/instance/InstanceServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/ngc/NgcRegistryClientTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/ratelimit/RateLimiterServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/registry/RegistryArtifactServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/registry/RegistryArtifactValidationServiceTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/reval/RevalClientIntegrationTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/reval/RevalSerializationTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/scheduler/CleanTerminalTasksRoutineTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/scheduler/MonitorLaunchedTasksRoutineTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/scheduler/MonitorQueuedTasksRoutineTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/scheduler/MonitorWorkerHeartbeatRoutineTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/service/token/WorkerAssertionValidatorTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/EssResponseTransformer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/ManagedHttpResourcesTest.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockApiKeysServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockEssServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockIcmsServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockNotaryServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockNvcfServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/MockRevalServer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/NotaryServiceResponseTransformer.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/TestConstants.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/TestRegistryService.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/java/com/nvidia/nvct/util/TestUtil.java
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/application-test.yaml
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/bootstrap-test.yaml
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/docker-java.properties
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/complete-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/missing-gfn-cluster-group-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/missing-gfn-gpus-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/missing-t10-gpu-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/missing-t10-instance-type-default-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/cluster-groups/missing-t10-instance-types-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/clusters/complete-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/raw-healthy-instance.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/raw-no-capacity-instance.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/icms/raw-unhealthy-instance.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/nvcf/account-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/nvcf/account-with-telemetries-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/nvcf/account-without-registry-credentials-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/fixtures/nvcf/client-response.json
  • src/control-plane-services/cloud-tasks/nvct-core/src/test/resources/load-test.js
  • src/control-plane-services/cloud-tasks/nvct-service/BUILD.bazel
  • src/control-plane-services/cloud-tasks/nvct-service/local_env
  • src/control-plane-services/cloud-tasks/nvct-service/pom.xml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/java/com/nvidia/nvct/App.java
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/application-local.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/application-ncp.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/application.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/bootstrap-local.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/bootstrap-ncp.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/main/resources/bootstrap.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/test/java/com/nvidia/nvct/NvctServiceIntegrationTest.java
  • src/control-plane-services/cloud-tasks/nvct-service/src/test/resources/application-test.yaml
  • src/control-plane-services/cloud-tasks/nvct-service/src/test/resources/bootstrap-test.yaml
  • src/control-plane-services/cloud-tasks/pom.xml
  • src/control-plane-services/cloud-tasks/tools/bazel/BUILD.bazel
  • src/control-plane-services/cloud-tasks/tools/bazel/jacoco_test_runner.sh
  • src/control-plane-services/cloud-tasks/tools/bazel/notice_metadata.json
  • src/control-plane-services/cloud-tasks/tools/bazel/proto.bzl
  • src/control-plane-services/cloud-tasks/tools/bazel/runfiles.bzl
  • src/control-plane-services/cloud-tasks/tools/bazel/workspace_status.sh
  • src/libraries/java/nv-boot-parent/.bazelrc
  • src/libraries/java/nv-boot-parent/AGENTS.md
  • src/libraries/java/nv-boot-parent/BUILD.bazel
  • src/libraries/java/nv-boot-parent/CLAUDE.md
  • src/libraries/java/nv-boot-parent/MODULE.bazel
  • src/libraries/java/nv-boot-parent/NOTICE
  • src/libraries/java/nv-boot-parent/maven_install.json
  • src/libraries/java/nv-boot-parent/nv-boot-mock-servers-test/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-audit/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-cassandra/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-core/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-data-migration-notification/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-exceptions/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-jwt/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-observability/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-registries/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-reloadable-properties/BUILD.bazel
  • src/libraries/java/nv-boot-parent/nv-boot-starter-telemetry/BUILD.bazel
  • src/libraries/java/nv-boot-parent/tools/bazel/BUILD.bazel
  • src/libraries/java/nv-boot-parent/tools/bazel/java.bzl
  • src/libraries/java/nv-boot-parent/tools/bazel/notice_check_test.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cloud-tasks-bazel

Comment @coderabbitai help to get the list of available commands.

balajinvda and others added 3 commits July 21, 2026 22:09
Adding cloud-tasks's grpc-java closure to the shared nv_third_party_deps hub
pulled com.google.code.findbugs:jsr305 up from 2.0.1 to 3.0.2, which is a
transitive dependency inside nv-boot-parent's own NOTICE closure. Regenerated
nv-boot-parent/NOTICE (generate_notice.py --update-metadata --write) so
notice_check_test matches the re-pinned lock. One version-string line changed.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Relocate nvct-core + nvct-service to src/control-plane-services/cloud-tasks and
build them with the monorepo-native //rules/java pattern (nvcf_java_library +
nvcf_spring_boot_image + java_junit5_test), the same as
examples/java-spring-boot-service. No rules_spring, no custom java/spring
macros, no root-module change beyond the step-1 maven closure. nvct-core and
nvct-service (:image_index) build green; nv-boot is consumed as in-tree source
targets with no API drift.

- gRPC-Java codegen retained via the subtree's proto.bzl; lombok wired through
  the subtree's own java_plugin.
- CI: cloud-tasks is a root-workspace member (like nv-boot-parent), so it is
  covered by the root matrix row via ROOT_GLOBS rather than a nested-module row.
- OSS hygiene: settings.xml (internal URM credential wiring) and the GitLab
  mirror .oss-allowlist are dropped from the public tree; urm.nvidia.com in
  pom.xml and stg.nvcr.io in test fixtures match content already public in the
  monorepo. local_env carries only dummy test fixtures.

Follow-up: cloud-tasks NOTICE auto-verification was coupled to the rules_spring
fat-jar layout and is removed with the macro swap; regenerating it for the
exploded classpath needs the shared nv-boot generate_notice.py to support that
layout (tracked separately).

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The pom.xml <repositories> block pointed at urm.nvidia.com (internal
Artifactory) only to resolve the nv-boot parent for a Maven build. The
monorepo builds cloud-tasks with Bazel and resolves nv-boot from in-tree
source targets, so the Bazel/CI build never touches urm (0 urm URLs in the
re-pinned maven_install.json). Remove the internal-server reference so the
public GitHub tree does not advertise it; zero build impact.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🛡️ CodeQL Analysis

🚨 Found 2 issue(s)

Severity Breakdown:

  • 🔴 Errors: 0
  • 🟡 Warnings: 0
  • 🔵 Notes: 0
📋 Top Issues

🔗 View full details in Security tab

🕐 Last updated: 2026-07-22 14:28:27 UTC | Commit: 04e75eb

balajinvda and others added 5 commits July 22, 2026 09:02
…TICE

Two root-row CI failures from landing cloud-tasks:
- nvct-core:tests / nvct-service:tests are Testcontainers/Cassandra integration
  tests; the root row runs bazel test //... with no tag filter, so they ran on
  GHA (no Docker) and failed. Tag them "manual" so //... skips them; test
  sources still compile via :nvct_core_test_fixtures, and they stay runnable on
  demand in a Docker-capable environment.
- Regenerate the root NOTICE (tools/scripts/update-license) to index the new
  src/control-plane-services/cloud-tasks/NOTICE.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Testcontainers integration suites cannot run in the containerized bazel matrix
(no Docker daemon), and skipping them is not acceptable. Add a dedicated
bazel-integration lane that ports the proven GitLab recipe: a docker:dind
service, the test process pointed at it via DOCKER_HOST, and Testcontainers
told to reach spawned containers at the "docker" alias.

- bazel-integration job: runs //... --test_tag_filters=requires-docker with the
  DinD service; exit 4 (no matching tests) is treated as success.
- Fast matrix: excludes requires-docker (--test_tag_filters=-requires-docker);
  those tests still compile in the build step.
- cloud-tasks nvct-core/nvct-service integration tests drop the interim
  "manual" tag and keep "requires-docker" so the lane runs them. cloud-tasks
  is the pilot; other services' skips (external / tests_skip) get removed as
  their suites are verified green in this lane.
- bazel-verification gates on the lane's result.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…+dind

The container+docker:dind combination failed at actions/checkout (a known GHA
rough edge with a service container attached to a containerized job). Switch the
lane to the bare ubuntu-latest runner, which already has Docker running, so
Testcontainers uses the host daemon directly -- no DinD service, no
host-override networking, and no container+service checkout fragility. bazelisk
reads .bazelversion for the pinned Bazel.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…applies

The integration tests failed under Bazel with InvalidKeyspaceException: keyspace
nvct never got created. Root cause: Bazel test runfiles present local_env/** as
symlinks into the build sandbox. The compose bind-mount ./cassandra/schema ->
/docker-entrypoint-initdb.d then mounts a directory of dangling symlinks (their
targets do not exist inside the Cassandra container), so entrypoint.sh finds no
*.cql (log shows 'executing cql scripts' immediately followed by 'init scripts
executed' with nothing in between) and the keyspace is never applied.

Fix: the two filesystem resolution paths now copy the bundle into a directory of
real files (dereferencing symlinks), the same way the JAR/Maven path already
does via extractLocalEnvFromJar. The bind mounts then serve real content. No
behavior change on a plain checkout (files are already real).

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- IntegrationTestConfiguration (Zip Slip, high): the JAR-extraction path now
  normalizes each destination and rejects any entry that resolves outside the
  extraction root, so a crafted '..' entry can no longer write outside it.
- SecurityConfiguration (disabled CSRF, high): this is a stateless
  (SessionCreationPolicy.STATELESS) OAuth2 resource server authenticated by
  JWT/api-key bearer tokens with no cookies or sessions, so CSRF does not apply
  and disabling it is the correct Spring posture. Documented the rationale and
  added an inline CodeQL suppression rather than re-enabling (which would break
  the token-only API without adding protection).

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pull the SpringDoc/OpenAPI 3.1 schema annotation fixes from the upstream
nvct/cloud-tasks feat/bazel branch (4c6f57c9) so the import tracks current
upstream. The DTOs declare explicit schema types (types={"object"}),
implementation, additionalProperties, and requiredMode so the generated
OpenAPI document is well-formed; MiscEndpointsTest asserts the affected
component schemas are objects.

Source-only sync: the monorepo's Bazel/OSS/CodeQL changes to
SecurityConfiguration.java and IntegrationTestConfiguration.java are strictly
ahead of upstream and are preserved untouched.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
… recognized

The integration test's jar-extraction guard compared a normalized dest path
against a non-normalized extraction root, which CodeQL does not recognize as a
zip-slip sanitizer. Normalize the base once at definition so the
dest.startsWith(base) check is the canonical normalized-to-normalized form.
Behavior is unchanged (the extraction root has no `..`/symlink components); this
only makes the existing guard statically provable and clears the CodeQL finding.

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Move the Java tree off the shared root Maven hub and onto independent Bazel
modules, so every Java library and service builds, tests, and pins its own
dependencies from its own directory with no reference to the repo root. This
brings Java to parity with the Go and Rust services, which are already
self-contained nested modules with their own MODULE.bazel and CI matrix row.

Modules created:
- rules/java -> nvcf_java_rules: shared macros (nvcf_java_library,
  nvcf_spring_boot_image), platform.bzl (SPRING_BOOT_BOM, MAVEN_REPOSITORIES,
  version constants), a vendored self-contained create_oci_image (drops the
  //rules/oci dependency), and bom_alignment_test.
- src/libraries/java/nv-boot-parent -> nv_boot_parent: the Spring platform
  library, its own @maven hub + maven_install.json, notice tooling repointed at
  the module-local lockfile.
- src/control-plane-services/cloud-tasks -> nvct_cloud_tasks: the service, its
  own @maven hub (incl. gRPC codegen), depends on nvcf_java_rules + nv_boot_parent.
- examples/java-spring-boot-service -> nvcf_java_example: the reference/template
  service, its own @maven hub. Migrated because it also consumed //rules/java and
  @nv_third_party_deps and would otherwise break the root build.

Maven BOM alignment: load() is forbidden in MODULE.bazel, so each module inlines
the canonical BOM list and guards it with bom_alignment_test, which fails the
build if a module's boms drift from SPRING_BOOT_BOM in platform.bzl. This keeps
the independent per-module resolutions in agreement without a shared hub.

Root wiring: the four Java module paths (except rules/java, which declares no
root-referencing targets) are added to .bazelignore; cloud-tasks is dropped from
ROOT_GLOBS and src/libraries/ is narrowed to src/libraries/go/ so Java no longer
rides the root row. bazel.yml gains nv-boot-parent, cloud-tasks, and
java-spring-boot-service matrix rows (build + test); like all non-root rows they
get EC2 Buildbarn cache hits via the workflow's remote-cache injection.

CI image: ci/Dockerfile.bazel gains an additive remotejdk_25 + Bazel 9.1.1
pre-warm so the Java rows start warm; bazel-ci-image.yml bumps to 0.13.0 (builds
on this PR, publishes on merge). The bazel.yml consumer ref stays at 0.12.0 until
0.13.0 is published, to keep the matrix from pinning an unpublished image.
Maven jars are not baked (per-subtree actions/cache for now; see #373).

Verified standalone from each module directory: nvcf_java_rules builds;
nv_boot_parent builds + 17 non-docker tests pass (incl. bom_alignment_test,
notice_check_test); nvct_cloud_tasks builds (gRPC codegen + nv_boot_parent
consumed as a module) + bom_alignment_test passes; nvcf_java_example builds +
3 tests pass. Root workspace analyzes clean with the Java dirs ignored.

Refs: #372

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
# Conflicts:
#	.github/workflows/bazel.yml
@github-actions

Copy link
Copy Markdown

@balajinvda
balajinvda requested a review from sanjay-saxena July 23, 2026 04:46
… download

The standalone Java modules pinned --java_runtime_version=remotejdk_25, so Bazel
downloaded its own JDK 25 on every cold CI runner even though the bazel-ci image
already ships Temurin 25 at JAVA_HOME. Point Bazel at that JDK via local_jdk, so
there is no per-build JDK download and the image carries a single JDK.

Also reverts the ci/Dockerfile.bazel + bazel-ci-image.yml prewarm changes: they
are no longer needed because the image is unchanged and local_jdk uses the
existing 0.12.0 Temurin. Supersedes the GitLab bazel-ci prewarm MR and the
0.13.0 image bump. Reproducibility now comes from the pinned CI image tag; local
dev needs a JDK 25 on JAVA_HOME (to be revisited later).

Co-authored-by: Balaji Ganesan <bganesan@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants