diff --git a/.github/workflows/providers/gitea-release.yml b/.github/workflows/providers/gitea-release.yml new file mode 100644 index 0000000..c37f25e --- /dev/null +++ b/.github/workflows/providers/gitea-release.yml @@ -0,0 +1,63 @@ +name: Gitea Release + +on: + workflow_call: + inputs: + version: + type: string + required: true + changelog: + type: string + required: true + +jobs: + release: + runs-on: gitea-runner + steps: + - name: Debug Info + run: | + echo "Version: ${{ inputs.version }}" + echo "Changelog: ${{ inputs.changelog }}" + echo "Tag: ${GITHUB_REF#refs/tags/}" + + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install platformio esptool + + - name: Build + run: | + pio run -t buildfs + pio run + + - name: Create full firmware + 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 + cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin + + - name: Create Release + run: | + TAG="${GITHUB_REF#refs/tags/}" + curl -X POST "${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"Release ${{ inputs.version }}\",\"body\":\"${{ inputs.changelog }}\",\"draft\":false,\"prerelease\":false}" + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + GITEA_API_URL: ${{ secrets.GITEA_API_URL }} + GITEA_REPOSITORY: ${{ secrets.GITEA_REPOSITORY }} \ No newline at end of file diff --git a/.github/workflows/providers/github-release.yml b/.github/workflows/providers/github-release.yml new file mode 100644 index 0000000..d3b63af --- /dev/null +++ b/.github/workflows/providers/github-release.yml @@ -0,0 +1,60 @@ +name: GitHub Release + +on: + workflow_call: + inputs: + version: + required: true + type: string + changelog: + required: true + type: string + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --upgrade platformio esptool + + - name: Build Firmware + run: | + pio run -t buildfs + pio run + + - 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: Prepare OTA firmware + run: cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin + + - name: Create GitHub Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release create "${{ github.ref_name }}" \ + --title "Release ${{ inputs.version }}" \ + --notes "${{ inputs.changelog }}" \ + ".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 82fde94..6a5225a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,50 +6,43 @@ on: - 'v*' jobs: - release: + prepare: runs-on: gitea-runner + outputs: + version: ${{ steps.version.outputs.version }} + changelog: ${{ steps.changelog.outputs.changelog }} steps: - uses: actions/checkout@v4 - - name: Debug Environment - run: | - echo "GITHUB_REF: $GITHUB_REF" - echo "GITHUB_SHA: $GITHUB_SHA" - echo "PWD: $PWD" - ls -la - - name: Get version from tag id: version run: | VERSION=${GITHUB_REF#refs/tags/v} - echo "Raw version: ${VERSION}" - echo "version=${VERSION}" >> $GITHUB_OUTPUT - + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Get changelog id: changelog run: | - echo "Reading changelog for version ${{ steps.version.outputs.version }}" - if [ ! -f "CHANGELOG.md" ]; then - echo "Error: CHANGELOG.md not found" - ls -la - exit 1 - fi - CHANGELOG=$(awk "/## \\[${{ steps.version.outputs.version }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) - if [ -z "$CHANGELOG" ]; then - echo "Warning: No changelog entry found for version ${{ steps.version.outputs.version }}" - echo "File content:" - cat CHANGELOG.md - else - echo "Found changelog entry:" - echo "$CHANGELOG" - fi - - { - echo "changelog<> $GITHUB_OUTPUT + echo "changelog<> $GITHUB_OUTPUT + echo "$CHANGELOG" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + github: + needs: prepare + if: github.server_url == 'https://github.com' + uses: ./.github/workflows/providers/github-release.yml + with: + version: ${{ needs.prepare.outputs.version }} + changelog: ${{ needs.prepare.outputs.changelog }} + secrets: inherit + + gitea: + needs: prepare + if: github.server_url != 'https://github.com' + runs-on: gitea-runner + steps: + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 @@ -79,32 +72,20 @@ jobs: 0x290000 .pio/build/esp32dev/spiffs.bin cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin - - name: Create Gitea Release - if: github.server_url != 'https://github.com' + - name: Create Release env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_API_URL: ${{ secrets.GITEA_API_URL }} GITEA_REPOSITORY: ${{ secrets.GITEA_REPOSITORY }} run: | - echo "Creating Gitea release for version ${{ steps.version.outputs.version }}" - curl -v -X POST "${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases" \ + echo "Creating release for version ${{ needs.prepare.outputs.version }}" + curl -X POST "${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"tag_name\": \"${GITHUB_REF#refs/tags/}\", - \"name\": \"Release ${{ steps.version.outputs.version }}\", - \"body\": \"${{ steps.changelog.outputs.changelog }}\", + \"name\": \"Release ${{ needs.prepare.outputs.version }}\", + \"body\": \"${{ needs.prepare.outputs.changelog }}\", \"draft\": false, \"prerelease\": false - }" - - - name: Create GitHub Release - if: github.server_url == 'https://github.com' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh release create "${{ github.ref_name }}" \ - --title "Release ${{ steps.version.outputs.version }}" \ - --notes "${{ steps.changelog.outputs.changelog }}" \ - ".pio/build/esp32dev/filaman_full.bin#filaman_full.bin" \ - ".pio/build/esp32dev/filaman_ota.bin#filaman_ota.bin" \ No newline at end of file + }" \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 73b12d0..99ca130 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [common] -version = "1.2.18" +version = "1.2.19" [env:esp32dev] platform = espressif32