Skip to content

Crazy Stab Sanity 🗡️ #42

Crazy Stab Sanity 🗡️

Crazy Stab Sanity 🗡️ #42

name: Crazy Stab Sanity 🗡️
# Controls when the action will run.
on:
workflow_dispatch:
schedule:
- cron: '0 6 * * *'
jobs:
#TODO add flashing of crazyflies
setup_mac:
runs-on: [self-hosted, macOS]
steps:
- name: Check out sources
uses: actions/checkout@v4
- name: Download latest firmware files
with:
repo: bitcraze/crazyflie-release
workflow: nightly.yml
uses: dawidd6/action-download-artifact@v4
sanity_testsuite_on_mac:
needs: [setup_mac]
runs-on: [self-hosted, macOS]
strategy:
matrix:
python_version: ["3.9", "3.10", "3.11"]
fail-fast: false
env:
TEST_FILE: Mac__sanity_test_job-${{github.run_number}}-${{ matrix.python_version }}
CRAZY_SITE: crazylab-mac
PYTHON_VERSION: ${{ matrix.python_version }}
timeout-minutes: 120
steps:
- name: Setup python environment
run: |
$(brew --prefix)/bin/python${PYTHON_VERSION} -m venv venv
source venv/bin/activate
- name: Install pytest
run: venv/bin/pip install pytest
- name: Install Crazyflie python library
run: venv/bin/pip install git+https://github.com/bitcraze/crazyflie-lib-python.git@master
- name: Install requirements
run: |
venv/bin/pip install -r requirements.txt
- name: Upgrade devices to latest firmware
run: venv/bin/python management/program.py --file cf2-nightly/firmware-cf2-nightly.zip --retries 3
- name: Run test suite
run: venv/bin/python -m pytest --verbose --html=${{env.TEST_FILE}}.html --junit-xml ${{env.TEST_FILE}}.xml -m sanity tests/QA
- name: Upload test file
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{env.TEST_FILE}}_results
if-no-files-found: warn
path: |
${{env.TEST_FILE}}.html
${{env.TEST_FILE}}.xml
assets/style.css
- name: Pretty print test results
if: always()
uses: pmeier/pytest-results-action@main
with:
path: ${{env.TEST_FILE}}.xml
summary: true
title: Test results
sanity_testsuite_on_linux:
if: always()
needs: [sanity_testsuite_on_mac]
runs-on: [self-hosted, linux]
strategy:
matrix:
python_version: ["3.8","3.9", "3.10", "3.11"]
fail-fast: false
env:
TEST_FILE: Linux_sanity_test_job-${{github.run_number}}-${{ matrix.python_version }}
CRAZY_SITE: crazylab-malmö
CRAZY_DEVICE: cf21_stock
PYTHON_VERSION: ${{ matrix.python_version }}
timeout-minutes: 120
container:
image: python:${{ matrix.python_version }}-buster
options: --privileged
steps:
- name: Upgrade pip
run: |
pip3 install --upgrade pip
- name: Install libusb
run: |
apt update
apt install -y libusb-1.0-0 uhubctl
- name: Install pytest
run: pip3 install pytest
- name: Install Crazyflie python library
run: pip3 install git+https://github.com/bitcraze/crazyflie-lib-python.git@master
- name: Check out sources
uses: actions/checkout@v4
- name: Install requirements
run: pip3 install -r requirements.txt
- name: Download latest firmware files
with:
repo: bitcraze/crazyflie-release
workflow: nightly.yml
uses: dawidd6/action-download-artifact@v4
- name: Reset power to all devices
run: python3 management/usb-power-reset.py -a reset
- name: Upgrade devices to latest firmware
run: python3 management/program.py --file cf2-nightly/firmware-cf2-nightly.zip --retries 3
- name: Run test suite
run: pytest --verbose --html=${{env.TEST_FILE}}.html --junit-xml ${{env.TEST_FILE}}.xml -m sanity tests/QA
- name: Upload test file
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{env.TEST_FILE}}_results
if-no-files-found: warn
path: |
${{env.TEST_FILE}}.html
${{env.TEST_FILE}}.xml
assets/style.css
- name: Pretty print test results
if: always()
uses: pmeier/pytest-results-action@main
with:
path: ${{env.TEST_FILE}}.xml
summary: true
title: Test results