code: def main(
      targets: List[str],
      team: str,
      workers: int,
      worker_id: int,
      parallelism_per_worker: int,
      operating_system: str,
      except_tags: str,
      only_tags: str,
      run_flaky_tests: bool,
      skip_ray_installation: bool,
      build_only: bool,
      gpus: int,
      network: Optional[str],
      test_env: Tuple[str],
      test_arg: Optional[str],
      python_version: Optional[str],
      build_name: Optional[str],
      build_type: Optional[str],
      tmp_filesystem: Optional[str],
  ) -> None:
      if not bazel_workspace_dir:
          raise Exception("Please use `bazelisk run //ci/ray_ci`")
      os.chdir(bazel_workspace_dir)
      init_global_config(
          bazel_runfile("release/ray_release/configs/oss_config.yaml")
      )
      docker_login(_DOCKER_ECR_REPO.split("/")[0])
  
      if build_type == "wheel" or build_type == "wheel-aarch64":
          # for wheel testing, we first build the wheel and then use it for running tests
          architecture = (
              DEFAULT_ARCHITECTURE
              if build_type == "wheel"
              else "aarch64"
          )
          BuilderContainer(
              DEFAULT_PYTHON_VERSION, DEFAULT_BUILD_TYPE, architecture
          ).run()
      container = _get_container(
          team,
          operating_system,
          workers,
          worker_id,
          parallelism_per_worker,
          gpus,
          network=network,
          tmp_filesystem=tmp_filesystem,
          test_env=list(test_env),
          python_version=python_version,
          build_name=build_name,
          build_type=build_type,
          skip_ray_installation=skip_ray_installation,
      )
      if build_only:
          sys.exit(0)
      test_targets = _get_test_targets(
          container,
          targets,
          team,
          operating_system,
          except_tags=_add_default_except_tags(except_tags),
          only_tags=only_tags,
          get_flaky_tests=run_flaky_tests,
      )
      success = container.run_tests(team, test_targets, test_arg)
      sys.exit(0 if success else 42)
  
file_path: ray/ci/ray_ci/tester.py
imports: import os
  import sys
  from typing import List, Tuple, Optional
  import yaml
  import click
  from ci.ray_ci.container import _DOCKER_ECR_REPO
  from ci.ray_ci.builder_container import BuilderContainer, DEFAULT_BUILD_TYPE, DEFAULT_PYTHON_VERSION, DEFAULT_ARCHITECTURE, PYTHON_VERSIONS
  from ci.ray_ci.linux_tester_container import LinuxTesterContainer
  from ci.ray_ci.windows_tester_container import WindowsTesterContainer
  from ci.ray_ci.tester_container import TesterContainer
  from ci.ray_ci.utils import docker_login
  from ray_release.configs.global_config import init_global_config
  from ray_release.bazel import bazel_runfile
label_desc: Use image node_id 1 for calling a global function with example usage: main(targets, team, workers, worker_id, parallelism_per_worker, operating_system, except_tags, only_tags, run_flaky_tests, skip_ray_installation, build_only, gpus, network, test_env, test_arg, python_version, build_name, build_type, tmp_filesystem) without return types