From c033872de19bb0a3e39f14fbcfd50519093b4a1e Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Thu, 21 Aug 2025 00:37:34 +0530 Subject: [PATCH] fix: gh actions --- .github/workflows/release.yaml | 41 ++++++++++++++++++++++++++++++---- scripts/bump-version.ts | 3 +-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d152f7d..f2bbc55 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -2,42 +2,75 @@ name: Release permissions: contents: write + pull-requests: write + id-token: write on: push: - tags: - - 'v*' + branches: + - main jobs: release: runs-on: ubuntu-latest + if: startsWith(github.event.head_commit.message, 'chore(release):') steps: - name: Checkout Code uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Extract version from commit message + id: version + run: | + VERSION=$(echo "${{ github.event.head_commit.message }}" | sed -E 's/^chore\(release\): //') + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Create and push tag + if: steps.version.outputs.version != '' + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + # Check if tag exists before creating + if ! git rev-parse "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then + git tag -a "v${{ steps.version.outputs.version }}" -m "Release v${{ steps.version.outputs.version }}" + git push --tags + else + echo "Tag v${{ steps.version.outputs.version }} already exists, skipping creation" + fi + - name: Setup Bun uses: oven-sh/setup-bun@v2 + if: steps.version.outputs.version != '' with: bun-version: latest - name: Install Dependencies + if: steps.version.outputs.version != '' run: bun install --frozen-lockfile - name: Build CLI + if: steps.version.outputs.version != '' run: bun run build:cli env: BTS_TELEMETRY: 1 POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} - - name: Generate Changelog - run: bun run release + - name: Create GitHub Release + if: steps.version.outputs.version != '' + run: | + # Check if release exists before creating + if ! gh release view "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then + bunx changelogithub + else + echo "Release v${{ steps.version.outputs.version }} already exists, skipping creation" + fi env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish CLI to NPM + if: steps.version.outputs.version != '' run: cd apps/cli && bun publish --access public env: NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/scripts/bump-version.ts b/scripts/bump-version.ts index 961c23d..8977ca4 100644 --- a/scripts/bump-version.ts +++ b/scripts/bump-version.ts @@ -85,8 +85,7 @@ async function main(): Promise { await $`bun run build:cli`; await $`git add apps/cli/package.json bun.lock`; await $`git commit -m "chore(release): ${newVersion}"`; - await $`git tag v${newVersion}`; - await $`git push origin v${newVersion}`; + await $`git push origin main`; console.log(`✅ Released v${newVersion}`); }