68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Release
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     tags:
 | |
|       - 'v*'
 | |
| 
 | |
| jobs:
 | |
|   prepare:
 | |
|     runs-on: ubuntu-latest
 | |
|     outputs:
 | |
|       version: ${{ steps.get_version.outputs.VERSION }}
 | |
|       changelog: ${{ steps.changelog.outputs.CHANGES }}
 | |
|       provider: ${{ steps.detect-provider.outputs.provider }}
 | |
|     steps:
 | |
|       - uses: actions/checkout@v4
 | |
|       
 | |
|       - name: Detect provider
 | |
|         id: detect-provider
 | |
|         run: |
 | |
|           if [[ "$GITHUB_SERVER_URL" == "https://github.com" ]]; then
 | |
|             echo "provider=github" >> $GITHUB_OUTPUT
 | |
|           else
 | |
|             echo "provider=gitea" >> $GITHUB_OUTPUT
 | |
|           fi
 | |
|       
 | |
|       - name: Get version from tag
 | |
|         id: get_version
 | |
|         run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
 | |
|       
 | |
|       - name: Verify version match
 | |
|         run: |
 | |
|           PIO_VERSION=$(grep '^version = ' platformio.ini | cut -d'"' -f2)
 | |
|           TAG_VERSION=${{ steps.get_version.outputs.VERSION }}
 | |
|           
 | |
|           echo "PlatformIO version: $PIO_VERSION"
 | |
|           echo "Tag version: $TAG_VERSION"
 | |
|           
 | |
|           if [ "$PIO_VERSION" != "$TAG_VERSION" ]; then
 | |
|             echo "Error: Version mismatch between tag ($TAG_VERSION) and platformio.ini ($PIO_VERSION)"
 | |
|             exit 1
 | |
|           fi
 | |
|       
 | |
|       - name: Read CHANGELOG.md
 | |
|         id: changelog
 | |
|         run: |
 | |
|           CHANGELOG=$(awk "/## \\[${{ steps.get_version.outputs.VERSION }}\\]/{p=1;print;next} /## \\[/{p=0} p" CHANGELOG.md)
 | |
|           echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
 | |
|           echo "$CHANGELOG" >> $GITHUB_OUTPUT
 | |
|           echo "EOF" >> $GITHUB_OUTPUT
 | |
| 
 | |
|   github-release:
 | |
|     needs: prepare
 | |
|     if: needs.prepare.outputs.provider == 'github'
 | |
|     uses: ./.github/workflows/providers/github-release.yml
 | |
|     with:
 | |
|       version: ${{ needs.prepare.outputs.version }}
 | |
|       changelog: ${{ needs.prepare.outputs.changelog }}
 | |
|     secrets: inherit
 | |
| 
 | |
|   gitea-release:
 | |
|     needs: prepare
 | |
|     if: needs.prepare.outputs.provider == 'gitea'
 | |
|     uses: ./.github/workflows/providers/gitea-release.yml
 | |
|     with:
 | |
|       version: ${{ needs.prepare.outputs.version }}
 | |
|       changelog: ${{ needs.prepare.outputs.changelog }}
 | |
|     secrets: inherit |