diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..3496326 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,40 @@ +name: Publish Packages + +on: + release: + types: [released] + +permissions: + id-token: write # Required for OIDC + contents: read + +jobs: + publish: + runs-on: ubuntu-latest + strategy: + matrix: + adapter: ["react", "vue"] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v3 + with: + version: 10 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + registry-url: "https://registry.npmjs.org" + cache: pnpm + + # Ensure npm 11.5.1 or later is installed + - name: Update npm + run: npm install -g npm@latest + + - name: Install dependencies + run: pnpm install + + - name: "Publish ${{ matrix.adapter }} to npm" + run: cd ./packages/${{ matrix.adapter }} && pnpm run build && pnpm run release diff --git a/packages/react/package.json b/packages/react/package.json index 7060cca..ed99d67 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -41,7 +41,7 @@ "build": "vite build", "lint": "eslint --config eslint.config.mjs \"src/**/*.ts\"", "prepublish": "pnpm run build", - "release": "vitest --run && git push --follow-tags && pnpm publish", + "release": "vitest --run && npm publish", "test": "vitest", "format": "prettier --write ." }, diff --git a/release.sh b/release.sh index 6b74f53..4428c49 100755 --- a/release.sh +++ b/release.sh @@ -1,5 +1,7 @@ #!/bin/bash +$REPO="laravel/stream" + get_current_version() { local package_json=$1 if [ -f "$package_json" ]; then @@ -84,33 +86,13 @@ echo "Staging package.json files..." git add "**/package.json" echo "" -echo "Committing version changes..." -git commit -m "v$new_version" -echo "" - -echo "Creating git tag: v$new_version" -git tag "v$new_version" +git commit -m "$new_version" +git tag -a "$new_version" -m "$new_version" +git push git push --tags -echo "" - -echo "Running release process..." -echo "" - -for package_dir in packages/*; do - if [ -d "$package_dir" ]; then - echo "Releasing $package_dir" - cd $package_dir - pnpm run release - cd ../.. - echo "" - fi -done -echo "Released!" +gh release create "$new_version" --generate-notes echo "" - -echo "Release on GitHub:" -echo "https://github.com/laravel/stream/releases/tag/v$new_version" - -open "https://github.com/laravel/stream/releases/tag/v$new_version" +echo "✅ Release $new_version completed successfully, publishing kicked off in CI." +echo "🔗 https://github.com/$REPO/releases/tag/$new_version"