-
Notifications
You must be signed in to change notification settings - Fork 650
61 lines (51 loc) · 2.13 KB
/
nayduck_ci.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
name: CI Nayduck tests
on:
pull_request:
merge_group:
workflow_dispatch:
jobs:
nayduck_tests:
name: "Run Nayduck CI tests"
runs-on: ubuntu-latest
environment: development
timeout-minutes: 60
if: github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch'
steps:
- name: Install JQ json processor
run: sudo apt install jq
- name: Checkout nearcore repository
uses: actions/checkout@v4
- name: Install required python modules
run: |
pip3 install -r ./pytest/requirements.txt
- name: Create nayduck-code file
run: |
echo ${{ secrets.NAYDUCK_CODE }} > ~/.config/nayduck-code
- name: Run Nayduck tests and wait for results
id: nayduck_run
run: |
NEW_TEST=$(python3 ./scripts/nayduck.py --test-file nightly/ci.txt)
RUN_ID="$(echo $NEW_TEST | grep https | sed -E 's|.*\/run\/([0-9]+)|\1|' | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g')"
echo "nayduck_run_id=$RUN_ID" >> $GITHUB_OUTPUT
sleep 10
# wait all the tests to finish
while true; do
TEST_RESULTS=$(curl -s https://nayduck.nearone.org/api/run/$RUN_ID)
TESTS_NOT_READY=$(jq '.tests | .[] | select(.status == "RUNNING" or .status == "PENDING") ' <<< ${TEST_RESULTS} )
if [ -z "$TESTS_NOT_READY" ]; then break; fi
echo "Tests are not ready yet. Sleeping 1 minute..."
sleep 60
done
UNSUCCESSFUL_TESTS=$(jq '.tests | .[] | select(.status != "PASSED" and .status != "IGNORED") ' <<< ${TEST_RESULTS} )
if [ -z "$UNSUCCESSFUL_TESTS" ]; then
echo "Nayduck CI tests passed."
echo "Results available at https://nayduck.nearone.org/#/run/$RUN_ID"
else
echo "CI Nayduck tests are failing https://nayduck.nearone.org/#/run/$RUN_ID."
echo "Fix them before merging"
exit 1
fi
- name: Cleanup Nayduck tests on cancel
if: cancelled()
run: |
python3 ./scripts/nayduck.py -c ${{ steps.nayduck_run.outputs.nayduck_run_id }}