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