code: def submit(obj, tasks, groups, params, arrow_version, wait):
      """
      Submit crossbow testing tasks.
  
      See groups defined in arrow/dev/tasks/tasks.yml
      """
      crossbow_repo = obj["crossbow_repo"]
      pull_request = obj["pull_request"]
      with tempfile.TemporaryDirectory() as tmpdir:
          tmpdir = Path(tmpdir)
          arrow, queue = _clone_arrow_and_crossbow(
              dest=Path(tmpdir),
              crossbow_repo=crossbow_repo,
              pull_request=pull_request,
          )
          # load available tasks configuration and groups from yaml
          config = Config.load_yaml(
              arrow.path / "dev" / "tasks" / "tasks.yml"
          )
          config.validate()
  
          # initialize the crossbow build's target repository
          target = Target.from_repo(
              arrow,
              version=arrow_version,
              remote=pull_request.head.repo.clone_url,
              branch=pull_request.head.ref,
          )
  
          # parse additional job parameters
          params = dict([p.split("=") for p in params])
          params["pr_number"] = pull_request.number
  
          # instantiate the job object
          job = Job.from_config(
              config=config,
              target=target,
              tasks=tasks,
              groups=groups,
              params=params,
          )
  
          # add the job to the crossbow queue and push to the remote repository
          queue.put(job, prefix="actions", increment_job_id=False)
          queue.push()
  
          # render the response comment's content
          report = CommentReport(
              job, crossbow_repo=crossbow_repo, wait_for_task=wait
          )
  
          # send the response
          pull_request.create_issue_comment(report.show())
  
imports: import enum
  import os
  import shlex
  from pathlib import Path
  from functools import lru_cache, partial
  import tempfile
  import click
  import github
  from .utils.git import git
  from .utils.logger import logger
  from .crossbow import Repo, Queue, Config, Target, Job, CommentReport
label_desc: Use image node_id 5 for calling a global function with example usage: submit(obj, tasks, groups, params, arrow_version, wait) without return types