From fc54f2f63dc448cdc1de5424493265f8494600a0 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 25 Feb 2022 22:13:28 +0000 Subject: [PATCH] Temporary 1.2 legacy PR checks (#1243) * Temporary 1.2 legacy PR checks --- .github/workflows/main_matrix_1_2_temp.yml | 324 +++++++++++++++++++++ 1 file changed, 324 insertions(+) create mode 100644 .github/workflows/main_matrix_1_2_temp.yml diff --git a/.github/workflows/main_matrix_1_2_temp.yml b/.github/workflows/main_matrix_1_2_temp.yml new file mode 100644 index 00000000..3b4f9dfc --- /dev/null +++ b/.github/workflows/main_matrix_1_2_temp.yml @@ -0,0 +1,324 @@ +name: Continuous Integration PR Checks (1.2 Legacy) +on: + # Note: This is different from "pull_request". Need to specify ref when doing checkouts. + pull_request_target: + branches: [ 1.2-legacy ] + paths-ignore: + - '**.md' + - '**.yml' + + workflow_dispatch: + +jobs: + + check: + strategy: + fail-fast: false + matrix: + include: + - board: rak11200 + - board: tlora-v2 + - board: tlora-v1 + - board: tlora_v1_3 + - board: tlora-v2-1-1.6 + - board: tbeam + - board: heltec-v1 + - board: heltec-v2.0 + - board: heltec-v2.1 + - board: tbeam0.7 + - board: meshtastic-diy-v1 + - board: rak4631_5005 + - board: rak4631_19003 + - board: t-echo + + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - 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 ${{ matrix.board }} + run: bin/check-all.sh ${{ matrix.board }} + + build-esp32: + strategy: + fail-fast: false + matrix: + include: + - board: rak11200 + - board: tlora-v2 + - board: tlora-v1 + - board: tlora_v1_3 + - board: tlora-v2-1-1.6 + - board: tbeam + - board: heltec-v1 + - board: heltec-v2.0 + - board: heltec-v2.1 + - board: tbeam0.7 + - board: meshtastic-diy-v1 + + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - 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 + run: | + python -m pip install --upgrade pip + pip install -U platformio meshtastic adafruit-nrfutil + + - 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 + + - name: Build ESP32 + run: bin/build-esp32.sh ${{ matrix.board }} + + - name: Get release version string + run: echo "::set-output name=version::$(./bin/buildinfo.py long)" + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v2 + with: + name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.bin + release/*.elf + retention-days: 90 + + build-nrf52: + strategy: + fail-fast: false + matrix: + include: + - board: rak4631_5005 + - board: rak4631_19003 + - board: t-echo + + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - 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 + run: | + python -m pip install --upgrade pip + pip install -U platformio meshtastic adafruit-nrfutil + + - name: Upgrade platformio + run: | + pio upgrade + + - name: Build NRF52 + run: bin/build-nrf52.sh ${{ matrix.board }} + + - name: Get release version string + run: echo "::set-output name=version::$(./bin/buildinfo.py long)" + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v2 + with: + name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.uf2 + release/*.elf + retention-days: 90 + + build-native: + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - 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 + run: | + python -m pip install --upgrade pip + pip install -U platformio meshtastic adafruit-nrfutil + + - 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 Native + run: bin/build-native.sh + + - name: Get release version string + run: echo "::set-output name=version::$(./bin/buildinfo.py long)" + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v2 + with: + name: firmware-native-${{ steps.version.outputs.version }}.zip + path: | + release/meshtasticd_linux_amd64 + release/device-*.sh + release/device-*.bat + retention-days: 90 + + gather-artifacts: + runs-on: ubuntu-latest + needs: [build-esp32, build-nrf52, build-native] + steps: + + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - uses: actions/download-artifact@v2 + with: + path: ./ + + - name: Get release version string + run: echo "::set-output name=version::$(./bin/buildinfo.py long)" + id: version + + - name: Move files up + run: mv -b -t ./ ./*tbeam-*/spiffs*.bin ./*tbeam-*/system-info.bin ./**/firmware*.bin ./**/*.uf2 ./**/*.elf ./**/meshtasticd_linux_amd64 ./*native*/*device-*.sh ./*native*/*device-*.bat + + - name: Repackage in single firmware zip + uses: actions/upload-artifact@v2 + with: + name: firmware-${{ steps.version.outputs.version }} + path: | + ./*.bin + ./*.uf2 + ./meshtasticd_linux_amd64 + ./device-*.sh + ./device-*.bat + retention-days: 90 + + - uses: actions/download-artifact@v2 + with: + name: firmware-${{ steps.version.outputs.version }} + path: ./output + + # For diagnostics + - name: Show artifacts + run: ls -lR + + - name: Zip firmware + run: zip -j -r ./firmware-${{ steps.version.outputs.version }}.zip ./output + + - name: Repackage in single elfs zip + uses: actions/upload-artifact@v2 + with: + name: debug-elfs-${{ steps.version.outputs.version }}.zip + path: ./*.elf + retention-days: 90 + + - name: Create request artifacts + if: ${{ github.event_name == 'pull_request_target' || github.event_name == 'pull_request' }} + uses: gavv/pull-request-artifacts@v1.0.0 + with: + commit: ${{ (github.event.pull_request_target || github.event.pull_request).head.sha }} + repo-token: ${{ secrets.GITHUB_TOKEN }} + artifacts-branch: artifacts + artifacts: ./firmware-${{ steps.version.outputs.version }}.zip