91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Release
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     tags:
 | |
|       - 'v*'
 | |
| 
 | |
| jobs:
 | |
|   prepare:
 | |
|     runs-on: gitea-runner
 | |
|     outputs:
 | |
|       version: ${{ steps.version.outputs.version }}
 | |
|       changelog: ${{ steps.changelog.outputs.changelog }}
 | |
|     steps:
 | |
|       - uses: actions/checkout@v4
 | |
|       
 | |
|       - name: Get version from tag
 | |
|         id: version
 | |
|         run: |
 | |
|           VERSION=${GITHUB_REF#refs/tags/v}
 | |
|           echo "version=$VERSION" >> $GITHUB_OUTPUT
 | |
|       
 | |
|       - name: Get changelog
 | |
|         id: changelog
 | |
|         run: |
 | |
|           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:
 | |
|     needs: prepare
 | |
|     if: github.server_url == 'https://github.com'
 | |
|     uses: ./.github/workflows/providers/github-release.yml
 | |
|     with:
 | |
|       version: ${{ needs.prepare.outputs.version }}
 | |
|       changelog: ${{ needs.prepare.outputs.changelog }}
 | |
|     secrets: inherit
 | |
| 
 | |
|   gitea:
 | |
|     needs: prepare
 | |
|     if: github.server_url != 'https://github.com'
 | |
|     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
 | |
|             }" |