code: def build_champagne_image(
      ray_version: str,
      python_version: str,
      image_type: str,
  ) -> str:
      """
      Builds the Anyscale champagne image.
      """
      _download_dataplane_build_file()
      env = os.environ.copy()
      env["DOCKER_BUILDKIT"] = "1"
      if image_type == "cpu":
          ray_project = "ray"
          anyscale_repo = DATAPLANE_ECR_REPO
      else:
          ray_project = "ray-ml"
          anyscale_repo = DATAPLANE_ECR_ML_REPO
      ray_image = f"rayproject/{ray_project}:{ray_version}-{python_version}-{image_type}"
      anyscale_image = f"{get_global_config()['byod_ecr']}/{anyscale_repo}:champagne-{ray_version}"
  
      logger.info(f"Building champagne anyscale image from {ray_image}")
      with open(DATAPLANE_FILENAME, "rb") as build_file:
          subprocess.check_call(
              [
                  "docker",
                  "build",
                  "--build-arg",
                  f"BASE_IMAGE={ray_image}",
                  "-t",
                  anyscale_image,
                  "-",
              ],
              stdin=build_file,
              stdout=sys.stderr,
              env=env,
          )
      _validate_and_push(anyscale_image)
  
      return anyscale_image
  
file_path: ray/release/ray_release/byod/build.py
imports: from typing import List, Optional, Dict
  import boto3
  import hashlib
  import os
  import subprocess
  import sys
  import time
  from ray_release.config import RELEASE_PACKAGE_DIR
  from ray_release.configs.global_config import get_global_config
  from ray_release.logger import logger
  from ray_release.test import Test, DATAPLANE_ECR_REPO, DATAPLANE_ECR_ML_REPO
label_desc: Use image node_id 1 for calling a global function with example usage: build_champagne_image(ray_version, python_version, image_type) and returns: anyscale_image