diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml new file mode 100644 index 000000000..7b618604b --- /dev/null +++ b/.github/workflows/build_esp32.yml @@ -0,0 +1,77 @@ +name: Build ESP32 + +on: + workflow_call: + inputs: + board: + required: true + type: string + +jobs: + build-esp32: + 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: Pull web ui + uses: dsaltares/fetch-gh-release-asset@master + with: + repo: "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 ${{ inputs.board }} + + - name: Pull OTA Firmware + uses: dsaltares/fetch-gh-release-asset@master + with: + repo: "meshtastic/firmware-ota" + file: "firmware.bin" + target: "release/bleota.bin" + token: ${{ secrets.GITHUB_TOKEN }} + + - 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-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + path: | + release/*.bin + release/*.elf + retention-days: 30 \ No newline at end of file diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index d9d6634ff..b461d9d26 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -97,70 +97,9 @@ 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: 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: Pull web ui - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: "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: Pull OTA Firmware - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: "meshtastic/firmware-ota" - file: "firmware.bin" - target: "release/bleota.bin" - token: ${{ secrets.GITHUB_TOKEN }} - - - 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/*.bin - release/*.elf - retention-days: 30 + uses: ./.github/workflows/build_esp32.yml + with: + board: ${{ matrix.board }} build-nrf52: strategy: @@ -333,6 +272,23 @@ jobs: release/device-*.sh release/device-*.bat retention-days: 30 + + - name: Docker login + uses: docker/login-action@v2 + with: + username: meshtastic + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Docker setup + uses: docker/setup-buildx-action@v2 + + - name: Docker build and push + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + push: true + tags: meshtastic/device:simulator after-checks: runs-on: ubuntu-latest diff --git a/bin/build-esp32.sh b/bin/build-esp32.sh index 12961864f..5a2044a35 100755 --- a/bin/build-esp32.sh +++ b/bin/build-esp32.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-native.sh b/bin/build-native.sh index b620a01d8..8bc262860 100755 --- a/bin/build-native.sh +++ b/bin/build-native.sh @@ -12,9 +12,6 @@ rm -f $OUTDIR/firmware* mkdir -p $OUTDIR/ rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-nrf52.sh b/bin/build-nrf52.sh index 6c723e28f..a9980f486 100755 --- a/bin/build-nrf52.sh +++ b/bin/build-nrf52.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update diff --git a/bin/build-rpi2040.sh b/bin/build-rpi2040.sh index 670f570f1..fe0725085 100755 --- a/bin/build-rpi2040.sh +++ b/bin/build-rpi2040.sh @@ -10,9 +10,6 @@ OUTDIR=release/ rm -f $OUTDIR/firmware* rm -r $OUTDIR/* || true -# Make sure our submodules are current -git submodule update - # Important to pull latest version of libs into all device flavors, otherwise some devices might be stale platformio pkg update