Skip to content

CI Nayduck tests #977

CI Nayduck tests

CI Nayduck tests #977

Workflow file for this run

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 }}