on: repository_dispatch
name: Prombench Workflow
jobs:
  benchmark_start:
    name: Benchmark Start
    if: github.event.action == 'prombench_start'
    runs-on: ubuntu-latest
    steps:
    - name: Update status to pending
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"pending",  "context": "prombench-status-update-start", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Run make deploy to start test
      id: make_deploy
      uses: docker://prominfra/prombench:master
      env:
        AUTH_FILE: ${{ secrets.PROMBENCH_GKE_AUTH }}
        PROJECT_ID: macro-mile-203600
        CLUSTER_NAME: prombench
        ZONE: europe-west3-a
        DOMAIN_NAME: prombench.prometheus.io
        TEST_INFRA_REPO: https://github.com/prometheus/test-infra.git
        GITHUB_ORG: prometheus
        GITHUB_REPO: prometheus
        PR_NUMBER: ${{ github.event.client_payload.PR_NUMBER }}
        RELEASE: ${{ github.event.client_payload.RELEASE }}
      with:
        args: >-
          until make all_nodepools_deleted; do echo "waiting for nodepools to be deleted"; sleep 10; done;
          make deploy;
    - name: Update status to failure
      if: failure()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"failure",  "context": "prombench-status-update-start", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Update status to success
      if: success()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"success",  "context": "prombench-status-update-start", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
  #############################
  # Jobs for stopping benchmark
  #############################
  benchmark_cancel:
    name: Benchmark Cancel
    if: github.event.action == 'prombench_stop'
    runs-on: ubuntu-latest
    steps:
    - name: Update status to pending
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"pending",  "context": "prombench-status-update-cancel", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Run make clean to stop test
      id: make_clean
      uses: docker://prominfra/prombench:master
      env:
        AUTH_FILE: ${{ secrets.PROMBENCH_GKE_AUTH }}
        PROJECT_ID: macro-mile-203600
        CLUSTER_NAME: prombench
        ZONE: europe-west3-a
        TEST_INFRA_REPO: https://github.com/prometheus/test-infra.git
        PR_NUMBER: ${{ github.event.client_payload.PR_NUMBER }}
      with:
        args: >-
          until make all_nodepools_running; do echo "waiting for nodepools to be created"; sleep 10; done;
          make clean;
    - name: Update status to failure
      if: failure()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"failure",  "context": "prombench-status-update-cancel", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Update status to success
      if: success()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"success",  "context": "prombench-status-update-cancel", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
  ###############################
  # Jobs for restarting benchmark
  ###############################
  benchmark_restart:
    name: Benchmark Restart
    if: github.event.action == 'prombench_restart'
    runs-on: ubuntu-latest
    steps:
    - name: Update status to pending
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"pending",  "context": "prombench-status-update-restart", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Run make clean then make deploy to restart test
      id: make_restart
      uses: docker://prominfra/prombench:master
      env:
        AUTH_FILE: ${{ secrets.PROMBENCH_GKE_AUTH }}
        PROJECT_ID: macro-mile-203600
        CLUSTER_NAME: prombench
        ZONE: europe-west3-a
        DOMAIN_NAME: prombench.prometheus.io
        TEST_INFRA_REPO: https://github.com/prometheus/test-infra.git
        GITHUB_ORG: prometheus
        GITHUB_REPO: prometheus
        PR_NUMBER: ${{ github.event.client_payload.PR_NUMBER }}
        RELEASE: ${{ github.event.client_payload.RELEASE }}
      with:
        args: >-
          until make all_nodepools_running; do echo "waiting for nodepools to be created"; sleep 10; done;
          make clean;
          until make all_nodepools_deleted; do echo "waiting for nodepools to be deleted"; sleep 10; done;
          make deploy;
    - name: Update status to failure
      if: failure()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"failure",  "context": "prombench-status-update-restart", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Update status to success
      if: success()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"success",  "context": "prombench-status-update-restart", "target_url": "https://github.com/'$GITHUB_REPOSITORY'/actions/runs/'$GITHUB_RUN_ID'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"