From 8f0257236c394684a8274843c4daa9c81be8c84a Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Fri, 19 Jul 2024 11:13:21 +0200 Subject: [PATCH] [WIP] Run Integration Tests on PR --- .github/workflows/integration-tests.yml | 54 ++++++++++++++++++++++++ .github/workflows/test-check.yml | 55 +++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 .github/workflows/integration-tests.yml create mode 100644 .github/workflows/test-check.yml diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml new file mode 100644 index 00000000..1adf468f --- /dev/null +++ b/.github/workflows/integration-tests.yml @@ -0,0 +1,54 @@ +name: Integration Tests +on: + repository_dispatch: + types: [integration-check] +jobs: + myEvent: + runs-on: ubuntu-latest + steps: + #################################################### + # Update the status to show that the queued message + # was received and is being processed + #################################################### + - name: Acknowledge Request + env: + GH_TOKEN: ${{ github.token }} + run: | + gh api -X PATCH -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + -f 'status=in_progress' \ + -f 'output[title]=Integration Tests' \ + -f 'output[summary]=Running Integration Tests for Py SDK' \ + /repos/${{ github.repository }}/check-runs/${{ github.event.client_payload.checkRunId }} + + #################################################### + # Actually, we'll just sleep to simulate some work + #################################################### + - name: Processing + run: sleep 10 + + ##################################################### + # Send a final message to complete the run and + # provide any final updates. Doing this one in JSON + # to make it more readable. This approach can also + # be used to get total control over the serialized + # data types (for example, integers). + ##################################################### + - name: Complete Check + env: + GH_TOKEN: ${{ github.token }} + run: | + gh api -X PATCH -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /repos/${{ github.repository }}/check-runs/${{ github.event.client_payload.checkRunId }} \ + --input - <<- EOF + { + "conclusion": "success", + "details_url": "TODO", + "output": { + "title": "Integration Tests", + "summary": "**Summary**: The run completed.", + "text": "Everything worked as expected." + } + } + EOF \ No newline at end of file diff --git a/.github/workflows/test-check.yml b/.github/workflows/test-check.yml new file mode 100644 index 00000000..c25cdec6 --- /dev/null +++ b/.github/workflows/test-check.yml @@ -0,0 +1,55 @@ +name: Integration Tests Validation + +# To trigger the check +on: + pull_request: + branches: [ "main" ] + +jobs: + start-check: + runs-on: ubuntu-latest + permissions: + checks: write # Permission to create a Check Run + contents: write # Permission to write a repository_dispatch requests + steps: + - name: Integration Tests Check + id: testcheck # An ID to allow the step to be referenced + env: + GH_TOKEN: ${{ github.token }} # Expose the token for GH CLI + run: | + ########################################################## + # Create a Check Run and indicate that it is being queued + # Use --jq to return the ID + ########################################################## + + CHECKID=$(gh api -X POST -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + -f name='Integration Tests Check' \ + -f head_sha='${{ github.event.pull_request.head.sha }}' \ + -f status='queued' \ + -f 'output[title]=Integration Tests' \ + -f 'output[summary]=Pending Integration Tests for Py SDK' \ + --jq '.id' \ + /repos/${{ github.repository }}/check-runs) + + #################################################### + # Put the ID into a step variable + #################################################### + + echo "checkId=$CHECKID" >> $GITHUB_OUTPUT + + - name: Trigger Integration Tests + env: + GH_TOKEN: ${{ github.token }} + run: | + ########################################################## + # Create a repository_dispatch event of type my-check + # Send the SHA and the Check Run ID in the client_payload + ########################################################## + + gh api -X POST -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + -f 'event_type=integration-check' \ + -f 'client_payload[checkRunId]=${{ steps.testcheck.outputs.checkId }}' \ + -f 'client_payload[sha]=${{ github.sha }}' \ + /repos/${{ github.repository }}/dispatches \ No newline at end of file