From ddc4318d3760291f59e2e88d2eeeed06ef064f52 Mon Sep 17 00:00:00 2001 From: xilesun <2013xile@gmail.com> Date: Wed, 25 Mar 2026 22:37:46 +0800 Subject: [PATCH] chore(ci): publish pkg registries per package --- .github/workflows/release.yml | 45 ++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 90d011a195b..8a3640674a6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,8 +61,10 @@ jobs: DIST_TAG="${{ steps.get-info.outputs.defaultTag }}" if [[ -n "$DIST_TAG" ]]; then echo "DIST_TAG_ARG=--dist-tag=$DIST_TAG" >> $GITHUB_ENV + echo "NPM_TAG_ARG=--tag=$DIST_TAG" >> $GITHUB_ENV else echo "DIST_TAG_ARG=" >> $GITHUB_ENV + echo "NPM_TAG_ARG=" >> $GITHUB_ENV fi - name: Validate v1 tag exists in all selected repos @@ -167,24 +169,33 @@ jobs: shell: bash run: | set -euo pipefail - PACKAGE_NAMES=$( + PACKAGE_JSONS=$( find packages/pro-plugins -name package.json \ -not -path '*/node_modules/*' \ -not -path 'packages/pro-plugins/package.json' \ - -exec jq -r 'select(.private != true) | .name' {} + \ + -exec jq -r 'select(.private != true) | input_filename' {} + \ | sort ) - SCOPE_ARGS=$(printf '%s\n' "$PACKAGE_NAMES" | sed '/^$/d; s/^/--scope /' | xargs) - if [[ -n "$SCOPE_ARGS" ]]; then + if [[ -n "$PACKAGE_JSONS" ]]; then echo "Packages to publish:" - printf '%s\n' "$PACKAGE_NAMES" + while IFS= read -r package_json; do + [[ -n "$package_json" ]] || continue + jq -r '.name' "$package_json" + done <<< "$PACKAGE_JSONS" echo "count=1" >> "$GITHUB_OUTPUT" - echo "args=$SCOPE_ARGS" >> "$GITHUB_OUTPUT" + { + echo 'package_jsons<> "$GITHUB_OUTPUT" else echo "No pro plugin packages to publish." echo "count=0" >> "$GITHUB_OUTPUT" - echo "args=" >> "$GITHUB_OUTPUT" + { + echo 'package_jsons<> "$GITHUB_OUTPUT" fi - name: publish pkg.nocobase.com if: ${{ steps.pro-plugin-scopes.outputs.count != '0' }} @@ -192,7 +203,15 @@ jobs: run: | git reset --hard npm config set //pkg.nocobase.com/:_authToken=${{ env.PKG_NOCOBASE_TOKEN }} - yarn release:force --no-verify-access --no-git-reset --registry https://pkg.nocobase.com $DIST_TAG_ARG ${{ steps.pro-plugin-scopes.outputs.args }} + while IFS= read -r package_json; do + [[ -n "$package_json" ]] || continue + package_dir=$(dirname "$package_json") + package_name=$(jq -r '.name' "$package_json") + echo "Publishing $package_name to pkg.nocobase.com" + npm publish "$package_dir" --registry https://pkg.nocobase.com $NPM_TAG_ARG + done <<'EOF' + ${{ steps.pro-plugin-scopes.outputs.package_jsons }} + EOF - name: publish pkg-src.nocobase.com if: ${{ steps.pro-plugin-scopes.outputs.count != '0' }} shell: bash @@ -200,7 +219,15 @@ jobs: git reset --hard bash generate-npmignore.sh ignore-src npm config set //pkg-src.nocobase.com/:_authToken=${{ env.PKG_SRC_NOCOBASE_TOKEN }} - yarn release:force --no-verify-access --no-git-reset --registry https://pkg-src.nocobase.com $DIST_TAG_ARG ${{ steps.pro-plugin-scopes.outputs.args }} + while IFS= read -r package_json; do + [[ -n "$package_json" ]] || continue + package_dir=$(dirname "$package_json") + package_name=$(jq -r '.name' "$package_json") + echo "Publishing $package_name to pkg-src.nocobase.com" + npm publish "$package_dir" --registry https://pkg-src.nocobase.com $NPM_TAG_ARG + done <<'EOF' + ${{ steps.pro-plugin-scopes.outputs.package_jsons }} + EOF push-docker: runs-on: ubuntu-latest needs: