62
62
# Get the matrix from the matrix.json file, without the object that has the IMAGE key
63
63
export "PLATFORM_MATRIX=$(jq 'map(select(.PACKAGE_MANAGERS != null and (.PACKAGE_MANAGERS | contains(["npm"]))))' < .github/json_matrices/build-matrix.json | jq -c .)"
64
64
echo "PLATFORM_MATRIX=${PLATFORM_MATRIX}" >> $GITHUB_OUTPUT
65
-
66
- publish-rust-client :
67
- needs : [start-self-hosted-runner, load-platform-matrix]
68
- if : github.repository_owner == 'valkey-io'
69
- name : Publish Rust client to NPM
70
- runs-on : ubuntu-latest
71
- steps :
72
- - name : Checkout
73
- uses : actions/checkout@v4
74
- with :
75
- submodules : " true"
76
-
77
- - name : Setup node
78
- uses : actions/setup-node@v4
79
- with :
80
- node-version : " latest"
81
- registry-url : " https://registry.npmjs.org"
82
- scope : " ${{ vars.NPM_SCOPE }}"
83
- always-auth : true
84
-
85
- - name : Publish Rust client
86
- working-directory : ./node/rust-client
87
- run : |
88
- npm ci
89
- npm run build
90
- npm publish --access public
91
- env :
92
- NODE_AUTH_TOKEN : ${{ secrets.NPM_AUTH_TOKEN }}
93
65
94
66
publish-binaries :
95
- needs : [start-self-hosted-runner, load-platform-matrix, publish-rust-client ]
67
+ needs : [start-self-hosted-runner, load-platform-matrix]
96
68
if : github.repository_owner == 'valkey-io'
97
69
name : Publish packages to NPM
98
70
runs-on : ${{ matrix.build.RUNNER }}
@@ -147,6 +119,31 @@ jobs:
147
119
EVENT_NAME : ${{ github.event_name }}
148
120
INPUT_VERSION : ${{ github.event.inputs.version }}
149
121
122
+ - name : Set platform-specific package name
123
+ shell : bash
124
+ run : |
125
+ PLATFORM_NAME="${{ matrix.build.NAMED_OS }}${{ contains(matrix.build.TARGET, 'musl') && '-musl' || '' }}-${{ matrix.build.ARCH }}"
126
+ echo "PLATFORM_NAME=${PLATFORM_NAME}" >> $GITHUB_ENV
127
+ echo "NODE_OS=${{ matrix.build.NAMED_OS }}" >> $GITHUB_ENV
128
+ echo "NODE_ARCH=${{ matrix.build.ARCH }}" >> $GITHUB_ENV
129
+ echo "PACKAGE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV
130
+
131
+ - name : Update Rust client package.json
132
+ working-directory : ./node/rust-client
133
+ run : |
134
+ sed -i 's|\${PLATFORM_NAME}|'"${PLATFORM_NAME}"'|g' package.json
135
+ sed -i 's|\${PACKAGE_VERSION}|'"${PACKAGE_VERSION}"'|g' package.json
136
+ sed -i 's|\${NODE_OS}|'"${NODE_OS}"'|g' package.json
137
+ sed -i 's|\${NODE_ARCH}|'"${NODE_ARCH}"'|g' package.json
138
+
139
+ - name : Validate Rust client package.json
140
+ working-directory : ./node/rust-client
141
+ run : |
142
+ if ! grep -q "@valkey/glide-rs-${PLATFORM_NAME}" package.json; then
143
+ echo "Error: package.json does not contain the correct package name"
144
+ exit 1
145
+ fi
146
+
150
147
- name : Setup node
151
148
if : ${{ !contains(matrix.build.TARGET, 'musl') }}
152
149
uses : actions/setup-node@v4
@@ -206,7 +203,7 @@ jobs:
206
203
- name : Publish to NPM
207
204
if : github.event_name != 'pull_request'
208
205
shell : bash
209
- working-directory : ./node
206
+ working-directory : ./node/rust-client
210
207
run : |
211
208
npm pkg fix
212
209
set +e # Disable immediate exit on non-zero exit codes
@@ -224,7 +221,7 @@ jobs:
224
221
echo "Skipping publishing, package already published."
225
222
elif [[ ! -z "$npm_publish_err" ]]; then
226
223
echo "Failed to publish with error: $npm_publish_err"
227
- exit 1
224
+ exit 1
228
225
fi
229
226
env :
230
227
NODE_AUTH_TOKEN : ${{ secrets.NPM_AUTH_TOKEN }}
@@ -244,7 +241,7 @@ jobs:
244
241
publish-base-to-npm :
245
242
if : github.event_name != 'pull_request'
246
243
name : Publish the base NPM package
247
- needs : [publish-binaries, publish-rust-client ]
244
+ needs : [publish-binaries]
248
245
runs-on : ubuntu-latest
249
246
steps :
250
247
- name : Checkout
@@ -260,32 +257,42 @@ jobs:
260
257
scope : " ${{ vars.NPM_SCOPE }}"
261
258
always-auth : true
262
259
263
- - name : Create package.json file
260
+ - name : Update package.json and index.ts
264
261
shell : bash
265
262
working-directory : ./node/npm/glide
266
263
run : |
267
- export pkg_name=valkey-glide
268
-
269
- echo "The workflow is: ${{env.EVENT_NAME}}"
270
- if ${{ env.EVENT_NAME == 'workflow_dispatch' }}; then
271
- R_VERSION="${{ env.INPUT_VERSION }}"
264
+ # Set version
265
+ if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
266
+ R_VERSION="${{ github.event.inputs.version }}"
272
267
else
273
- R_VERSION=${GITHUB_REF:11 }
268
+ R_VERSION=${GITHUB_REF#refs/tags/v }
274
269
fi
275
270
echo "RELEASE_VERSION=${R_VERSION}" >> $GITHUB_ENV
276
271
277
- export package_version=${R_VERSION}
278
- export scope=`if [ "$NPM_SCOPE" != '' ]; then echo "$NPM_SCOPE/"; fi`
279
- mv package.json package.json.tmpl
280
- envsubst < package.json.tmpl > "package.json"
281
- cat package.json
282
- # Fix index.ts based on the scope variable
283
- sed -i "s|@scope/|${scope}|g" index.ts
284
- env :
285
- NPM_SCOPE : ${{ vars.NPM_SCOPE }}
286
- EVENT_NAME : ${{ github.event_name }}
287
- INPUT_VERSION : ${{ github.event.inputs.version }}
288
-
272
+ # Update package.json
273
+ jq '.version = env.RELEASE_VERSION | .name = "@valkey/valkey-glide" | .optionalDependencies = {
274
+ "@valkey/glide-rs-linux-x64": env.RELEASE_VERSION,
275
+ "@valkey/glide-rs-linux-arm64": env.RELEASE_VERSION,
276
+ "@valkey/glide-rs-darwin-x64": env.RELEASE_VERSION,
277
+ "@valkey/glide-rs-darwin-arm64": env.RELEASE_VERSION,
278
+ "@valkey/glide-rs-linux-musl-x64": env.RELEASE_VERSION,
279
+ "@valkey/glide-rs-linux-musl-arm64": env.RELEASE_VERSION
280
+ }' package.json > temp.json && mv temp.json package.json
281
+
282
+ # Update index.ts
283
+ sed -i 's/@scope\/valkey-glide/@valkey\/glide-rs/g' index.ts
284
+
285
+ - name : Validate base package.json and index.ts
286
+ working-directory : ./node/npm/glide
287
+ run : |
288
+ if ! grep -q '"@valkey/valkey-glide"' package.json; then
289
+ echo "Error: package.json does not contain the correct package name"
290
+ exit 1
291
+ fi
292
+ if ! grep -q '@valkey/glide-rs' index.ts; then
293
+ echo "Error: index.ts does not contain the correct import statements"
294
+ exit 1
295
+ fi
289
296
- name : Build Node wrapper
290
297
uses : ./.github/workflows/build-node-wrapper
291
298
with :
@@ -299,12 +306,11 @@ jobs:
299
306
if [[ ${{ env.RELEASE_VERSION }} == *"rc"* ]]
300
307
then
301
308
echo "This is a release candidate"
302
- export npm_tag=" next"
309
+ echo "NPM_TAG= next" >> $GITHUB_ENV
303
310
else
304
311
echo "This is a stable release"
305
- export npm_tag=" latest"
312
+ echo "NPM_TAG= latest" >> $GITHUB_ENV
306
313
fi
307
- echo "NPM_TAG=${npm_tag}" >> $GITHUB_ENV
308
314
309
315
- name : Publish the base package
310
316
if : github.event_name != 'pull_request'
@@ -406,7 +412,7 @@ jobs:
406
412
working-directory : ./utils/release-candidate-testing/node
407
413
run : |
408
414
npm install
409
- npm install --no-save @valkey/valkey-glide@${{ env.NPM_TAG }} @valkey/glide-rs@${{ env.NPM_TAG }}
415
+ npm install --no-save @valkey/valkey-glide@${{ env.NPM_TAG }}
410
416
npm run test
411
417
412
418
- name : Deprecating packages on failure
@@ -445,14 +451,12 @@ jobs:
445
451
446
452
# Deprecating base package
447
453
npm deprecate "@valkey/valkey-glide@${RELEASE_VERSION}" "This version has been deprecated" --force || true
448
- # Deprecating Rust client package
449
- npm deprecate "@valkey/glide-rs@${RELEASE_VERSION}" "This version has been deprecated" --force || true
450
454
451
455
# Process platform matrix
452
456
echo "${PLATFORM_MATRIX}" > platform_matrix.json
453
457
454
458
while read -r pkg; do
455
- package_name="@valkey/valkey- glide-${pkg}"
459
+ package_name="@valkey/glide-rs -${pkg}"
456
460
echo "Deprecating ${package_name}@${RELEASE_VERSION}"
457
461
npm deprecate "${package_name}@${RELEASE_VERSION}" "This version has been deprecated" --force || true
458
462
done < <(jq -r '.[] | "\(.NAMED_OS)\(.TARGET | test("musl") | if . then "-musl" else "" end)-\(.ARCH)"' platform_matrix.json)
0 commit comments