format_version: 3
pipelines:
  BCI.RelPkgs:
    group: BCI
    lock_behavior: unlockWhenFinished
    timer:
      spec: 0 10 * ? * *
      only_on_changes: false
    materials:
      git:
        git: https://github.com/openSUSE/openSUSE-release-tools.git
    environment_variables:
      OSC_CONFIG: /home/go/config/oscrc-staging-bot
    stages:
    - Create.Release.Packages:
        approval: manual
        resources:
        - repo-checker
        tasks:
        - script: ./pkglistgen.py -A https://api.opensuse.org update_and_solve -p devel:BCI -s target --only-release-packages --force

  Pkglistgen.BCI:
    group: BCI
    lock_behavior: unlockWhenFinished
    environment_variables:
      OSC_CONFIG: /home/go/config/oscrc-staging-bot
    timer:
      spec: 0 10 * ? * *
      only_on_changes: false
    materials:
      git:
        git: https://github.com/openSUSE/openSUSE-release-tools.git
    stages:
    - pkglistgen:
        approval:
          type: manual
        jobs:
          BCI_target:
            resources:
            - repo-checker
            tasks:
            - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p devel:BCI -s target

<% ['SP5', 'SP6', 'SP7'].each do |sp| %>
  SLE_BCI_15<%= sp %>.RelPkgs:
    group: BCI
    lock_behavior: unlockWhenFinished
    timer:
      spec: 0 10 * ? * *
      only_on_changes: false
    materials:
      git:
        git: https://github.com/openSUSE/openSUSE-release-tools.git
    environment_variables:
      OSC_CONFIG: /home/go/config/oscrc-staging-bot
    stages:
    - Create.Release.Packages:
        approval: manual
        resources:
        - repo-checker
        tasks:
        - script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p SUSE:SLE-15-<%= sp %>:Update:BCI -s target --only-release-packages --force

  Pkglistgen.SLE_BCI_15<%= sp %>:
    group: BCI
    lock_behavior: unlockWhenFinished
    timer:
      spec: 0 10 * ? * *
      only_on_changes: false
    materials:
      repos:
        git: git://botmaster.suse.de/suse-repos.git
        auto_update: true
        destination: repos
        whitelist:
          - SUSE:SLE-15-<%= sp %>:Update_-_standard.yaml
      scripts:
        auto_update: true
        git: https://github.com/openSUSE/openSUSE-release-tools.git
        whitelist:
          - DO_NOT_TRIGGER
        destination: scripts
    environment_variables:
      OSC_CONFIG: /home/go/config/oscrc-staging-bot
    stages:
    - pkglistgen:
        approval:
          type: manual
        jobs:
          BCI_target:
            resources:
            - repo-checker
            tasks:
            - script: ./scripts/pkglistgen.py -d -A https://api.suse.de update_and_solve -p SUSE:SLE-15-<%= sp %>:Update:BCI -s target
    - Expect.Images.To.Finish:
        resources:
        - staging-bot
        tasks:
        - script: |
            export PYTHONPATH=scripts
            ./scripts/gocd/verify-repo-built-successful.py -A https://api.suse.de -p  SUSE:SLE-15-<%= sp %>:Update:BCI -r images

    - Release.Images.to.Product:
        approval: manual
        roles:
        - BCI
        environment_variables:
          OSC_CONFIG: /home/go/config/oscrc-totest-manager
          BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
        resources:
        - staging-bot
        tasks:
        # can't use osc command due to https://github.com/openSUSE/osc/issues/1194
        - script: |-
            SPRJ=SUSE:SLE-15-<%= sp %>:Update:BCI
            for arch in aarch64 ppc64le s390x x86_64 ; do
              PKG="000product:SLE_BCI-ftp-POOL-$arch"
              PRJ="SUSE:Products:SLE-BCI:15-<%= sp %>:$arch"
              curl -X POST -H "Authorization: Token $BCI_TOKEN" "https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images"
            done
            for arch in aarch64 ppc64le s390x x86_64 ; do
              sleep 600
              while (osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep -v 'code="published" state="published">'); do
                  echo PENDING
                  sleep 600
              done
              osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED
            done

  SLE_BCI_15<%= sp %>.RepoPublisher:
    group: BCI
    lock_behavior: unlockWhenFinished
    timer:
      spec: 0 23 * ? * *
      only_on_changes: false
    materials:
      git:
        git: https://github.com/openSUSE/openSUSE-release-tools.git
        destination: scripts
    environment_variables:
        OSC_CONFIG: /home/go/config/oscrc-totest-manager
        BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
    stages:
    - Run:
        approval: manual
        resources:
        - staging-bot
        tasks:
        - script: |
            export PYTHONPATH=scripts
            ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-<%= sp %>
<% end %>
