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<> $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