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 }} | ||||
		Reference in New Issue
	
	Block a user