name: Upgrade to latest versions

on:
  workflow_dispatch:
  schedule:
    - cron: '37 7 * * 1'
env:
  golang-version: '1.18'
jobs:
  versions:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        branch:
          - 'release-0.8'
          - 'release-0.9'
          - 'release-0.10'
          - 'release-0.11'
          - 'main'
    steps:
    - uses: actions/checkout@v3
      with:
        ref: ${{ matrix.branch }}
    - uses: actions/setup-go@v3
      with:
        go-version: ${{ env.golang-version }}
    - name: Upgrade versions
      id: versions
      run: |
        export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
        # Write to temporary file to make update atomic
        scripts/generate-versions.sh > /tmp/versions.json
        mv /tmp/versions.json jsonnet/kube-prometheus/versions.json
        # Get the links to the changelogs of the updated versions and make them
        # available to the reviewers
        echo ::set-output name=new_changelogs::$(scripts/get-new-changelogs.sh)
      if: matrix.branch == 'main'
    - name: Update jsonnet dependencies
      run: |
        make update
        make generate

        # Reset jsonnetfile.lock.json if no dependencies were updated
        changedFiles=$(git diff --name-only | grep -v 'jsonnetfile.lock.json' | wc -l)
        if [[ "$changedFiles" -eq 0 ]]; then
          git checkout -- jsonnetfile.lock.json;
        fi
    - name: Create Pull Request
      uses: peter-evans/create-pull-request@v4
      with:
        commit-message: "[bot] [${{ matrix.branch }}] Automated version update"
        title: "[bot] [${{ matrix.branch }}] Automated version update"
        body: |
          ## Description

          This is an automated version and jsonnet dependencies update performed from CI.

          Please review the following changelogs to make sure that we don't miss any important
          changes before merging this PR.

          ${{ steps.versions.outputs.new_changelogs }}

          Configuration of the workflow is located in `.github/workflows/versions.yaml`.

          ## Type of change

          - [x] `NONE` (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.)

          ## Changelog entry

          ```release-note

          ```
        team-reviewers: kube-prometheus-reviewers
        committer: Prometheus Operator Bot <prom-op-bot@users.noreply.github.com>
        author: Prometheus Operator Bot <prom-op-bot@users.noreply.github.com>
        branch: automated-updates-${{ matrix.branch }}
        delete-branch: true
        # GITHUB_TOKEN cannot be used as it won't trigger CI in a created PR
        # More in https://github.com/peter-evans/create-pull-request/issues/155
        token: ${{ secrets.PROM_OP_BOT_PAT }}
