Filaman/.github/workflows/release.yml

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