name: Continuous Integration on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] paths-ignore: - '**.md' - '**.yml' pull_request: branches: [ master ] paths-ignore: - '**.md' - '**.yml' jobs: ci-check: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 with: submodules: 'recursive' - name: Install cppcheck run: | sudo apt-get install -y cppcheck - 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: Upgrade python tools and install platformio run: | python -m pip install --upgrade pip pip install -U platformio - name: Upgrade platformio run: | pio upgrade - name: Check everything run: bin/check-all.sh ci-build: 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: 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 - name: Pull web ui uses: dsaltares/fetch-gh-release-asset@master with: repo: "meshtastic/meshtastic-web" file: "build.tar" target: "build.tar" token: ${{ secrets.GITHUB_TOKEN }} - name: Unpack web ui run: | tar -xf build.tar -C data/static rm build.tar # 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 binaries as an artifact uses: actions/upload-artifact@v2 with: name: built path: release/archive/firmware-*.zip retention-days: 30 - name: Store debugging elf files as an artifact uses: actions/upload-artifact@v2 with: name: debug-elfs path: release/archive/elfs-*.zip retention-days: 7