From f4b67e52b88f6172da3763a6aada2754ce34be05 Mon Sep 17 00:00:00 2001 From: Manuel Weiser Date: Wed, 19 Feb 2025 10:07:41 +0100 Subject: [PATCH] feat: update release workflows for Gitea and GitHub, increment version to 1.2.26 --- .github/workflows/providers/gitea-release.yml | 60 +++++++---- .../workflows/providers/github-release.yml | 4 +- .github/workflows/release.yml | 101 +++++------------- platformio.ini | 2 +- 4 files changed, 68 insertions(+), 99 deletions(-) diff --git a/.github/workflows/providers/gitea-release.yml b/.github/workflows/providers/gitea-release.yml index 960a4ed..391912a 100644 --- a/.github/workflows/providers/gitea-release.yml +++ b/.github/workflows/providers/gitea-release.yml @@ -1,21 +1,15 @@ name: Gitea Release on: - workflow_call: - inputs: - version: - required: true - type: string - changelog: - required: true - type: string - -permissions: - contents: write + workflow_call: # This ensures the workflow can only be called from another workflow jobs: build: runs-on: ubuntu-latest + permissions: + contents: write # Required for creating releases + issues: read # Required for reading changelog + pull-requests: read # Required for reading changelog steps: - uses: actions/checkout@v4 @@ -24,15 +18,19 @@ jobs: with: python-version: '3.x' - - name: Install dependencies + - name: Install PlatformIO run: | python -m pip install --upgrade pip - pip install --upgrade platformio esptool + pip install --upgrade platformio - name: Build Firmware run: | - pio run -t buildfs - pio run + pio run -t buildfs # Build SPIFFS + pio run # Build firmware + + - name: Install esptool + run: | + pip install esptool - name: Merge firmware and SPIFFS run: | @@ -47,14 +45,36 @@ jobs: 0x290000 .pio/build/esp32dev/spiffs.bin - name: Prepare OTA firmware - run: cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin + run: | + # Use PlatformIO to create a proper OTA image + cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin - - name: Create GitHub Release + - name: Get version from tag + id: get_version + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + + - name: Read CHANGELOG.md + id: changelog + run: | + CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) + echo "CHANGES<> $GITHUB_OUTPUT + echo "$CHANGELOG" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Install and Configure GitHub CLI + run: | + curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ + && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ + && sudo apt update \ + && sudo apt install gh -y + + - name: Create Release with GitHub CLI env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release create "${{ github.ref_name }}" \ - --title "Release ${{ inputs.version }}" \ - --notes "${{ inputs.changelog }}" \ + --title "Release ${{ steps.get_version.outputs.VERSION }}" \ + --notes "${{ steps.changelog.outputs.CHANGES }}" \ ".pio/build/esp32dev/filaman_full.bin#filaman_full.bin" \ ".pio/build/esp32dev/filaman_ota.bin#filaman_ota.bin" \ No newline at end of file diff --git a/.github/workflows/providers/github-release.yml b/.github/workflows/providers/github-release.yml index 490ae7c..56cce6e 100644 --- a/.github/workflows/providers/github-release.yml +++ b/.github/workflows/providers/github-release.yml @@ -1,9 +1,7 @@ name: Github Release on: - push: - tags: - - 'v*' + workflow_call: # This ensures the workflow can only be called from another workflow permissions: contents: write # Required for creating releases diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf97d4d..b316e1e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,85 +1,36 @@ -name: Create Release +name: Release Workflow on: push: tags: - 'v*' -permissions: - contents: write # Required for creating releases - issues: read # Required for reading changelog - pull-requests: read # Required for reading changelog - jobs: - build: + route: runs-on: ubuntu-latest - permissions: - contents: write # Required for creating releases at job level + outputs: + provider: ${{ steps.provider.outputs.provider }} steps: - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - - name: Install PlatformIO - run: | - python -m pip install --upgrade pip - pip install --upgrade platformio - - - name: Build Firmware - run: | - pio run -t buildfs # Build SPIFFS - pio run # Build firmware - - - name: Install esptool - run: | - pip install esptool - - - name: Merge firmware and SPIFFS - run: | - esptool.py --chip esp32 merge_bin \ - --flash_mode dio \ - --flash_freq 40m \ - --flash_size 4MB \ - -o .pio/build/esp32dev/filaman_full.bin \ - 0x1000 .pio/build/esp32dev/bootloader.bin \ - 0x8000 .pio/build/esp32dev/partitions.bin \ - 0x10000 .pio/build/esp32dev/firmware.bin \ - 0x290000 .pio/build/esp32dev/spiffs.bin + - name: Checkout Repository + uses: actions/checkout@v3 - - name: Prepare OTA firmware - run: | - # Use PlatformIO to create a proper OTA image - cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin - - - name: Get version from tag - id: get_version - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - - - name: Read CHANGELOG.md - id: changelog - run: | - CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) - echo "CHANGES<> $GITHUB_OUTPUT - echo "$CHANGELOG" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - - name: Install and Configure GitHub CLI - run: | - curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ - && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ - && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ - && sudo apt update \ - && sudo apt install gh -y - - - name: Create Release with GitHub CLI - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh release create "${{ github.ref_name }}" \ - --title "Release ${{ steps.get_version.outputs.VERSION }}" \ - --notes "${{ steps.changelog.outputs.CHANGES }}" \ - ".pio/build/esp32dev/filaman_full.bin#filaman_full.bin" \ - ".pio/build/esp32dev/filaman_ota.bin#filaman_ota.bin" \ No newline at end of file + - name: Determine CI Provider + id: provider + run: | + if [[ "$GITHUB_ACTIONS" == "true" ]]; then + echo "provider=github" >> $GITHUB_OUTPUT + elif [[ "$GITEA_ACTIONS" == "true" ]]; then + echo "provider=gitea" >> $GITHUB_OUTPUT + else + echo "provider=unknown" >> $GITHUB_OUTPUT + fi + + github-release: + needs: route + if: needs.route.outputs.provider == 'github' + uses: ./.github/workflows/providers/github-release.yml + + gitea-release: + needs: route + if: needs.route.outputs.provider == 'gitea' + uses: ./.github/workflows/providers/gitea-release.yml \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 8dc7cbe..18be515 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [common] -version = "1.2.25" +version = "1.2.26" [env:esp32dev] platform = espressif32