feat: add API endpoint for version retrieval and update HTML to display dynamic version
This commit is contained in:
		
							
								
								
									
										88
									
								
								.github/workflows/providers/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										88
									
								
								.github/workflows/providers/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -37,44 +37,51 @@ jobs: | ||||
|         sudo apt-get update | ||||
|         sudo apt-get install xxd | ||||
|      | ||||
|     - name: Check for SPIFFS changes | ||||
|       id: check_spiffs | ||||
|       run: | | ||||
|         git fetch --unshallow || true | ||||
|         CHANGED_FILES=$(git diff --name-only HEAD^..HEAD) | ||||
|         if echo "$CHANGED_FILES" | grep -q "^data/\|^html/"; then | ||||
|           echo "SPIFFS_CHANGED=true" >> $GITHUB_OUTPUT | ||||
|         else | ||||
|           echo "SPIFFS_CHANGED=false" >> $GITHUB_OUTPUT | ||||
|         fi | ||||
|      | ||||
|     - name: Build Firmware | ||||
|       run: | | ||||
|         pio run -e esp32dev -t buildfs  # Build SPIFFS | ||||
|         pio run -e esp32dev            # Build firmware | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman.bin | ||||
|         cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/filaman_spiffs.bin | ||||
|         # Get version from platformio.ini | ||||
|         VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2) | ||||
|          | ||||
|         # Always build firmware | ||||
|         pio run -e esp32dev | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_${VERSION}.bin | ||||
|          | ||||
|         # Only build SPIFFS if changed | ||||
|         if [[ "${{ steps.check_spiffs.outputs.SPIFFS_CHANGED }}" == "true" ]]; then | ||||
|           echo "Building SPIFFS due to changes..." | ||||
|           cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/webpage_${VERSION}.bin | ||||
|         fi | ||||
|          | ||||
|     - name: Prepare binaries | ||||
|       run: | | ||||
|         # Ensure we're in the project root | ||||
|         cd $GITHUB_WORKSPACE | ||||
|          | ||||
|         # Create SPIFFS directory if it doesn't exist | ||||
|         mkdir -p .pio/build/esp32dev/spiffs | ||||
|          | ||||
|         # Copy firmware to SPIFFS directory | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/spiffs/firmware.bin | ||||
|          | ||||
|         # Build new SPIFFS image with firmware included | ||||
|         pio run -t buildfs | ||||
|          | ||||
|         cd .pio/build/esp32dev | ||||
|         VERSION=$(grep '^version = ' ../../platformio.ini | cut -d'"' -f2) | ||||
|          | ||||
|         # Create release files | ||||
|         cp spiffs.bin filaman_spiffs.bin | ||||
|          | ||||
|         # Create full binary | ||||
|         echo "Creating full binary..." | ||||
|         esptool.py --chip esp32 merge_bin \ | ||||
|           --fill-flash-size 4MB \ | ||||
|           --flash_mode dio \ | ||||
|           --flash_freq 40m \ | ||||
|           --flash_size 4MB \ | ||||
|           -o filaman_full.bin \ | ||||
|           0x0000 bootloader.bin \ | ||||
|           0x8000 partitions.bin \ | ||||
|           0x10000 firmware.bin \ | ||||
|           0x390000 spiffs.bin | ||||
|         # Create full binary only if SPIFFS changed | ||||
|         if [[ "${{ steps.check_spiffs.outputs.SPIFFS_CHANGED }}" == "true" ]]; then | ||||
|           echo "Creating full binary..." | ||||
|           esptool.py --chip esp32 merge_bin \ | ||||
|             --fill-flash-size 4MB \ | ||||
|             --flash_mode dio \ | ||||
|             --flash_freq 40m \ | ||||
|             --flash_size 4MB \ | ||||
|             -o filaman_full_${VERSION}.bin \ | ||||
|             0x0000 bootloader.bin \ | ||||
|             0x8000 partitions.bin \ | ||||
|             0x10000 firmware.bin \ | ||||
|             0x390000 spiffs.bin | ||||
|         fi | ||||
|          | ||||
|         # Verify file sizes | ||||
|         echo "File sizes:" | ||||
| @@ -87,6 +94,7 @@ jobs: | ||||
|         TAG="${{ inputs.gitea_ref_name }}" | ||||
|         API_URL="${{ inputs.gitea_server_url }}/api/v1" | ||||
|         REPO="${{ inputs.gitea_repository }}" | ||||
|         VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2) | ||||
|          | ||||
|         # Create release | ||||
|         RESPONSE=$(curl -k -s \ | ||||
| @@ -104,12 +112,20 @@ jobs: | ||||
|          | ||||
|         if [ -n "$RELEASE_ID" ]; then | ||||
|           echo "Release created with ID: $RELEASE_ID" | ||||
|            | ||||
|           # Upload binaries | ||||
|           cd .pio/build/esp32dev | ||||
|            | ||||
|           # Check if files exist before uploading | ||||
|           for file in filaman_spiffs.bin filaman_full.bin; do | ||||
|           # Always upload firmware | ||||
|           if [ -f "filaman_${VERSION}.bin" ]; then | ||||
|             curl -k -s \ | ||||
|               -X POST \ | ||||
|               -H "Authorization: token ${TOKEN}" \ | ||||
|               -H "Content-Type: application/octet-stream" \ | ||||
|               --data-binary "@filaman_${VERSION}.bin" \ | ||||
|               "${API_URL}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=filaman_${VERSION}.bin" | ||||
|           fi | ||||
|            | ||||
|           # Upload SPIFFS and full binary only if they exist | ||||
|           for file in webpage_${VERSION}.bin filaman_full_${VERSION}.bin; do | ||||
|             if [ -f "$file" ]; then | ||||
|               echo "Uploading $file..." | ||||
|               curl -k -s \ | ||||
| @@ -118,8 +134,6 @@ jobs: | ||||
|                 -H "Content-Type: application/octet-stream" \ | ||||
|                 --data-binary "@$file" \ | ||||
|                 "${API_URL}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$file" | ||||
|             else | ||||
|               echo "Warning: $file not found" | ||||
|             fi | ||||
|           done | ||||
|         else | ||||
|   | ||||
							
								
								
									
										95
									
								
								.github/workflows/providers/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										95
									
								
								.github/workflows/providers/github-release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -26,44 +26,51 @@ jobs: | ||||
|         sudo apt-get update | ||||
|         sudo apt-get install xxd | ||||
|      | ||||
|     - name: Check for SPIFFS changes | ||||
|       id: check_spiffs | ||||
|       run: | | ||||
|         git fetch --unshallow || true | ||||
|         CHANGED_FILES=$(git diff --name-only HEAD^..HEAD) | ||||
|         if echo "$CHANGED_FILES" | grep -q "^data/\|^html/"; then | ||||
|           echo "SPIFFS_CHANGED=true" >> $GITHUB_OUTPUT | ||||
|         else | ||||
|           echo "SPIFFS_CHANGED=false" >> $GITHUB_OUTPUT | ||||
|         fi | ||||
|      | ||||
|     - name: Build Firmware | ||||
|       run: | | ||||
|         pio run -e esp32dev -t buildfs  # Build SPIFFS | ||||
|         pio run -e esp32dev            # Build firmware | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman.bin | ||||
|         cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/filaman_spiffs.bin | ||||
|         # Get version from platformio.ini | ||||
|         VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2) | ||||
|          | ||||
|         # Always build firmware | ||||
|         pio run -e esp32dev | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_${VERSION}.bin | ||||
|          | ||||
|         # Only build SPIFFS if changed | ||||
|         if [[ "${{ steps.check_spiffs.outputs.SPIFFS_CHANGED }}" == "true" ]]; then | ||||
|           echo "Building SPIFFS due to changes..." | ||||
|           cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/webpage_${VERSION}.bin | ||||
|         fi | ||||
|          | ||||
|     - name: Prepare binaries | ||||
|       run: | | ||||
|         # Ensure we're in the project root | ||||
|         cd $GITHUB_WORKSPACE | ||||
|          | ||||
|         # Create SPIFFS directory if it doesn't exist | ||||
|         mkdir -p .pio/build/esp32dev/spiffs | ||||
|          | ||||
|         # Copy firmware to SPIFFS directory | ||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/spiffs/firmware.bin | ||||
|          | ||||
|         # Build new SPIFFS image with firmware included | ||||
|         pio run -t buildfs | ||||
|          | ||||
|         cd .pio/build/esp32dev | ||||
|         VERSION=$(grep '^version = ' ../../platformio.ini | cut -d'"' -f2) | ||||
|          | ||||
|         # Create release files | ||||
|         cp spiffs.bin filaman_spiffs.bin | ||||
|          | ||||
|         # Create full binary | ||||
|         echo "Creating full binary..." | ||||
|         esptool.py --chip esp32 merge_bin \ | ||||
|           --fill-flash-size 4MB \ | ||||
|           --flash_mode dio \ | ||||
|           --flash_freq 40m \ | ||||
|           --flash_size 4MB \ | ||||
|           -o filaman_full.bin \ | ||||
|           0x0000 bootloader.bin \ | ||||
|           0x8000 partitions.bin \ | ||||
|           0x10000 firmware.bin \ | ||||
|           0x390000 spiffs.bin | ||||
|         # Create full binary only if SPIFFS changed | ||||
|         if [[ "${{ steps.check_spiffs.outputs.SPIFFS_CHANGED }}" == "true" ]]; then | ||||
|           echo "Creating full binary..." | ||||
|           esptool.py --chip esp32 merge_bin \ | ||||
|             --fill-flash-size 4MB \ | ||||
|             --flash_mode dio \ | ||||
|             --flash_freq 40m \ | ||||
|             --flash_size 4MB \ | ||||
|             -o filaman_full_${VERSION}.bin \ | ||||
|             0x0000 bootloader.bin \ | ||||
|             0x8000 partitions.bin \ | ||||
|             0x10000 firmware.bin \ | ||||
|             0x390000 spiffs.bin | ||||
|         fi | ||||
|          | ||||
|         # Verify file sizes | ||||
|         echo "File sizes:" | ||||
| @@ -87,16 +94,23 @@ jobs: | ||||
|       env: | ||||
|         GH_TOKEN: ${{ github.token }} | ||||
|       run: | | ||||
|         # Check which files exist and create a list for upload | ||||
|         cd .pio/build/esp32dev | ||||
|         VERSION=$(grep '^version = ' ../../platformio.ini | cut -d'"' -f2) | ||||
|         FILES_TO_UPLOAD="" | ||||
|         for file in filaman_spiffs.bin filaman_full.bin; do | ||||
|           if [ -f "$file" ]; then | ||||
|             FILES_TO_UPLOAD="$FILES_TO_UPLOAD .pio/build/esp32dev/$file" | ||||
|           else | ||||
|             echo "Warning: $file not found" | ||||
|           fi | ||||
|         done | ||||
|          | ||||
|         # Always add firmware | ||||
|         if [ -f "filaman_${VERSION}.bin" ]; then | ||||
|           FILES_TO_UPLOAD="$FILES_TO_UPLOAD filaman_${VERSION}.bin" | ||||
|         fi | ||||
|          | ||||
|         # Add SPIFFS and full binary only if they exist | ||||
|         if [ -f "webpage_${VERSION}.bin" ]; then | ||||
|           FILES_TO_UPLOAD="$FILES_TO_UPLOAD webpage_${VERSION}.bin" | ||||
|         fi | ||||
|          | ||||
|         if [ -f "filaman_full_${VERSION}.bin" ]; then | ||||
|           FILES_TO_UPLOAD="$FILES_TO_UPLOAD filaman_full_${VERSION}.bin" | ||||
|         fi | ||||
|          | ||||
|         # Create release with available files | ||||
|         if [ -n "$FILES_TO_UPLOAD" ]; then | ||||
| @@ -106,4 +120,5 @@ jobs: | ||||
|             $FILES_TO_UPLOAD | ||||
|         else | ||||
|           echo "Error: No files found to upload" | ||||
|           exit 1 | ||||
|           exit 1 | ||||
|         fi | ||||
		Reference in New Issue
	
	Block a user