diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f913297f2..a47111a7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,9 @@ jobs: os: [macos-latest, ubuntu-latest, windows-latest] node-version: ['18.20.5', '20.11.1', '22.11.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4.2.2 + with: + fetch-depth: 0 - uses: pnpm/action-setup@v4.0.0 @@ -51,6 +53,6 @@ jobs: - name: Run e2e tests run: pnpm test:e2e - - name: Publish previews + - name: Publish preview packages if: matrix.node-version == '22.11.0' && matrix.os == 'ubuntu-latest' - run: pnpx pkg-pr-new publish --pnpm './packages/*' + run: ./scripts/publish-preview-packages.sh ${{ github.event.pull_request.base.ref }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 31ff85d66..c8b204e1a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -26,7 +26,7 @@ jobs: language: [javascript] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4.2.2 - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 84e782839..536280400 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -19,7 +19,7 @@ jobs: name: Upload runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4.2.2 - uses: pnpm/action-setup@v4.0.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d448ce926..c6771c973 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4.2.2 - uses: pnpm/action-setup@v4.0.0 diff --git a/scripts/publish-preview-packages.sh b/scripts/publish-preview-packages.sh new file mode 100755 index 000000000..bcd2d7954 --- /dev/null +++ b/scripts/publish-preview-packages.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +if [ -z "$1" ]; then + echo "Error: Base branch not specified. Usage: publish-previews.sh " + exit 1 +fi + +BASE_BRANCH=$1 + +# ensure we have the latest changes from the remote +git fetch origin + +if ! git show-ref --verify --quiet refs/remotes/origin/"$BASE_BRANCH"; then + echo "Error: Base branch '$BASE_BRANCH' not found in the remote repository." + exit 1 +fi + +echo "Detecting changed packages compared to $BASE_BRANCH..." +CHANGED_PACKAGES=$(git diff --name-only origin/"$BASE_BRANCH"...HEAD | grep '^packages/' | cut -d '/' -f 2 | sort -u) + +if [ -z "$CHANGED_PACKAGES" ]; then + echo "No changed packages detected." + exit 0 +fi + +PACKAGE_PATHS=$(echo "$CHANGED_PACKAGES" | awk '{printf "./packages/%s ", $1}' | sed 's/ $//') + +echo "Publishing changed packages: $PACKAGE_PATHS" +pnpx pkg-pr-new publish --pnpm $PACKAGE_PATHS