name: Build on: workflow_call: inputs: version: required: true type: string platform: required: true type: string pio_env: required: true type: string permissions: read-all jobs: pio-build: name: build-${{ inputs.platform }} runs-on: ubuntu-24.04 outputs: artifact-id: ${{ steps.upload.outputs.artifact-id }} steps: - uses: actions/checkout@v5 with: submodules: recursive ref: ${{github.event.pull_request.head.ref}} repository: ${{github.event.pull_request.head.repo.full_name}} - name: Set OTA firmware source and target if: startsWith(inputs.platform, 'esp32') id: ota_dir env: PIO_PLATFORM: ${{ inputs.platform }} run: | if [ "$PIO_PLATFORM" = "esp32s3" ]; then echo "src=firmware-s3.bin" >> $GITHUB_OUTPUT echo "tgt=release/bleota-s3.bin" >> $GITHUB_OUTPUT elif [ "$PIO_PLATFORM" = "esp32c3" ] || [ "$PIO_PLATFORM" = "esp32c6" ]; then echo "src=firmware-c3.bin" >> $GITHUB_OUTPUT echo "tgt=release/bleota-c3.bin" >> $GITHUB_OUTPUT elif [ "$PIO_PLATFORM" = "esp32" ]; then echo "src=firmware.bin" >> $GITHUB_OUTPUT echo "tgt=release/bleota.bin" >> $GITHUB_OUTPUT fi - name: Import GPG key if: github.repository == 'meshtastic/firmware' uses: crazy-max/ghaction-import-gpg@v6 with: gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} id: gpg - name: Build ${{ inputs.platform }} id: build uses: meshtastic/gh-action-firmware@main with: pio_platform: ${{ inputs.platform }} pio_env: ${{ inputs.pio_env }} pio_target: build ota_firmware_source: ${{ steps.ota_dir.outputs.src || '' }} ota_firmware_target: ${{ steps.ota_dir.outputs.tgt || '' }} - name: Sign firmware working-directory: release if: github.repository == 'meshtastic/firmware' env: GPG_KEY_ID: ${{ steps.gpg.outputs.keyid }} run: | for f in *.bin *.elf *.uf2 *.hex *.zip; do if [ -f "$f" ]; then gpg --batch --default-key "$GPG_KEY_ID" --output "$f.sig" --detach-sign "$f" fi done - name: Store binaries as an artifact uses: actions/upload-artifact@v4 id: upload with: name: firmware-${{ inputs.platform }}-${{ inputs.pio_env }}-${{ inputs.version }}.zip overwrite: true path: | release/*.bin release/*.elf release/*.uf2 release/*.hex release/*-ota.zip release/*.sig