# Jobs listed in general-jobs.rst.

- job:
    name: dco-license
    description: |
      A job to validate all new commits have been signed using --signoff.
    run: playbooks/dco-license/run.yaml

- job:
    name: unittests
    abstract: true
    description: |
      Perform setup common to all unit test jobs.

      This performs basic host and general project setup tasks common
      to all types of unit test jobs.
    pre-run: playbooks/unittests/pre.yaml
    post-run: playbooks/unittests/post.yaml

- job:
    name: multinode
    abstract: true
    description: |
      Do additional setup needed for multi-node jobs such as setting up
      overlay networks and setting up known-hosts and ssh keys
    pre-run: playbooks/multinode/pre.yaml

- job:
    name: run-test-command
    parent: unittests
    description: |
      Run simple command as test.

      To use this, set the ``test_command`` variable to a single command or
      a list of commands. For complex list of commands, it is recommended to
      use a single command that runs a proper script.

      .. zuul:jobvar:: zuul_work_dir
         :default: {{ zuul.project.src_dir }}

         Path to operate in.
    run: playbooks/run-test-command/run.yaml

- job:
    name: upload-git-mirror
    description: |
      Mirrors a tested project repository to a remote git server.

      .. zuul:jobvar:: git_mirror_credentials
        :type: dict

        This is expected to be a Zuul Secret with these keys:

        .. zuul:jobvar:: user

          SSH user for the remote git repository

        .. zuul:jobvar:: host

          SSH host for the remote git repository

        .. zuul:jobvar:: ssh_key

          Literal private key contents.
          Should start with something like ``-----BEGIN RSA PRIVATE KEY-----``.

        .. zuul:jobvar:: host_key

          SSH host key of the remote git server.
          Can be obtained with ``ssh-keyscan -H <host>``.

      .. zuul:jobvar:: git_mirror_repository

        Path of the remote git repository
    run: playbooks/upload-git-mirror/run.yaml

- job:
    name: validate-zone-db
    description: |
      Validate zone.db files in project.

      Responds to these variables:

      .. zuul:jobvar:: zone_files
         :default: {{ ansible_user_dir }}/{{ zuul.project.src_dir }}

         Search for zone.db files recursively in this directory.
         Format should be domain.xyz/zone.db, where the parent
         directory is named for the zone described.

      .. zuul:jobvar:: zone_db_list
         :default: []

         Override the default searching above with explicit
         domain/path references (see validate-zone-db role)
    run: playbooks/validate-zone-db/run.yaml

- job:
    name: dhall-diff
    description: |
      Ensure that generated configuration files are idempotent.

      This job runs a render command and check that no files are
      modified.

      .. zuul:jobvar:: dhall_render_command
         :default: make

         The command that render the configuration files.

      .. zuul:jobvar:: dhall_version
         :default: 1.31.1

         The dhall version.

    pre-run: playbooks/dhall/prepare.yaml
    run: playbooks/dhall/diff.yaml

- job:
    name: shake-build
    description: |
      Run the shake build system command.

      This job produces a shake.html report.

      .. zuul:jobvar:: shake_target

         The name of the target to build.

    pre-run: playbooks/shake/pre.yaml
    run: playbooks/shake/run.yaml