name: Test Prometheus upgrades
on:
  workflow_dispatch:
  schedule:
    - cron:  '37 15 * * *' # Every day 15:37

jobs:
  upgrade-prometheus:
    name: Upgrade Prometheus
    runs-on: ubuntu-latest
    if: github.repository == 'prometheus-operator/prometheus-operator'
    steps:
    - name: Reclaim disk space
      run: |
        docker image prune --force --all
        sudo rm -rf /usr/share/dotnet
        sudo rm -rf /usr/local/lib/android
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: |
        cat ".github/env" >> "$GITHUB_ENV"
        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - name: Start KinD
      uses: helm/kind-action@v1.12.0
      with:
        version: ${{ env.kind-version }}
        node_image: ${{ env.kind-image }}
        wait: 300s
        config: ./test/e2e/kind-conf.yaml
        cluster_name: e2e
    - name: Wait for cluster to finish bootstraping
      run: |
        kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s
        kubectl cluster-info
        kubectl get pods -A
    - name: Build and load images
      run: |
        make test-e2e-images
        kubectl apply -f scripts/kind-rbac.yaml
    - name: Run tests
      env:
        E2E_DIAGNOSTIC_DIRECTORY: ${{ env.E2E_DIAGNOSTIC_DIRECTORY }}
      run: |
        make test-e2e-prometheus-upgrade
    - name: Upload diagnostics artifact
      if: ${{ failure() }}
      uses: actions/upload-artifact@v4
      with:
        name: cluster-state
        path: ${{ env.E2E_DIAGNOSTIC_DIRECTORY }}
        retention-days: 15
