---
- project:
    name: 'openstack-bifrost-cleanup'
    # -------------------------------
    # branches
    # -------------------------------
    stream:
      - master:
          branch: '{stream}'

    # -------------------------------
    # projects
    # -------------------------------
    project:
      - 'openstack':
          project-repo: 'https://git.openstack.org/openstack/bifrost'
          clone-location: '/opt/bifrost'
      - 'opnfv':
          project-repo: 'https://gerrit.opnfv.org/gerrit/releng-xci'
          clone-location: '/opt/releng-xci'

    # -------------------------------
    # jobs
    # -------------------------------
    jobs:
      - '{project}-bifrost-cleanup-{stream}'

- job-template:
    name: '{project}-bifrost-cleanup-{stream}'

    disabled: true
    concurrent: false

    node: bifrost-verify-virtual

    # Make sure no verify job is running on any of the slaves since that would
    # produce build logs after we wipe the destination directory.
    properties:
      - build-blocker:
          blocking-jobs:
            - '{project}-bifrost-verify-*'

    parameters:
      - string:
          name: PROJECT
          default: '{project}'

    builders:
      - shell: |
          #!/bin/bash

          set -eu

          # DO NOT change this unless you know what you are doing.
          BIFROST_GS_URL="gs://artifacts.opnfv.org/cross-community-ci/openstack/bifrost/$GERRIT_NAME/$GERRIT_CHANGE_NUMBER/"

          # This should never happen... even 'recheck' uses the last jobs'
          # gerrit information. Better exit with error so we can investigate
          [[ ! -n $GERRIT_NAME ]] || [[ ! -n $GERRIT_CHANGE_NUMBER ]] && exit 1

          echo "Removing build artifacts for $GERRIT_NAME/$GERRIT_CHANGE_NUMBER"

          if ! [[ "$BIFROST_GS_URL" =~ "/cross-community-ci/openstack/bifrost/" ]]; then
              echo "Oops! BIFROST_GS_URL=$BIFROST_GS_URL does not seem like a valid"
              echo "bifrost location on the Google storage server. Please double-check"
              echo "that it's set properly or fix this line if necessary."
              echo "gsutil will not be executed until this is fixed!"
              exit 1
          fi
          try_to_rm=1
          while [[ $try_to_rm -lt 6 ]]; do
              gsutil -m rm -r $BIFROST_GS_URL && _exitcode=$? && break
              _exitcode=$?
              echo "gsutil rm failed! Trying again... (attempt #$try_to_rm)"
              let try_to_rm += 1
              # Give it some time...
              sleep 10
          done
          exit $_exitcode

    triggers:
      - '{project}-gerrit-trigger-cleanup':
          branch: '{branch}'

    publishers:
      # yamllint disable rule:line-length
      - email:
          recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com zhang.jun3g@zte.com.cn
      # yamllint enable rule:line-length
      - email-jenkins-admins-on-failure
# -------------------------------
# trigger macros
# -------------------------------
- trigger:
    name: 'openstack-gerrit-trigger-cleanup'
    triggers:
      - gerrit:
          server-name: 'review.openstack.org'
          escape-quotes: true
          trigger-on:
            # We only run this when the change is merged or
            # abandoned since we don't need the logs anymore
            - change-merged-event
            - change-abandoned-event
          # This is an OPNFV maintenance job. We don't want to provide
          # feedback on Gerrit
          silent: true
          silent-start: true
          projects:
            - project-compare-type: 'PLAIN'
              project-pattern: 'openstack/bifrost'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              disable-strict-forbidden-file-verification: 'true'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: 'doc/**'
                - compare-type: ANT
                  pattern: 'releasenotes/**'
          readable-message: true

- trigger:
    name: 'opnfv-gerrit-trigger-cleanup'
    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            # We only run this when the change is merged or
            # abandoned since we don't need the logs anymore
            - change-merged-event
            - change-abandoned-event
          # This is an OPNFV maintenance job. We don't want to provide
          # feedback on Gerrit
          silent: true
          silent-start: true
          projects:
            - project-compare-type: 'ANT'
              project-pattern: 'releng-xci'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'
              file-paths:
                - compare-type: ANT
                  pattern: 'bifrost/**'
          readable-message: true