From 1fac9ee1f29d529072525b65d6e64cd38f9a60bf Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 19 Nov 2022 19:23:35 -0600 Subject: [PATCH] More reusable workflows --- .../{build-base => setup-base}/action.yml | 22 +-- .github/workflows/build_esp32.yml | 10 +- .github/workflows/build_nrf52.yml | 33 ++++ .github/workflows/build_rpi2040.yml | 32 ++++ .github/workflows/main_matrix.yml | 166 ++---------------- 5 files changed, 95 insertions(+), 168 deletions(-) rename .github/actions/{build-base => setup-base}/action.yml (68%) create mode 100644 .github/workflows/build_nrf52.yml create mode 100644 .github/workflows/build_rpi2040.yml diff --git a/.github/actions/build-base/action.yml b/.github/actions/setup-base/action.yml similarity index 68% rename from .github/actions/build-base/action.yml rename to .github/actions/setup-base/action.yml index 5c57e506a..1791f80ae 100644 --- a/.github/actions/build-base/action.yml +++ b/.github/actions/setup-base/action.yml @@ -1,10 +1,5 @@ -name: 'Build Base Composite Action' -description: 'Base build action for Meshtastic Platform IO steps' - -outputs: - version: - description: "Release version string" - value: ${{ steps.outputs.version }} +name: 'Setup Build Base Composite Action' +description: 'Base build actions for Meshtastic Platform IO steps' runs: using: "composite" @@ -15,6 +10,11 @@ runs: submodules: "recursive" ref: ${{github.event.pull_request.head.ref}} repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Install cppcheck + shell: bash + run: | + sudo apt-get install -y cppcheck - name: Setup Python uses: actions/setup-python@v4 @@ -33,13 +33,9 @@ runs: run: | python -m pip install --upgrade pip pip install -U platformio adafruit-nrfutil + pip install -U meshtastic --pre - name: Upgrade platformio shell: bash run: | - pio upgrade - - - name: Get release version string - shell: bash - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version \ No newline at end of file + pio upgrade \ No newline at end of file diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml index ff7590ada..6d5dd9863 100644 --- a/.github/workflows/build_esp32.yml +++ b/.github/workflows/build_esp32.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v3 - name: Build base id: base - uses: ./.github/actions/build-base + uses: ./.github/actions/setup-base - name: Pull web ui uses: dsaltares/fetch-gh-release-asset@master @@ -39,12 +39,16 @@ jobs: file: "firmware.bin" target: "release/bleota.bin" token: ${{ secrets.GITHUB_TOKEN }} + + - name: Get release version string + shell: bash + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v3 with: - name: firmware-${{ inputs.board }}-${{ steps.base.outputs.version }}.zip + name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip path: | release/*.bin release/*.elf - retention-days: 30 diff --git a/.github/workflows/build_nrf52.yml b/.github/workflows/build_nrf52.yml new file mode 100644 index 000000000..da279a5de --- /dev/null +++ b/.github/workflows/build_nrf52.yml @@ -0,0 +1,33 @@ +name: Build NRF52 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-nrf52: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base + + - name: Build NRF52 + run: bin/build-nrf52.sh ${{ matrix.board }} + + - name: Get release version string + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v3 + with: + name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.uf2 + release/*.elf + release/*.zip \ No newline at end of file diff --git a/.github/workflows/build_rpi2040.yml b/.github/workflows/build_rpi2040.yml new file mode 100644 index 000000000..608918b95 --- /dev/null +++ b/.github/workflows/build_rpi2040.yml @@ -0,0 +1,32 @@ +name: Build RPI2040 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-rpi2040: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base + + - name: Build Raspberry Pi 2040 + run: ./bin/build-rpi2040.sh ${{ matrix.board }} + + - name: Get release version string + run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v3 + with: + name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.uf2 + release/*.elf \ No newline at end of file diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index b27b8bfab..496cb2a53 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -35,37 +35,10 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - 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@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - 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 + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base - name: Check ${{ matrix.board }} run: bin/check-all.sh ${{ matrix.board }} @@ -109,53 +82,9 @@ jobs: - board: t-echo - board: pca10059_diy_eink - board: feather_diy - - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - 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@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - 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 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 "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version - - - name: Store binaries as an artifact - uses: actions/upload-artifact@v3 - with: - name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip - path: | - release/*.uf2 - release/*.elf - release/*.zip - retention-days: 30 + uses: ./.github/workflows/build_nrf52.yml + with: + board: ${{ matrix.board }} build-rpi2040: strategy: @@ -164,84 +93,17 @@ jobs: matrix: include: - board: pico - - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - 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@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - 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 adafruit-nrfutil - - - name: Upgrade platformio - run: | - pio upgrade - - - name: Build Raspberry Pi 2040 - run: ./bin/build-rpi2040.sh ${{ matrix.board }} - - - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT - id: version - - - name: Store binaries as an artifact - uses: actions/upload-artifact@v3 - with: - name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip - path: | - release/*.uf2 - release/*.elf - retention-days: 30 + uses: ./.github/workflows/build_rpi2040.yml + with: + board: ${{ matrix.board }} build-native: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - 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@v4 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v3 - 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 adafruit-nrfutil - pip install -U meshtastic --pre - - - name: Upgrade platformio - run: | - pio upgrade + - uses: actions/checkout@v3 + - name: Build base + id: base + uses: ./.github/actions/setup-base # We now run integration test before other build steps (to quickly see runtime failures) - name: Build for native