forked from wildfly/wildfly
-
Notifications
You must be signed in to change notification settings - Fork 1
134 lines (121 loc) · 4.41 KB
/
cloud-test-pr-trigger-old.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Cloud Tests Trigger Old
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
REPOSITORY: wildfly-extras/wildfly-cloud-tests
# Branch in the above repository where the remote job will commit its results
STATUS_BRANCH: run-status
# This must be set to a PAT with 'repo' permission for the target repository
TOKEN: ${{ secrets.REMOTE_DISPATCH_TOKEN }}
# Just an identifier for the event - this one triggers the cloud tests
EVENT_TYPE: trigger-cloud-tests-run
# Parameters for polling the $STATUS_BRANCH for the results (they currently take 18-25 minutes)
# Initial wait before polling starts
RESULT_INITIAL_WAIT_SECONDS: 1200
# Time between each poll
RESULT_POLL_WAIT_SECONDS: 300
# Maximum number of polls before we time out
RESULT_MAX_POLL_ATTEMPTS: 10
permissions: {}
jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout run-status branch
if: ${{ env.TOKEN }}
uses: actions/checkout@v4
with:
repository: ${{ env.REPOSITORY }}
ref: ${{ env.STATUS_BRANCH }}
- name: Remote Dispatch
if: ${{ env.TOKEN }}
run: |
echo $GITHUB_REPOSITORY
FILENAME="$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-$GITHUB_RUN_ATTEMPT.json"
echo "FILENAME=$FILENAME" >> $GITHUB_ENV
REFERENCE="refs/pull/${{github.event.number}}/merge"
CLIENT_PAYLOAD=$( jq -n \
--arg tr "$GITHUB_REPOSITORY" \
--arg ref "$REFERENCE" \
--arg sf "$FILENAME" \
'{triggerRepo: $tr, ref: $ref, statusFile: $sf}' )
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"