openqa-clone-job(1)

NAME
openqa-clone-job - creates a new job based on an existing job

SYNOPSIS
Clones a job from the local or a remote openQA instance. Downloads all assets associated with the job (unless --skip-download is specified). Optionally settings can be modified.

  openqa-clone-job [OPTIONS] JOBREF [KEY=[VALUE] ...]

  # clones job 42 (and any existing parents) from "openqa.opensuse.org" to the local openQA instance
  # note: If job 42 is a parallel parent (e.g. a "server" job), its parallel children (e.g. "client"
  #       jobs) will be cloned as well.
  openqa-clone-job https://openqa.opensuse.org/t42
  openqa-clone-job --from https://openqa.opensuse.org/tests/42
  openqa-clone-job --from https://openqa.opensuse.org 42

  # clones job 42 (and any existing parents) from "openqa.opensuse.org" to the openQA instance "openqa.example.com"
  openqa-clone-job --skip-download --from https://openqa.opensuse.org --host openqa.example.com 42

  # clones job 42 (and any existing parents) within "openqa.opensuse.org" modifying some job settings
  openqa-clone-job --within-instance https://openqa.opensuse.org/t42 MAKETESTSNAPSHOTS=1 TEST+=:PR-123 FOOBAR=

  # clones job 42 including all of its direct children but excluding its chained parents
  openqa-clone-job --skip-chained-deps --clone-children https://openqa.opensuse.org/tests/42

  # clones the cluster attached to job 42 modifying job-specific settings to
  # test without interfering with production jobs
  openqa-clone-job --skip-chained-deps --within-instance https://openqa.opensuse.org/tests/42 _GROUP=0 WORKER_CLASS:client=,worker2 {TEST,BUILD}+=-my-test-boo123

DESCRIPTION
Call with either a full URL pointing to a test job to clone from or one of both parameters "--from" or "--within-instance". The job ID can be specified as part of the URL or as its own parameter.

API key and secret are read from "client.conf" if not specified via CLI arguments or environment variables "OPENQA_API_KEY" and "OPENQA_API_SECRET". The config file is checked for under "$OPENQA_CONFIG", "~/.config/openqa" and "/etc/openqa" in this order. It must look like this:

  [openqa.opensuse.org]
  key = 45ABCEB4562ACB04
  secret = 4BA0003086C4CB95
  [another.host]
  key = D7345DA7B9D86B3B
  secret = A98CDBA9C8DB87BD

Any parent jobs (chained or parallel) are also cloned unless "--skip-deps" or "--skip-chained-deps" is specified. If "--skip-chained-deps" is specified published assets generated by parent jobs are downloaded to be directly used instead of generated.

Keep in mind that by default any additionally specified job settings are NOT added to the also cloned parent jobs. Specify "--parental-inheritance" if this is wanted. It is also possible to specify the job a setting should be added to explicitly, e.g. "WORKER_CLASS:create_hpc=special-worker". In this example the setting "WORKER_CLASS" will only be set to the specified value for jobs where the setting "TEST" equals "create_hpc". For this keep in mind that the parameter parsing is executed in the order specified so changing the setting "TEST" should come after job-specific settings.

Note that the child job is the one which has the "START_AFTER_TEST" or "PARALLEL_WITH" setting and the parent job is the one mentioned by that setting.

Cloning directly chained dependencies ("START_DIRECTLY_AFTER_TEST") is NOT supported.

OPTIONS

--host HOST
    Specifies the hostname of the target openQA instance (defaults to localhost).

    Assets are still always downloaded to the local machine. When specifying a remote host make sure the assets are already there and use "--skip-download".

--from HOST
    Specifies the hostname of the openQA instance to clone the job from (deduced from JOBREF if it is a URL).

--dir DIR
    Specifies the directory to store test assets (defaults to $OPENQA_SHAREDIR/factory).

--skip-checks
    Deprecated option. The logic was inverted, so currently the check is skipped by default. If you were using it, just remove it and the behavior will remain the same.

--check-repos
    Enables additional checks for availability of maintenance update repositories (SUSE specific check).

--skip-deps
    Do NOT clone parent jobs (which is done by default).

--skip-chained-deps
    Do NOT clone chained parent jobs (jobs specified via "START_AFTER_TEST").

    This makes the job use the downloaded HDD image instead of running the generator job again which is of course only possible if --host is the local machine.

--skip-download
    Do NOT download assets. You need to ensure all required assets are provided yourself.

--ignore-missing-assets
    Cloning a job will not fail if an asset is missing.

--clone-children
    Clone all direct child jobs as well. By default, only parallel child jobs are cloned.

--max-depth
    Specifies the max depth for cloning children. By default, only direct children are cloned. Use 0 to denote infinity.

--within-instance HOST
    A shortcut for "--skip-download --from HOST --host HOST" to clone a job within a local or remote instance.

--repeat N
    Do the same clone operation N times; this can be useful for Statistical investigation. Example:

    openqa-clone-job --skip-chained-deps --repeat=50 --within-instance \ https://openqa.opensuse.org 123456

    Will create 50 clones of the same job.

--retry N
    Retries up to N times with exponential backoff on transient download errors. The default number of retries is 5. Can be set to 0 to disable retrying.

--show-progress
    Displays a progress bar when downloading assets.

--parental-inheritance
    Provides parental job with settings specified via command line (they go to child job by default).

--export-command
    Prints an `openqa-cli` command to create the jobs instead of creating them directly. This is useful to customize the API call or to review it before submitting.

--badge
    Instead of the normal plain text scenario name and URL outputs a markdown list entry of labeled badges and links.

--reproduce
    Ensure the cloned jobs use the same version of the test code and needles as the original jobs.

--apikey <value>
    Specifies the public key needed for API authentication. Overrides config file setting and environment variable "OPENQA_API_KEY". Use is discouraged due to risk of leaking credentials.

--apisecret <value>
    Specifies the secret key needed for API authentication. Overrides config file setting and environment variable "OPENQA_API_SECRET". Use is discouraged due to risk of leaking credentials.

--verbose, -v
    Increases verbosity.

--help, -h
    Prints help.