name: Continuous Integration on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] jobs: # setup: # runs-on: ubuntu-latest # steps: # - name: Startup # run: echo "No action setup currently needed, skipping..." ci-build: # needs: setup runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 with: submodules: 'recursive' - name: Setup Python uses: actions/setup-python@v2 with: python-version: 3.x - name: Cache python libs uses: actions/cache@v1 id: cache-pip # needed in if test with: path: ~/.cache/pip key: ${{ runner.os }}-pip #- name: Install linux apt packages # run: | # sudo apt-get install -y libgpiod-dev - name: Upgrade python tools # We actually want to run this every time # if: steps.cache-pip.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip pip install -U platformio meshtastic adafruit-nrfutil # - name: Cache platformio # uses: actions/cache@v1 # id: cache-platformio # needed in if test # with: # path: ~/.platformio # key: ${{ runner.os }}-platformio - name: Upgrade platformio run: | pio upgrade # We now run integration test before other build steps (to quickly see runtime failures) - name: Build for native run: platformio run -e native - name: Integration test run: | .pio/build/native/program & sleep 20 # 5 seconds was not enough echo "Simulator started, launching python test..." python3 -c 'from meshtastic.test import testSimulator; testSimulator()' # - name: Build for tbeam # run: platformio run -e tbeam # - name: Build for heltec # run: platformio run -e heltec # - name: Build for wisblock RAK4631 # run: platformio run -e rak4631 - name: Build everything run: bin/build-all.sh - name: Store release zip as an artifact uses: actions/upload-artifact@v2 with: name: built path: release/archive/firmware-*.zip retention-days: 30