diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a268dd9..47233da 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,23 +1,26 @@ -name: Release +name: Publish Package on: push: - tags: - - 'v*' - -permissions: - contents: write - id-token: write + branches: + - main + paths: + - "packages/code-chunk/package.json" jobs: - release: - name: Release Package + publish: runs-on: ubuntu-latest + permissions: + contents: read + id-token: write steps: - - name: Checkout code + - name: Checkout uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 with: - fetch-depth: 0 + registry-url: "https://registry.npmjs.org" - name: Setup Bun uses: oven-sh/setup-bun@v2 @@ -27,24 +30,36 @@ jobs: - name: Install dependencies run: bun install --frozen-lockfile + - name: Check if version changed + id: version-check + run: | + PACKAGE_NAME=$(jq -r '.name' packages/code-chunk/package.json) + LOCAL_VERSION=$(jq -r '.version' packages/code-chunk/package.json) + NPM_VERSION=$(npm view "$PACKAGE_NAME" version 2>/dev/null || echo "0.0.0") + if [ "$LOCAL_VERSION" = "$NPM_VERSION" ]; then + echo "Version $LOCAL_VERSION already published, skipping." + echo "changed=false" >> "$GITHUB_OUTPUT" + else + echo "Publishing $LOCAL_VERSION (npm has $NPM_VERSION)" + echo "changed=true" >> "$GITHUB_OUTPUT" + fi + - name: Type check + if: steps.version-check.outputs.changed == 'true' run: bun run type-check - name: Lint + if: steps.version-check.outputs.changed == 'true' run: bun run lint - name: Build + if: steps.version-check.outputs.changed == 'true' run: bun run build - - name: Generate changelog - run: bunx changelogithub - continue-on-error: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Publish to npm - run: bun publish --access public - working-directory: packages/astchunk + - name: Publish + if: steps.version-check.outputs.changed == 'true' + run: npm publish --access public + working-directory: packages/code-chunk env: - NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_CONFIG_PROVENANCE: true + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}