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