code: def test_launch_build_push_job(
      relay_server,
      user,
      monkeypatch,
      runner,
      launch_config,
      override_config,
      mocked_fetchable_git_repo,
      wandb_init,
      test_settings,
  ):
      release_image = "THISISANIMAGETAG"
      queue = "test_queue"
      proj = "test8"
      uri = "https://github.com/FooBar/examples.git"
      entry_point = ["python", "train.py"]
      settings_mr = test_settings({"project": LAUNCH_DEFAULT_PROJECT})
      # create project for artifacts
      run_artifact = wandb_init(settings=settings_mr)
      run_artifact.finish()
      settings = test_settings({"project": proj})
      internal_api = InternalApi()
      public_api = PublicApi()
  
      async def patched_validate_docker_installation():
          return None
  
      monkeypatch.setattr(
          wandb.sdk.launch.builder.build,
          "validate_docker_installation",
          patched_validate_docker_installation,
      )
  
      monkeypatch.setattr(
          wandb.sdk.launch.builder.build,
          "LAUNCH_CONFIG_FILE",
          "./config/wandb/launch-config.yaml",
      )
  
      with relay_server(), runner.isolated_filesystem():
          # create project
          run = wandb_init(settings=settings)
  
          os.makedirs(os.path.expanduser("./config/wandb"))
          with open(
              os.path.expanduser("./config/wandb/launch-config.yaml"),
              "w",
          ) as f:
              json.dump(launch_config, f)
  
          internal_api.create_run_queue(
              entity=user,
              project=LAUNCH_DEFAULT_PROJECT,
              queue_name=queue,
              access="PROJECT",
          )
  
          queued_run = launch_add(
              uri=uri,
              entity=user,
              project=proj,
              queue_name=queue,
              build=True,
              job="DELETE ME",
              entry_point=entry_point,
              config=override_config,
              project_queue=LAUNCH_DEFAULT_PROJECT,
          )
  
          assert queued_run.state == "pending"
          assert queued_run.entity == user
          assert queued_run.project == proj
          assert queued_run.project_queue == LAUNCH_DEFAULT_PROJECT
  
          rqi = internal_api.pop_from_run_queue(
              queue, user, LAUNCH_DEFAULT_PROJECT
          )
  
          assert rqi["runSpec"]["uri"] is None
          assert rqi["runSpec"]["job"] != "DELETE ME"
          assert (
              rqi["runSpec"]["job"].split("/")[-1]
              == f"job-{release_image}:v0"
          )
          # rqi pushed to launch proj, but confirm it's still pointed at our end project
          assert rqi["runSpec"]["project"] == proj
  
          job = public_api.job(rqi["runSpec"]["job"])
          run.finish()
  
          assert job._job_info["source"]["image"] == release_image
  
imports: import json
  import os
  from unittest import mock
  import pytest
  import wandb
  from wandb.apis.public import Api
  from wandb.sdk.internal.internal_api import Api
  from wandb.sdk.internal.internal_api import UnsupportedError
  from wandb.sdk.launch._launch_add import launch_add
  from wandb.sdk.launch.utils import LAUNCH_DEFAULT_PROJECT, LaunchError
label_desc: Use image node_id 3 for calling a global function with example usage: test_launch_build_push_job(relay_server, user, monkeypatch, runner, launch_config, override_config, mocked_fetchable_git_repo, wandb_init, test_settings) and returns: None