110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Release
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     tags:
 | |
|       - 'v*'
 | |
| 
 | |
| jobs:
 | |
|   release:
 | |
|     runs-on: gitea-runner
 | |
|     steps:
 | |
|       - uses: actions/checkout@v4
 | |
|       
 | |
|       - name: Debug Environment
 | |
|         run: |
 | |
|           echo "GITHUB_REF: $GITHUB_REF"
 | |
|           echo "GITHUB_SHA: $GITHUB_SHA"
 | |
|           echo "PWD: $PWD"
 | |
|           ls -la
 | |
|       
 | |
|       - name: Get version from tag
 | |
|         id: version
 | |
|         run: |
 | |
|           VERSION=${GITHUB_REF#refs/tags/v}
 | |
|           echo "Raw version: ${VERSION}"
 | |
|           echo "version=${VERSION}" >> $GITHUB_OUTPUT
 | |
|           
 | |
|       - name: Get changelog
 | |
|         id: changelog
 | |
|         run: |
 | |
|           echo "Reading changelog for version ${{ steps.version.outputs.version }}"
 | |
|           if [ ! -f "CHANGELOG.md" ]; then
 | |
|             echo "Error: CHANGELOG.md not found"
 | |
|             ls -la
 | |
|             exit 1
 | |
|           fi
 | |
|           
 | |
|           CHANGELOG=$(awk "/## \\[${{ steps.version.outputs.version }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md)
 | |
|           if [ -z "$CHANGELOG" ]; then
 | |
|             echo "Warning: No changelog entry found for version ${{ steps.version.outputs.version }}"
 | |
|             echo "File content:"
 | |
|             cat CHANGELOG.md
 | |
|           else
 | |
|             echo "Found changelog entry:"
 | |
|             echo "$CHANGELOG"
 | |
|           fi
 | |
|           
 | |
|           {
 | |
|             echo "changelog<<EOF"
 | |
|             echo "$CHANGELOG"
 | |
|             echo "EOF"
 | |
|           } >> $GITHUB_OUTPUT
 | |
|       
 | |
|       - 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 Gitea Release
 | |
|         if: github.server_url != 'https://github.com'
 | |
|         env:
 | |
|           GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
 | |
|           GITEA_API_URL: ${{ secrets.GITEA_API_URL }}
 | |
|           GITEA_REPOSITORY: ${{ secrets.GITEA_REPOSITORY }}
 | |
|         run: |
 | |
|           echo "Creating Gitea release for version ${{ steps.version.outputs.version }}"
 | |
|           curl -v -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 ${{ steps.version.outputs.version }}\",
 | |
|               \"body\": \"${{ steps.changelog.outputs.changelog }}\",
 | |
|               \"draft\": false,
 | |
|               \"prerelease\": false
 | |
|             }"
 | |
|             
 | |
|       - name: Create GitHub Release
 | |
|         if: github.server_url == 'https://github.com'
 | |
|         env:
 | |
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
|         run: |
 | |
|           gh release create "${{ github.ref_name }}" \
 | |
|             --title "Release ${{ steps.version.outputs.version }}" \
 | |
|             --notes "${{ steps.changelog.outputs.changelog }}" \
 | |
|             ".pio/build/esp32dev/filaman_full.bin#filaman_full.bin" \
 | |
|             ".pio/build/esp32dev/filaman_ota.bin#filaman_ota.bin" |