on:
  repository_dispatch:
    types: [funcbench_start]
name: Funcbench Workflow
permissions:
  contents: read

jobs:
  run_funcbench:
    name: Running funcbench
    if: github.event.action == 'funcbench_start'
    runs-on: ubuntu-latest
    env:
      AUTH_FILE: ${{ secrets.TEST_INFRA_PROVIDER_AUTH }}
      BRANCH: ${{ github.event.client_payload.BRANCH }}
      BENCH_FUNC_REGEX: ${{ github.event.client_payload.BENCH_FUNC_REGEX }}
      PACKAGE_PATH: ${{ github.event.client_payload.PACKAGE_PATH }}
      GITHUB_TOKEN: ${{ secrets.PROMBOT_GITHUB_TOKEN }}
      GITHUB_ORG: prometheus
      GITHUB_REPO: prometheus
      GITHUB_STATUS_TARGET_URL: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
      LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      GKE_PROJECT_ID: macro-mile-203600
      PR_NUMBER: ${{ github.event.client_payload.PR_NUMBER }}
      PROVIDER: gke
      ZONE: europe-west3-a
    steps:
      - name: Update status to pending
        run: >-
          curl -i -X POST
          -H "Authorization: Bearer $GITHUB_TOKEN"
          -H "Content-Type: application/json"
          --data '{"state":"pending","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
          "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
      - name: Prepare nodepool
        uses: docker://prominfra/funcbench:master
        with:
          entrypoint: "docker_entrypoint"
          args: make deploy
      - name: Delete all resources
        if: always()
        uses: docker://prominfra/funcbench:master
        with:
          entrypoint: "docker_entrypoint"
          args: make clean
      - name: Update status to failure
        if: failure()
        run: >-
          curl -i -X POST
          -H "Authorization: Bearer $GITHUB_TOKEN"
          -H "Content-Type: application/json"
          --data '{"state":"failure","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
          "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
      - name: Update status to success
        if: success()
        run: >-
          curl -i -X POST
          -H "Authorization: Bearer $GITHUB_TOKEN"
          -H "Content-Type: application/json"
          --data '{"state":"success","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
          "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
