# A list of checkers which should be defined in Gerrit.
#
# If the UUID of the checker does not already exist in Gerrit, it is
# created.  If it does exist, it is updated.  Fields which are not
# present in the input are not touched (nor are they considered when
# comparing the declared state to the existing state).

checkers:
  - uuid: "opendev-zuul-third-party-check:plugins_checks"
    repository: "plugins/checks"
    name: "Zuul Tests"
    description: "Tests of Checks plugin with Zuul"
    status: "DISABLED"

  - uuid: "zuul-check:plugins_checks"
    repository: "plugins/checks"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:zuul_config"
    repository: "zuul/config"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:zuul_jobs"
    repository: "zuul/jobs"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:zuul_ops"
    repository: "zuul/ops"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

# Core Plugins

  - uuid: "zuul-check:plugins_codemirror-editor"
    repository: "plugins/codemirror-editor"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_commit-message-length-validator"
    repository: "plugins/commit-message-length-validator"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_delete-project"
    repository: "plugins/delete-project"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_download-commands"
    repository: "plugins/download-commands"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_gitiles"
    repository: "plugins/gitiles"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_hooks"
    repository: "plugins/hooks"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_plugin-manager"
    repository: "plugins/plugin-manager"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_replication"
    repository: "plugins/replication"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_reviewnotes"
    repository: "plugins/reviewnotes"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_singleusergroup"
    repository: "plugins/singleusergroup"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_webhooks"
    repository: "plugins/webhooks"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

# Other plugins:

  - uuid: "zuul-check:plugins_oauth"
    repository: "plugins/oauth"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"

  - uuid: "zuul-check:plugins_code-owners"
    repository: "plugins/code-owners"
    name: "Zuul Check Pipeline"
    description: "Run Zuul jobs on new patchsets"
