From 8aac9f2e8ec14c95c90c975c4d36aacda99aa591 Mon Sep 17 00:00:00 2001 From: Austin Date: Wed, 8 Jan 2025 21:43:24 -0500 Subject: [PATCH] GH Actions: Update `Release` action, clarify versioning (#5794) --- .github/actions/build-variant/action.yml | 4 +- .github/workflows/build_docker.yml | 4 +- .github/workflows/build_native.yml | 4 +- .github/workflows/build_raspbian.yml | 4 +- .github/workflows/build_raspbian_armv7l.yml | 4 +- .github/workflows/main_matrix.yml | 97 ++++++------------- .github/workflows/package_amd64.yml | 8 +- .github/workflows/package_raspbian.yml | 8 +- .github/workflows/package_raspbian_armv7l.yml | 8 +- .github/workflows/test_native.yml | 18 ++-- .github/workflows/trunk_format_pr.yml | 6 +- 11 files changed, 67 insertions(+), 98 deletions(-) diff --git a/.github/actions/build-variant/action.yml b/.github/actions/build-variant/action.yml index b3303d393a..d003459d6f 100644 --- a/.github/actions/build-variant/action.yml +++ b/.github/actions/build-variant/action.yml @@ -83,13 +83,13 @@ runs: - name: Get release version string shell: bash - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}.zip overwrite: true path: | ${{ inputs.artifact-paths }} diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml index 13817a8cf3..18787f16ab 100644 --- a/.github/workflows/build_docker.yml +++ b/.github/workflows/build_docker.yml @@ -18,7 +18,7 @@ jobs: repository: ${{github.event.pull_request.head.repo.full_name}} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Docker login @@ -39,7 +39,7 @@ jobs: context: . file: ./Dockerfile push: true - tags: meshtastic/meshtasticd:${{ steps.version.outputs.version }} + tags: meshtastic/meshtasticd:${{ steps.version.outputs.long }} - name: Docker build and push if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }} diff --git a/.github/workflows/build_native.yml b/.github/workflows/build_native.yml index 11ba09ad7c..cca839328d 100644 --- a/.github/workflows/build_native.yml +++ b/.github/workflows/build_native.yml @@ -25,13 +25,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-native-${{ steps.version.outputs.version }}.zip + name: firmware-native-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_x86_64 diff --git a/.github/workflows/build_raspbian.yml b/.github/workflows/build_raspbian.yml index ac63dfea47..646c6c9f38 100644 --- a/.github/workflows/build_raspbian.yml +++ b/.github/workflows/build_raspbian.yml @@ -39,13 +39,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-raspbian-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_aarch64 diff --git a/.github/workflows/build_raspbian_armv7l.yml b/.github/workflows/build_raspbian_armv7l.yml index 565d9a0dcf..21b1aea796 100644 --- a/.github/workflows/build_raspbian_armv7l.yml +++ b/.github/workflows/build_raspbian_armv7l.yml @@ -39,13 +39,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_armv7l diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index 267e34a94f..20ffecb766 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -192,7 +192,7 @@ jobs: run: ls -R - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Move files up @@ -201,7 +201,7 @@ jobs: - name: Repackage in single firmware zip uses: actions/upload-artifact@v4 with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} overwrite: true path: | ./firmware-*.bin @@ -218,7 +218,7 @@ jobs: - uses: actions/download-artifact@v4 with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} merge-multiple: true path: ./output @@ -232,12 +232,12 @@ jobs: chmod +x ./output/device-update.sh - name: Zip firmware - run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output + run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output - name: Repackage in single elfs zip uses: actions/upload-artifact@v4 with: - name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip + name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip overwrite: true path: ./*.elf retention-days: 30 @@ -245,8 +245,8 @@ jobs: - uses: scruplelesswizard/comment-artifact@main if: ${{ github.event_name == 'pull_request' }} with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} - description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip. This artifact will be available for 90 days from creation" + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} + description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip. This artifact will be available for 90 days from creation" github-token: ${{ secrets.GITHUB_TOKEN }} release-artifacts: @@ -271,26 +271,24 @@ jobs: python-version: 3.x - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Create release - uses: actions/create-release@v1 + uses: softprops/action-gh-release@v2 id: create_release with: draft: true prerelease: true - release_name: Meshtastic Firmware ${{ steps.version.outputs.version }} Alpha - tag_name: v${{ steps.version.outputs.version }} + name: Meshtastic Firmware ${{ steps.version.outputs.long }} Alpha + tag_name: v${{ steps.version.outputs.long }} body: | Autogenerated by github action, developer should edit as required before publishing... - env: - GITHUB_TOKEN: ${{ github.token }} - name: Download deb files uses: actions/download-artifact@v4 with: - pattern: meshtasticd_${{ steps.version.outputs.version }}_*.deb + pattern: meshtasticd_${{ steps.version.outputs.long }}_*.deb merge-multiple: true path: ./output @@ -298,35 +296,14 @@ jobs: - name: Display structure of downloaded files run: ls -lR - - name: Add raspbian aarch64 .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Add deb files to release + uses: softprops/action-gh-release@v2 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_arm64.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Add raspbian armv7l .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_armhf.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Add raspbian amd64 .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_amd64.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb - asset_content_type: application/vnd.debian.binary-package + tag_name: v${{ steps.version.outputs.long }} + files: | + ./output/meshtasticd_${{ steps.version.outputs.long }}_arm64.deb + ./output/meshtasticd_${{ steps.version.outputs.long }}_armhf.deb + ./output/meshtasticd_${{ steps.version.outputs.long }}_amd64.deb - name: Bump version.properties run: >- @@ -362,12 +339,12 @@ jobs: python-version: 3.x - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - uses: actions/download-artifact@v4 with: - pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} merge-multiple: true path: ./output @@ -380,37 +357,25 @@ jobs: chmod +x ./output/device-update.sh - name: Zip firmware - run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output + run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output - uses: actions/download-artifact@v4 with: - name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip + name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip merge-multiple: true path: ./elfs - - name: Zip firmware - run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./elfs + - name: Zip debug elfs + run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./elfs # For diagnostics - name: Display structure of downloaded files run: ls -lR - - name: Add bins to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{needs.release-artifacts.outputs.upload_url}} - asset_path: ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_content_type: application/zip - - - name: Add debug elfs to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Add bins and debug elfs to release + uses: softprops/action-gh-release@v2 with: - upload_url: ${{needs.release-artifacts.outputs.upload_url}} - asset_path: ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_content_type: application/zip + tag_name: v${{ steps.version.outputs.long }} + files: | + ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip + ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip diff --git a/.github/workflows/package_amd64.yml b/.github/workflows/package_amd64.yml index c6e82e1be2..d9f0417360 100644 --- a/.github/workflows/package_amd64.yml +++ b/.github/workflows/package_amd64.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-native-${{ steps.version.outputs.version }}.zip + name: firmware-native-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: amd64 depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb + name: meshtasticd_${{ steps.version.outputs.long }}_amd64.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/package_raspbian.yml b/.github/workflows/package_raspbian.yml index a4cd49573d..62613f85ff 100644 --- a/.github/workflows/package_raspbian.yml +++ b/.github/workflows/package_raspbian.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-raspbian-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: arm64 depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb + name: meshtasticd_${{ steps.version.outputs.long }}_arm64.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/package_raspbian_armv7l.yml b/.github/workflows/package_raspbian_armv7l.yml index c4cc5c6736..8a9df17107 100644 --- a/.github/workflows/package_raspbian_armv7l.yml +++ b/.github/workflows/package_raspbian_armv7l.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: armhf depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb + name: meshtasticd_${{ steps.version.outputs.long }}_armhf.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/test_native.yml b/.github/workflows/test_native.yml index d016635ef0..8e8ff68e48 100644 --- a/.github/workflows/test_native.yml +++ b/.github/workflows/test_native.yml @@ -55,14 +55,14 @@ jobs: - name: Get release version string if: always() # run this step even if previous step failed - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Save coverage information uses: actions/upload-artifact@v4 if: always() # run this step even if previous step failed with: - name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.version }}.zip + name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}.zip overwrite: true path: ./coverage_*.info @@ -81,7 +81,7 @@ jobs: uses: ./.github/actions/setup-native - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version # Disable (comment-out) BUILD_EPOCH. It causes a full rebuild between tests and resets the @@ -96,7 +96,7 @@ jobs: if: always() # run this step even if previous step failed uses: actions/upload-artifact@v4 with: - name: platformio-test-report-${{ steps.version.outputs.version }}.zip + name: platformio-test-report-${{ steps.version.outputs.long }}.zip overwrite: true path: ./testreport.xml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() # run this step even if previous step failed with: - name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.version }}.zip + name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}.zip overwrite: true path: ./coverage_*.info @@ -133,13 +133,13 @@ jobs: repository: ${{github.event.pull_request.head.repo.full_name}} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download test artifacts uses: actions/download-artifact@v4 with: - name: platformio-test-report-${{ steps.version.outputs.version }}.zip + name: platformio-test-report-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Test Report @@ -152,7 +152,7 @@ jobs: - name: Download coverage artifacts uses: actions/download-artifact@v4 with: - pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.version }}.zip + pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}.zip path: code-coverage-report merge-multiple: true @@ -165,5 +165,5 @@ jobs: - name: Save Code Coverage Report uses: actions/upload-artifact@v4 with: - name: code-coverage-report-${{ steps.version.outputs.version }}.zip + name: code-coverage-report-${{ steps.version.outputs.long }}.zip path: code-coverage-report diff --git a/.github/workflows/trunk_format_pr.yml b/.github/workflows/trunk_format_pr.yml index c5c20b4657..0d6eb6041a 100644 --- a/.github/workflows/trunk_format_pr.yml +++ b/.github/workflows/trunk_format_pr.yml @@ -22,12 +22,16 @@ jobs: - name: Run Trunk Fmt run: trunk fmt + - name: Get release version string + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + - name: Commit and push changes run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git add . - git commit -m "Add firmware version ${{ steps.version.outputs.version }}" + git commit -m "Add firmware version ${{ steps.version.outputs.long }}" git push - name: Comment on PR