From f6126d8b8bd2e722f07ffbab6667f882abd6ca98 Mon Sep 17 00:00:00 2001 From: Toni Soriano Date: Fri, 7 Aug 2026 12:07:51 +0200 Subject: [PATCH] Add release publishing workflow --- .github/workflows/release.yml | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e4b76da --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Publish release + +on: + push: + branches: + - main + paths: + - Packaging/Info.plist + - .github/workflows/release.yml + workflow_dispatch: + +permissions: + contents: write + +jobs: + release: + runs-on: macos-15 + + steps: + - uses: actions/checkout@v4 + + - name: Select Xcode 16.4 + run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + + - name: Read version + id: version + shell: bash + run: | + version=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' Packaging/Info.plist) + if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?$ ]]; then + echo "Invalid CFBundleShortVersionString: $version" >&2 + exit 1 + fi + echo "version=$version" >> "$GITHUB_OUTPUT" + echo "tag=v$version" >> "$GITHUB_OUTPUT" + + - name: Build app + run: ./Packaging/build-app.sh + + - name: Package app + shell: bash + run: | + asset=".build/package/NotchFlow-${{ steps.version.outputs.version }}.zip" + ditto -c -k --keepParent .build/package/NotchFlow.app "$asset" + shasum -a 256 "$asset" > "$asset.sha256" + echo "ASSET=$asset" >> "$GITHUB_ENV" + + - name: Publish release + env: + GH_TOKEN: ${{ github.token }} + TAG: ${{ steps.version.outputs.tag }} + shell: bash + run: | + if gh release view "$TAG" >/dev/null 2>&1; then + gh release upload "$TAG" "$ASSET" "$ASSET.sha256" --clobber + else + gh release create "$TAG" "$ASSET" "$ASSET.sha256" \ + --target "$GITHUB_SHA" \ + --title "NotchFlow $TAG" \ + --generate-notes + fi