diff --git a/.github/workflows/cloud-test-pr-reporter.yml b/.github/workflows/cloud-test-pr-reporter.yml new file mode 100644 index 000000000000..37ed4c6b673a --- /dev/null +++ b/.github/workflows/cloud-test-pr-reporter.yml @@ -0,0 +1,53 @@ +name: Report Cloud Test Status +on: + repository_dispatch: + types: [report-cloud-tests-pr-pending, report-cloud-tests-pr-complete] +env: + DESC: ${{ github.event.client_payload.desc }} + GH_TOKEN: ${{ github.token }} + PR_HEAD_SHA: ${{ github.event.client_payload.prHeadSha }} + RUN_URL: ${{ github.event.client_payload.runUrl }} + STATE: ${{ github.event.client_payload.state }} + +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: Report status + run: | + JSON_STRING=$(jq -c -n \ + --arg state "$STATE" \ + --arg tgt "$RUN_URL" \ + --arg desc "$DESC" \ + '{state: $state, target_url: $tgt, description: $desc, context: "Cloud Tests Remote Run"}' ) + + set -x + + resp=$(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}") + + ret=$? + + set +x + + if [ $ret -eq 0 ]; then + sleep 2 + else + echo "Workflow failed to trigger" + echo "$resp" + exit 1 + fi + diff --git a/.github/workflows/cloud-test-pr-trigger-new.yml b/.github/workflows/cloud-test-pr-trigger-new.yml new file mode 100644 index 000000000000..2e797d0b0afa --- /dev/null +++ b/.github/workflows/cloud-test-pr-trigger-new.yml @@ -0,0 +1,127 @@ +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: + # Repository where the cloud tests will be run + # TODO Update this to wildfly-extras!!!!! + #REPOSITORY: wildfly-extras/wildfly-cloud-tests + REPOSITORY: kabir/wildfly-cloud-tests + # 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: trigger-cloud-tests-pr + +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" + + set -x + + 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} }") + + set +x + + 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"