feat: update Gitea release workflow for version 1.2.17 and improve job structure
This commit is contained in:
		
							
								
								
									
										141
									
								
								.github/workflows/providers/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										141
									
								
								.github/workflows/providers/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -4,101 +4,60 @@ on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       version: | ||||
|         required: true | ||||
|         type: string | ||||
|         required: true | ||||
|       changelog: | ||||
|         required: true | ||||
|         type: string | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|   issues: read | ||||
|   pull-requests: read | ||||
|         required: true | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|   release: | ||||
|     runs-on: gitea-runner | ||||
|     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 | ||||
|         sudo apt-get update | ||||
|         sudo apt-get install -y jq | ||||
|      | ||||
|     - 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 Release | ||||
|       env: | ||||
|         GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} | ||||
|         GITEA_API_URL: ${{ secrets.GITEA_API_URL }} | ||||
|         GITEA_REPOSITORY: ${{ secrets.GITEA_REPOSITORY }} | ||||
|       run: | | ||||
|         # Validate and sanitize API URL | ||||
|         if [[ ! "$GITEA_API_URL" =~ ^https?:// ]]; then | ||||
|           echo "Error: GITEA_API_URL must start with http:// or https://" | ||||
|           exit 1 | ||||
|         fi | ||||
|          | ||||
|         # Remove trailing slash and ensure /api/v1 | ||||
|         GITEA_API_URL="${GITEA_API_URL%/}" | ||||
|         if [[ ! "$GITEA_API_URL" =~ /api/v1$ ]]; then | ||||
|           GITEA_API_URL="${GITEA_API_URL}/api/v1" | ||||
|         fi | ||||
|          | ||||
|         echo "Creating Gitea release..." | ||||
|         release_data="{\"tag_name\":\"${{ github.ref_name }}\",\"name\":\"Release ${{ inputs.version }}\",\"body\":${{ toJSON(inputs.changelog) }},\"draft\":false,\"prerelease\":false}" | ||||
|         RESPONSE=$(curl -sS -X POST \ | ||||
|           -H "Authorization: token ${GITEA_TOKEN}" \ | ||||
|           -H "Content-Type: application/json" \ | ||||
|           -H "Accept: application/json" \ | ||||
|           "${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases" \ | ||||
|           -d "$release_data") | ||||
|          | ||||
|         # Extract and validate release ID | ||||
|         RELEASE_ID=$(echo "$RESPONSE" | jq -r .id) | ||||
|         if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "null" ]; then | ||||
|           echo "Error: Failed to get release ID" | ||||
|           echo "API Response:" | ||||
|           echo "$RESPONSE" | jq . | ||||
|           exit 1 | ||||
|         fi | ||||
|          | ||||
|         # Upload binary files | ||||
|         for file in "filaman_full.bin" "filaman_ota.bin"; do | ||||
|           echo "Uploading $file..." | ||||
|           if ! curl -sS -X POST \ | ||||
|       - 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/octet-stream" \ | ||||
|             "${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases/${RELEASE_ID}/assets?name=${file}" \ | ||||
|             --data-binary "@.pio/build/esp32dev/${file}"; then | ||||
|             echo "Error: Failed to upload $file" | ||||
|             exit 1 | ||||
|           fi | ||||
|           echo "Successfully uploaded $file" | ||||
|         done | ||||
|             -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 }} | ||||
							
								
								
									
										94
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										94
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,50 +6,86 @@ on: | ||||
|       - 'v*' | ||||
|  | ||||
| jobs: | ||||
|   get-version-and-changelog: | ||||
|     runs-on: ubuntu-latest | ||||
|   prepare: | ||||
|     runs-on: gitea-runner | ||||
|     outputs: | ||||
|       version: ${{ steps.get_version.outputs.VERSION }} | ||||
|       changelog: ${{ steps.changelog.outputs.CHANGES }} | ||||
|       version: ${{ steps.version.outputs.version }} | ||||
|       changelog: ${{ steps.changelog.outputs.changelog }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|        | ||||
|       - name: Get version from tag | ||||
|         id: get_version | ||||
|         run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | ||||
|        | ||||
|       - name: Verify version match | ||||
|         id: version | ||||
|         run: | | ||||
|           PIO_VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2) | ||||
|           TAG_VERSION=${{ steps.get_version.outputs.VERSION }} | ||||
|            | ||||
|           if [ "$PIO_VERSION" != "$TAG_VERSION" ]; then | ||||
|             echo "Error: Version mismatch between tag ($TAG_VERSION) and platformio.ini ($PIO_VERSION)" | ||||
|             exit 1 | ||||
|           fi | ||||
|           VERSION=${GITHUB_REF#refs/tags/v} | ||||
|           echo "version=$VERSION" >> $GITHUB_OUTPUT | ||||
|        | ||||
|       - name: Read CHANGELOG.md | ||||
|       - name: Get changelog | ||||
|         id: changelog | ||||
|         run: | | ||||
|           CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) | ||||
|           echo "CHANGES<<EOF" >> $GITHUB_OUTPUT | ||||
|           CHANGELOG=$(awk "/## \\[${{ steps.version.outputs.version }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md) | ||||
|           echo "changelog<<EOF" >> $GITHUB_OUTPUT | ||||
|           echo "$CHANGELOG" >> $GITHUB_OUTPUT | ||||
|           echo "EOF" >> $GITHUB_OUTPUT | ||||
|  | ||||
|   github-release: | ||||
|     needs: get-version-and-changelog | ||||
|   github: | ||||
|     needs: prepare | ||||
|     if: github.server_url == 'https://github.com' | ||||
|     uses: ./.github/workflows/providers/github-release.yml | ||||
|     with: | ||||
|       version: ${{ needs.get-version-and-changelog.outputs.version }} | ||||
|       changelog: ${{ needs.get-version-and-changelog.outputs.changelog }} | ||||
|       version: ${{ needs.prepare.outputs.version }} | ||||
|       changelog: ${{ needs.prepare.outputs.changelog }} | ||||
|     secrets: inherit | ||||
|  | ||||
|   gitea-release: | ||||
|     needs: get-version-and-changelog | ||||
|   gitea: | ||||
|     needs: prepare | ||||
|     if: github.server_url != 'https://github.com' | ||||
|     uses: ./.github/workflows/providers/gitea-release.yml | ||||
|     with: | ||||
|       version: ${{ needs.get-version-and-changelog.outputs.version }} | ||||
|       changelog: ${{ needs.get-version-and-changelog.outputs.changelog }} | ||||
|     secrets: inherit | ||||
|     runs-on: gitea-runner | ||||
|     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 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 | ||||
|         env: | ||||
|           GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} | ||||
|           GITEA_API_URL: ${{ secrets.GITEA_API_URL }} | ||||
|           GITEA_REPOSITORY: ${{ secrets.GITEA_REPOSITORY }} | ||||
|         run: | | ||||
|           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 ${{ needs.prepare.outputs.version }}\", | ||||
|               \"body\": \"${{ needs.prepare.outputs.changelog }}\", | ||||
|               \"draft\": false, | ||||
|               \"prerelease\": false | ||||
|             }" | ||||
| @@ -9,7 +9,7 @@ | ||||
| ; https://docs.platformio.org/page/projectconf.html | ||||
|  | ||||
| [common] | ||||
| version = "1.2.16" | ||||
| version = "1.2.17" | ||||
|  | ||||
| [env:esp32dev] | ||||
| platform = espressif32 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user