name: e2e-prometheus-v2

on:
  workflow_dispatch:
  schedule:
    - cron:  '30 14 * * *' # Every day 14:30

jobs:
  e2e-tests:
    name: E2E Prometheus v2 tests
    runs-on: ubuntu-latest
    if: github.repository == 'prometheus-operator/prometheus-operator'
    strategy:
      # since upgrade test was failing other tests were cancelled, setting this so that other test run
      fail-fast: false
      matrix:
        suite: [alertmanager, prometheus, prometheusAllNS, thanosruler, operatorUpgrade]
        include:
          - suite: alertmanager
            target: test-e2e-alertmanager
          - suite: prometheus
            target: test-e2e-prometheus
          - suite: prometheusAllNS
            target: test-e2e-prometheus-all-namespaces
          - suite: thanosruler
            target: test-e2e-thanos-ruler
          - suite: operatorUpgrade
            target: test-e2e-operator-upgrade
    steps:
    - 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: Build images
      run: |
        export SHELL="/bin/bash"
        make build image
    - name: Start kind cluster
      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: |
        echo "Waiting for all nodes to be ready..."
        kubectl wait --for=condition=Ready nodes --all --timeout=120s
        kubectl get nodes
        echo "Waiting for all pods to be ready..."
        kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s
        kubectl get pods -A
        echo "Cluster information"
        kubectl cluster-info
    - name: 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 }}
        TEST_PROMETHEUS_V2: "true"
      run: |
        make ${{ matrix.target }}

  # Added to summarize the matrix and allow easy branch protection rules setup
  e2e-tests-result:
    name: End-to-End Test Results
    if: github.repository == 'prometheus-operator/prometheus-operator'
    needs:
      - e2e-tests
    runs-on: ubuntu-latest
    steps:
      - name: Mark the job as a success
        if: needs.e2e-tests.result == 'success'
        run: exit 0
      - name: Mark the job as a failure
        if: needs.e2e-tests.result != 'success'
        run: exit 1
