diff --git a/.github/workflows/providers/github-release.yml b/.github/workflows/providers/github-release.yml index d3b63af..490ae7c 100644 --- a/.github/workflows/providers/github-release.yml +++ b/.github/workflows/providers/github-release.yml @@ -1,21 +1,20 @@ -name: GitHub Release +name: Github Release on: - workflow_call: - inputs: - version: - required: true - type: string - changelog: - required: true - type: string + push: + tags: + - 'v*' permissions: - contents: write + contents: write # Required for creating releases + issues: read # Required for reading changelog + pull-requests: read # Required for reading changelog jobs: build: runs-on: ubuntu-latest + permissions: + contents: write # Required for creating releases at job level steps: - uses: actions/checkout@v4 @@ -24,15 +23,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 +50,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/release.yml b/.github/workflows/release.yml index d3b63af..cf97d4d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,21 +1,20 @@ -name: GitHub Release +name: Create Release on: - workflow_call: - inputs: - version: - required: true - type: string - changelog: - required: true - type: string + push: + tags: + - 'v*' permissions: - contents: write + contents: write # Required for creating releases + issues: read # Required for reading changelog + pull-requests: read # Required for reading changelog jobs: build: runs-on: ubuntu-latest + permissions: + contents: write # Required for creating releases at job level steps: - uses: actions/checkout@v4 @@ -24,15 +23,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 +50,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/platformio.ini b/platformio.ini index 9e64a57..8dc7cbe 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [common] -version = "1.2.24" +version = "1.2.25" [env:esp32dev] platform = espressif32