name: Release on: push: tags: - 'v*' jobs: get-version-and-changelog: runs-on: ubuntu-latest outputs: version: ${{ steps.get_version.outputs.VERSION }} changelog: ${{ steps.changelog.outputs.CHANGES }} 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 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 - 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: get-version-and-changelog 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 }} secrets: inherit gitea-release: needs: get-version-and-changelog 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