Skip to content

Commit

Permalink
Add trigger and reporter for new cloud tests job
Browse files Browse the repository at this point in the history
  • Loading branch information
kabir committed Sep 5, 2024
1 parent 56270bd commit bad02d2
Show file tree
Hide file tree
Showing 2 changed files with 157 additions and 0 deletions.
39 changes: 39 additions & 0 deletions .github/workflows/cloud-test-pr-reporter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Report Cloud Test Status
on:
repository_dispatch:
types: [report-cloud-tests-pr-progress]
jobs:
reporter:
permissions:
checks: write
statuses: write
runs-on: ubuntu-latest
steps:
- name: Output
env:
#MESSAGE: ${{ github.event.client_payload.message }}
MESSAGE: ${{ toJSON(github.event.client_payload) }}
run: echo $MESSAGE

- name: Remote Dispatch to report job in progress
env:

- name: Report status
env:
DESC: ${{ github.event.client_payload.desc }}
PR_HEAD_SHA: ${{ github.event.client_payload.prHeadSha }}
RUN_URL: ${{ github.event.client_payload.runUrl }}
STATE: ${{ github.event.client_payload.state }}
run: |
JSON_STRING=$(jq -c -n \
--arg state "$STATE" \
--arg tgt "$RUN_URL" \
--arg desc "$DESC" \
'{state: $state, target_url: $tgt, description: $desc, context: "Build and Test Workflow Run/build (workflow_run)"}' )
curl -L -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer ${GH_TOKEN}"\
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/statuses/${ PR_HEAD_SHA } \
-d "${JSON_STRING}"
118 changes: 118 additions & 0 deletions .github/workflows/cloud-test-pr-trigger-new.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Cloud Tests Trigger
on:
pull_request_target:
branches:
- main
paths-ignore:
- ".mvn/**"
- "docs/**"
- ".github/workflows/build-manual.yml"
- ".github/workflows/shared-wildfly-build.yml"
- '.gitattributes'
- '.gitignore'
- '.gitleaks.toml'
- 'build.bat'
- 'build.sh'
- "CODE_OF_CONDUCT.md"
- "CONTRIBUTING.md"
- "integration-tests.bat"
- "integration-tests.sh"
- "LICENSE.txt"
- "mvnw"
- "mvnw.cmd"
- "README.md"
- "SECURITY.md"
- "**/README.md"
- "**/README.adoc"

# Only run the latest job
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
env:
# This must be set to a PAT with 'repo' permission for the target repository
TOKEN: ${{ secrets.CLOUD_TESTS_REMOTE_DISPATCH_TOKEN }}
# Just an identifier for the event - this one triggers the cloud tests
EVENT_TYPE: report-cloud-tests-pr-progress

permissions: {}
jobs:
run-tests:
runs-on: ubuntu-latest
steps:

- name: Remote Dispatch
env:
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
if: ${{ env.TOKEN }}
run: |
echo $GITHUB_REPOSITORY
echo "FILENAME=$FILENAME" >> $GITHUB_ENV
CLIENT_PAYLOAD=$( jq -n \
--arg tr "$GITHUB_REPOSITORY" \
--arg githubSha "$GITHUB_SHA" \
--arg prHeadSha "$PR_HEAD_SHA" \
'{triggerRepo: $tr, githubSha: $githubSha, prHeadSha: $prHeadSha}' )
echo "CLIENT_PAYLOAD: $CLIENT_PAYLOAD"
resp=$(curl -X POST -s "https://api.github.com/repos/${REPOSITORY}/dispatches" \
-H "Accept: application/vnd.github.v3+json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d "{\"event_type\": \"${EVENT_TYPE}\", \"client_payload\": ${CLIENT_PAYLOAD} }")
if [ -z "$resp" ]
then
sleep 2
else
echo "Workflow failed to trigger"
echo "$resp"
exit 1
fi
# - name: Wait for remote job completion
# if: ${{ env.TOKEN }}
# run: |
# echo "Waiting/polling for remote test execution to complete"
# echo "Sleeping $RESULT_INITIAL_WAIT_SECONDS seconds before polling"
# sleep $RESULT_INITIAL_WAIT_SECONDS
# i=0
# while [[ "${RESULT}" != '0' ]]
# do
# echo "debug - fetching"
# git fetch origin
# echo "debug - resetting"
# git reset --hard origin/$STATUS_BRANCH
#
# echo "debug - is $FILENAME there?"
# # Check file is there and break if it is
# if [ -f "$FILENAME" ]; then
# echo "debug - file is there"
# break
# fi
#
#
# echo "debug - incrementing counter"
# i=$((i+1))
# echo "debug - checking max poll attempts"
# if [ $i -eq $RESULT_MAX_POLL_ATTEMPTS ]; then
# 1>&2 echo "Timeout receiving the results"
# exit 1
# fi
# echo "Sleeping $RESULT_POLL_WAIT_SECONDS seconds before polling again"
# sleep $RESULT_POLL_WAIT_SECONDS
# done
# # cat $FILENAME
# STATUS="$(jq -r .status $FILENAME)"
# MESSAGE="$(jq -r .message $FILENAME)"
#
# # echo "Status: $STATUS"
#
# if [[ "${STATUS}" == "failed" ]]; then
# echo -e "\e[31m${MESSAGE}\e[0m"
# exit 1
# fi
#
# echo -e "\e[32m${MESSAGE}\e[0m"

0 comments on commit bad02d2

Please sign in to comment.