# gerrit-base jobs
- job:
    name: system-config-build-image-gerrit-base
    description: Build a gerrit-base image.
    parent: system-config-build-image
    required-projects: &gerrit_base_projects
      - opendev/jeepyb
      - opendev/system-config
    requires: python-builder-3.9-bullseye-container-image
    provides: gerrit-base-container-image
    pre-run: &gerrit-base_prerun
      - playbooks/zuul/gerrit/base.yaml
    vars: &gerrit-base_vars
      docker_images:
        - context: docker/gerrit/base
          repository: opendevorg/gerrit-base
          path: /home/zuul/src/opendev.org/opendev/jeepyb
    files: &gerrit-base_files
      - docker/gerrit/base/
      - roles/bazelisk-build/
      - playbooks/zuul/gerrit/

- job:
    name: system-config-upload-image-gerrit-base
    description: Build and upload a gerrit-base image.
    parent: system-config-upload-image
    requires: python-builder-3.9-bullseye-container-image
    provides: gerrit-base-container-image
    pre-run: *gerrit-base_prerun
    required-projects: *gerrit_base_projects
    vars: *gerrit-base_vars
    files: *gerrit-base_files

- job:
    name: system-config-promote-image-gerrit-base
    description: Promote a previously published gerrit-base image to latest.
    parent: system-config-promote-image
    required-projects: *gerrit_base_projects
    vars: *gerrit-base_vars
    files: *gerrit-base_files

# Gerrit 3.3 jobs
- job:
    name: system-config-build-image-gerrit-3.3
    description: Build a gerrit image.
    parent: system-config-build-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-3.3-container-image
    required-projects: &gerrit_projects_3_3
      - name: opendev/system-config
        override-checkout: master
      - name: gerrit.googlesource.com/gerrit
        override-checkout: stable-3.3
      # Plugins common to every build with branches or refs for every build
      - name: gerrit.googlesource.com/plugins/commit-message-length-validator
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/hooks
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/its-base
        # There is no 3.3 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/its-storyboard
        # There is no 3.3 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/javamelody
        # There is no 3.3 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/replication
        override-checkout: stable-3.3
      - name: gerrit.googlesource.com/plugins/reviewnotes
        override-checkout: v3.3.7
      # Plugins common to every build without branches or refs for every build
      - name: gerrit.googlesource.com/plugins/download-commands
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/singleusergroup
        override-checkout: stable-3.3
      # Plugins not common to every build
      - name: gerrit.googlesource.com/plugins/codemirror-editor
        override-checkout: stable-3.3
      - name: gerrit.googlesource.com/plugins/delete-project
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/gitiles
        override-checkout: stable-3.3
      - name: gerrit.googlesource.com/plugins/plugin-manager
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/webhooks
        override-checkout: v3.3.7
      - name: gerrit.googlesource.com/plugins/zuul-results-summary
        override-checkout: main
      # Non plugin submodules
      - name: gerrit.googlesource.com/jgit
        override-checkout: master
      - name: gerrit.googlesource.com/polymer-bridges
        override-checkout: v3.3.7
    vars: &gerrit_vars_3_3
      docker_images:
        - context: docker/gerrit/bazel
          repository: opendevorg/gerrit
          target: gerrit
          path: /home/zuul/src/gerrit.googlesource.com/gerrit
          tags:
            - 3.3
    files: &gerrit_files_3_3
      - docker/gerrit/base/
      - docker/gerrit/bazel/
      - playbooks/zuul/gerrit/
      - playbooks/test-review.yaml
      - testinfra/test_gerrit.py
      - jeepyb/
      - roles/bazelisk-build/

- job:
    name: system-config-upload-image-gerrit-3.3
    description: Build and upload a gerrit image.
    parent: system-config-upload-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-3.3-container-image
    required-projects: *gerrit_projects_3_3
    vars: *gerrit_vars_3_3
    files: *gerrit_files_3_3

- job:
    name: system-config-promote-image-gerrit-3.3
    description: Promote a previously published gerrit image to latest.
    parent: system-config-promote-image
    vars: *gerrit_vars_3_3
    files: *gerrit_files_3_3

# Gerrit 3.4 jobs
- job:
    name: system-config-build-image-gerrit-3.4
    description: Build a gerrit image.
    parent: system-config-build-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-3.4-container-image
    required-projects: &gerrit_projects_3_4
      - name: opendev/system-config
        override-checkout: master
      - name: gerrit.googlesource.com/gerrit
        override-checkout: stable-3.4
      # Plugins common to every build with branches or refs for every build
      - name: gerrit.googlesource.com/plugins/commit-message-length-validator
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/hooks
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/its-base
        # There is no 3.4 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/its-storyboard
        # There is no 3.4 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/javamelody
        # There is no 3.4 branch
        override-checkout: master
      - name: gerrit.googlesource.com/plugins/replication
        override-checkout: stable-3.4
      - name: gerrit.googlesource.com/plugins/reviewnotes
        override-checkout: v3.4.1
      # Plugins common to every build without branches or refs for every build
      - name: gerrit.googlesource.com/plugins/download-commands
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/singleusergroup
        override-checkout: v3.4.1
      # Plugins not common to every build
      - name: gerrit.googlesource.com/plugins/codemirror-editor
        override-checkout: stable-3.4
      - name: gerrit.googlesource.com/plugins/delete-project
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/gitiles
        override-checkout: stable-3.4
      - name: gerrit.googlesource.com/plugins/plugin-manager
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/webhooks
        override-checkout: v3.4.1
      - name: gerrit.googlesource.com/plugins/zuul-results-summary
        override-checkout: main
      # Non plugin submodules
      - name: gerrit.googlesource.com/jgit
        override-checkout: master
      - name: gerrit.googlesource.com/polymer-bridges
        override-checkout: v3.4.1
    vars: &gerrit_vars_3_4
      docker_images:
        - context: docker/gerrit/bazel
          repository: opendevorg/gerrit
          target: gerrit
          path: /home/zuul/src/gerrit.googlesource.com/gerrit
          tags:
            - 3.4
    files: &gerrit_files_3_4
      - docker/gerrit/base/
      - docker/gerrit/bazel/
      - playbooks/zuul/gerrit/
      - playbooks/test-review.yaml
      - testinfra/test_gerrit.py
      - jeepyb/
      - roles/bazelisk-build/

- job:
    name: system-config-upload-image-gerrit-3.4
    description: Build and upload a gerrit image.
    parent: system-config-upload-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-3.4-container-image
    required-projects: *gerrit_projects_3_4
    vars: *gerrit_vars_3_4
    files: *gerrit_files_3_4

- job:
    name: system-config-promote-image-gerrit-3.4
    description: Promote a previously published gerrit image to latest.
    parent: system-config-promote-image
    vars: *gerrit_vars_3_4
    files: *gerrit_files_3_4

# Gerrit master jobs
- job:
    name: system-config-build-image-gerrit-master-base
    description: |
      Build a gerrit image.

      This job has no files matchers so it can be used in other repos.
    parent: system-config-build-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-master-container-image
    required-projects: &gerrit_projects_master
      - opendev/system-config
      - gerrit.googlesource.com/jgit
      - gerrit.googlesource.com/gerrit
      - gerrit.googlesource.com/plugins/checks
      - gerrit.googlesource.com/plugins/codemirror-editor
      - gerrit.googlesource.com/plugins/commit-message-length-validator
      - gerrit.googlesource.com/plugins/delete-project
      - gerrit.googlesource.com/plugins/download-commands
      - gerrit.googlesource.com/plugins/gitiles
      - gerrit.googlesource.com/plugins/hooks
      - gerrit.googlesource.com/plugins/its-base
      - gerrit.googlesource.com/plugins/its-storyboard
      - gerrit.googlesource.com/plugins/javamelody
      - gerrit.googlesource.com/plugins/plugin-manager
      - gerrit.googlesource.com/plugins/replication
      - gerrit.googlesource.com/plugins/reviewnotes
      - gerrit.googlesource.com/plugins/singleusergroup
      - gerrit.googlesource.com/plugins/webhooks
      - name: gerrit.googlesource.com/plugins/zuul-results-summary
        override-checkout: main
      - gerrit.googlesource.com/polymer-bridges
    vars: &gerrit_vars_master
      zuul_work_dir: src/opendev.org/opendev/system-config
      docker_images:
        - context: docker/gerrit/bazel
          repository: opendevorg/gerrit
          target: gerrit
          path: /home/zuul/src/gerrit.googlesource.com/gerrit
          tags:
            - master
      gerrit_additional_plugins:
        - checks

- job:
    name: system-config-build-image-gerrit-master
    description: |
      Build a gerrit image.

      This job is used in system-config.
    parent: system-config-build-image-gerrit-master-base
    files: &gerrit_files_master
      - docker/gerrit/base/
      - docker/gerrit/bazel/
      - playbooks/zuul/gerrit/
      - jeepyb/
      - roles/bazelisk-build/

- job:
    name: system-config-upload-image-gerrit-master
    description: Build and upload a gerrit image.
    parent: system-config-upload-image
    pre-run:
      - playbooks/zuul/gerrit/repos.yaml
      - playbooks/zuul/gerrit/submodules.yaml
    run: playbooks/zuul/gerrit/run.yaml
    requires: gerrit-base-container-image
    provides: gerrit-master-container-image
    required-projects: *gerrit_projects_master
    vars: *gerrit_vars_master
    files: *gerrit_files_master

- job:
    name: system-config-promote-image-gerrit-master
    description: Promote a previously published gerrit image to latest.
    parent: system-config-promote-image
    vars: *gerrit_vars_master
    files: *gerrit_files_master

- project-template:
    name: system-config-gerrit-images
    check:
      jobs:
        - system-config-build-image-gerrit-base:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-build-image-python-builder-3.9-bullseye
                soft: true
        - system-config-build-image-gerrit-3.3:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-build-image-gerrit-base
                soft: true
        - system-config-build-image-gerrit-3.4:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-build-image-gerrit-base
                soft: true
        - system-config-build-image-gerrit-master:
            voting: false
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-build-image-gerrit-base
                soft: true
    gate:
      jobs:
        - system-config-upload-image-gerrit-base:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-upload-image-python-builder-3.9-bullseye
                soft: true
        - system-config-upload-image-gerrit-3.3:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-upload-image-gerrit-base
                soft: true
        - system-config-upload-image-gerrit-3.4:
            dependencies:
              - name: opendev-buildset-registry
              - name: system-config-upload-image-gerrit-base
                soft: true
    deploy:
      jobs:
        - system-config-promote-image-gerrit-base
        - system-config-promote-image-gerrit-3.3
        - system-config-promote-image-gerrit-3.4