@unisphere/nx 4.15.0 → 4.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/migrations/4-15-1/templates/_publish-artifacts.template +363 -0
- package/dist/migrations/4-15-1/templates/cicd.template +90 -0
- package/dist/migrations/4-15-1/templates/documentation-workflow.template +68 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.d.ts +17 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.d.ts.map +1 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.js +80 -0
- package/migrations.json +71 -0
- package/package.json +1 -1
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
name: Shared Deployment Jobs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
check-elements:
|
|
8
|
+
runs-on:
|
|
9
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
10
|
+
- instance-size:small
|
|
11
|
+
outputs:
|
|
12
|
+
has_packages: ${{ steps.check.outputs.has_packages }}
|
|
13
|
+
has_runtimes: ${{ steps.check.outputs.has_runtimes }}
|
|
14
|
+
has_applications: ${{ steps.check.outputs.has_applications }}
|
|
15
|
+
steps:
|
|
16
|
+
|
|
17
|
+
- name: Checkout Repo
|
|
18
|
+
uses: actions/checkout@v5
|
|
19
|
+
with:
|
|
20
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
21
|
+
fetch-tags: true
|
|
22
|
+
|
|
23
|
+
- name: Check elements in .unisphere
|
|
24
|
+
id: check
|
|
25
|
+
run: |
|
|
26
|
+
if [ -f .unisphere ]; then
|
|
27
|
+
PACKAGES=$(jq -r '.elements.packages // {} | length' .unisphere)
|
|
28
|
+
RUNTIMES=$(jq -r '(.elements.runtimes // {} | length) + (.elements.workspace // {} | length) + (.elements.loader // {} | length)' .unisphere)
|
|
29
|
+
APPLICATIONS=$(jq -r '.elements.applications // {} | length' .unisphere)
|
|
30
|
+
|
|
31
|
+
if [ "$PACKAGES" -gt 0 ]; then
|
|
32
|
+
echo "has_packages=true" >> $GITHUB_OUTPUT
|
|
33
|
+
else
|
|
34
|
+
echo "has_packages=false" >> $GITHUB_OUTPUT
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
if [ "$RUNTIMES" -gt 0 ]; then
|
|
38
|
+
echo "has_runtimes=true" >> $GITHUB_OUTPUT
|
|
39
|
+
else
|
|
40
|
+
echo "has_runtimes=false" >> $GITHUB_OUTPUT
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
if [ "$APPLICATIONS" -gt 0 ]; then
|
|
44
|
+
echo "has_applications=true" >> $GITHUB_OUTPUT
|
|
45
|
+
else
|
|
46
|
+
echo "has_applications=false" >> $GITHUB_OUTPUT
|
|
47
|
+
fi
|
|
48
|
+
else
|
|
49
|
+
echo "has_packages=false" >> $GITHUB_OUTPUT
|
|
50
|
+
echo "has_runtimes=false" >> $GITHUB_OUTPUT
|
|
51
|
+
echo "has_applications=false" >> $GITHUB_OUTPUT
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
prepare-runtimes:
|
|
55
|
+
runs-on:
|
|
56
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
57
|
+
- instance-size:medium
|
|
58
|
+
|
|
59
|
+
if: needs.check-elements.outputs.has_runtimes == 'true'
|
|
60
|
+
needs: check-elements
|
|
61
|
+
outputs:
|
|
62
|
+
unisphereElementsArtifactsFolder: ${{ steps.prepare-runtimes.outputs.artifactsRootFolder }}
|
|
63
|
+
hasArtifacts: ${{ steps.prepare-runtimes.outputs.hasArtifacts }}
|
|
64
|
+
commit_sha: ${{ steps.capture_commit_sha.outputs.commit_sha }}
|
|
65
|
+
steps:
|
|
66
|
+
- name: Cache npm
|
|
67
|
+
uses: actions/cache@v5
|
|
68
|
+
with:
|
|
69
|
+
path: ~/.npm
|
|
70
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
71
|
+
restore-keys: |
|
|
72
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
73
|
+
|
|
74
|
+
- name: Checkout Repo
|
|
75
|
+
uses: actions/checkout@v5
|
|
76
|
+
with:
|
|
77
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
78
|
+
fetch-tags: true
|
|
79
|
+
- name: Setup Node.js
|
|
80
|
+
uses: actions/setup-node@v5
|
|
81
|
+
with:
|
|
82
|
+
node-version-file: '.nvmrc'
|
|
83
|
+
- name: Clean workspace
|
|
84
|
+
run: git reset --hard HEAD
|
|
85
|
+
- name: Clean npm cache
|
|
86
|
+
run: npm cache clean --force
|
|
87
|
+
|
|
88
|
+
- name: Setup JFrog
|
|
89
|
+
|
|
90
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
91
|
+
id: setup-jfrog
|
|
92
|
+
env:
|
|
93
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
94
|
+
with:
|
|
95
|
+
oidc-provider-name: ovp-github-oidc
|
|
96
|
+
- name: Install dependencies
|
|
97
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
98
|
+
env:
|
|
99
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
100
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
101
|
+
|
|
102
|
+
- name: Prepare Unisphere Elements
|
|
103
|
+
id: prepare-runtimes
|
|
104
|
+
run: npx unisphere runtime publish prepare --verbose
|
|
105
|
+
- name: Capture Commit SHA
|
|
106
|
+
id: capture_commit_sha
|
|
107
|
+
run: echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
|
108
|
+
- name: Set commit_sha as output
|
|
109
|
+
id: set_commit_sha
|
|
110
|
+
run: echo "commit_sha=${{ env.commit_sha }}" >> $GITHUB_OUTPUT
|
|
111
|
+
- uses: actions/upload-artifact@v6
|
|
112
|
+
id: upload-unisphere-elements-artifacts
|
|
113
|
+
with:
|
|
114
|
+
name: unisphere-elements
|
|
115
|
+
path: ${{ steps.prepare-runtimes.outputs.artifactsRootFolder }}
|
|
116
|
+
retention-days: 1
|
|
117
|
+
|
|
118
|
+
deploy-packages:
|
|
119
|
+
if: needs.check-elements.outputs.has_packages == 'true'
|
|
120
|
+
needs: check-elements
|
|
121
|
+
runs-on:
|
|
122
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
123
|
+
- instance-size:medium
|
|
124
|
+
steps:
|
|
125
|
+
- name: Cache npm
|
|
126
|
+
uses: actions/cache@v5
|
|
127
|
+
with:
|
|
128
|
+
path: ~/.npm
|
|
129
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
130
|
+
restore-keys: |
|
|
131
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
132
|
+
|
|
133
|
+
- name: Checkout Repo
|
|
134
|
+
uses: actions/checkout@v5
|
|
135
|
+
with:
|
|
136
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
137
|
+
fetch-tags: true
|
|
138
|
+
- name: Setup Node.js
|
|
139
|
+
uses: actions/setup-node@v5
|
|
140
|
+
with:
|
|
141
|
+
node-version-file: '.nvmrc'
|
|
142
|
+
|
|
143
|
+
- name: Setup JFrog
|
|
144
|
+
|
|
145
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
146
|
+
id: setup-jfrog
|
|
147
|
+
env:
|
|
148
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
149
|
+
with:
|
|
150
|
+
oidc-provider-name: ovp-github-oidc
|
|
151
|
+
|
|
152
|
+
- name: Install dependencies
|
|
153
|
+
|
|
154
|
+
run: |
|
|
155
|
+
npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
156
|
+
|
|
157
|
+
env:
|
|
158
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
159
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
160
|
+
|
|
161
|
+
- name: Get NPM Token from AWS Secrets Manager
|
|
162
|
+
id: get-npm-token
|
|
163
|
+
run: |
|
|
164
|
+
NPM_TOKEN=$(aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:eu-central-1:785328604905:secret:unisphere-secrets-um86Cs --query SecretString --output text | jq -r '."NPM_UNISPHERE_TOKEN"')
|
|
165
|
+
echo "NPM_TOKEN=$NPM_TOKEN" >> $GITHUB_ENV
|
|
166
|
+
# Debug token existence (safely)
|
|
167
|
+
echo "::debug::Token exists: $([ ! -z "$NPM_TOKEN" ] && echo 'true' || echo 'false')"
|
|
168
|
+
- name: Deploy to registry
|
|
169
|
+
run: npx unisphere package publish --verbose --jfrogToken ${{ steps.setup-jfrog.outputs.oidc-token }} --jfrogUser ${{ steps.setup-jfrog.outputs.oidc-user }} --npmToken ${{ env.NPM_TOKEN }} --branch "${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}"
|
|
170
|
+
|
|
171
|
+
deploy-runtimes:
|
|
172
|
+
if: needs.prepare-runtimes.outputs.hasArtifacts == 'true'
|
|
173
|
+
needs: prepare-runtimes
|
|
174
|
+
runs-on:
|
|
175
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
176
|
+
- instance-size:medium
|
|
177
|
+
strategy:
|
|
178
|
+
matrix:
|
|
179
|
+
envs_regions:
|
|
180
|
+
- { env: 'nvp1', region: 'us-east-1', accountid: '583352821080' }
|
|
181
|
+
- { env: 'frp2', region: 'eu-central-1', accountid: '082111255551' }
|
|
182
|
+
- { env: 'irp2', region: 'eu-west-1', accountid: '137576761235' }
|
|
183
|
+
- { env: 'nvq2', region: 'us-east-1', accountid: '383697330906' }
|
|
184
|
+
- { env: 'sgp2', region: 'ap-southeast-1', accountid: '882351240370' }
|
|
185
|
+
- { env: 'syp2', region: 'ap-southeast-2', accountid: '650755435642' }
|
|
186
|
+
- { env: 'cap2', region: 'ca-central-1', accountid: '948632009361' }
|
|
187
|
+
fail-fast: false
|
|
188
|
+
|
|
189
|
+
steps:
|
|
190
|
+
- name: Cache npm
|
|
191
|
+
uses: actions/cache@v5
|
|
192
|
+
with:
|
|
193
|
+
path: ~/.npm
|
|
194
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
195
|
+
restore-keys: |
|
|
196
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
197
|
+
|
|
198
|
+
- name: Check available disk space
|
|
199
|
+
run: df -h
|
|
200
|
+
- name: Checkout Repo at specific commit
|
|
201
|
+
uses: actions/checkout@v5
|
|
202
|
+
with:
|
|
203
|
+
ref: ${{ needs.prepare-runtimes.outputs.commit_sha }}
|
|
204
|
+
fetch-tags: true
|
|
205
|
+
- name: Setup Node.js
|
|
206
|
+
uses: actions/setup-node@v5
|
|
207
|
+
with:
|
|
208
|
+
node-version-file: '.nvmrc'
|
|
209
|
+
|
|
210
|
+
- name: Setup JFrog
|
|
211
|
+
|
|
212
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
213
|
+
id: setup-jfrog
|
|
214
|
+
env:
|
|
215
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
216
|
+
with:
|
|
217
|
+
oidc-provider-name: ovp-github-oidc
|
|
218
|
+
|
|
219
|
+
- name: Install dependencies
|
|
220
|
+
|
|
221
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
222
|
+
env:
|
|
223
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
224
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
225
|
+
|
|
226
|
+
- name: Download artifacts folder
|
|
227
|
+
uses: actions/download-artifact@v7
|
|
228
|
+
with:
|
|
229
|
+
name: unisphere-elements
|
|
230
|
+
path: ${{ needs.prepare-runtimes.outputs.unisphereElementsArtifactsFolder }}
|
|
231
|
+
- name: Sync S3 bucket
|
|
232
|
+
run: |
|
|
233
|
+
npx unisphere runtime publish execute \
|
|
234
|
+
--env ${{ matrix.envs_regions.env }} \
|
|
235
|
+
--aws-region '${{ matrix.envs_regions.region }}' \
|
|
236
|
+
--aws-arn 'arn:aws:iam::${{matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role' \
|
|
237
|
+
--artifacts-folder '${{ needs.prepare-runtimes.outputs.unisphereElementsArtifactsFolder }}' \
|
|
238
|
+
--verbose
|
|
239
|
+
|
|
240
|
+
prepare-applications:
|
|
241
|
+
if: always() && needs.check-elements.outputs.has_applications == 'true'
|
|
242
|
+
needs: [deploy-runtimes, check-elements]
|
|
243
|
+
runs-on:
|
|
244
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
245
|
+
- instance-size:medium
|
|
246
|
+
outputs:
|
|
247
|
+
unisphereApplicationsArtifactsFolder: ${{ steps.prepare-applications.outputs.artifactsRootFolder }}
|
|
248
|
+
hasArtifacts: ${{ steps.prepare-applications.outputs.hasArtifacts }}
|
|
249
|
+
commit_sha: ${{ steps.capture_commit_sha.outputs.commit_sha }}
|
|
250
|
+
steps:
|
|
251
|
+
- name: Cache npm
|
|
252
|
+
uses: actions/cache@v5
|
|
253
|
+
with:
|
|
254
|
+
path: ~/.npm
|
|
255
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
256
|
+
restore-keys: |
|
|
257
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
258
|
+
|
|
259
|
+
- name: Checkout Repo
|
|
260
|
+
uses: actions/checkout@v5
|
|
261
|
+
with:
|
|
262
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
263
|
+
fetch-tags: true
|
|
264
|
+
- name: Setup Node.js
|
|
265
|
+
uses: actions/setup-node@v5
|
|
266
|
+
with:
|
|
267
|
+
node-version-file: '.nvmrc'
|
|
268
|
+
- name: Clean workspace
|
|
269
|
+
run: git reset --hard HEAD
|
|
270
|
+
- name: Clean npm cache
|
|
271
|
+
run: npm cache clean --force
|
|
272
|
+
- name: Setup JFrog
|
|
273
|
+
|
|
274
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
275
|
+
id: setup-jfrog
|
|
276
|
+
env:
|
|
277
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
278
|
+
with:
|
|
279
|
+
oidc-provider-name: ovp-github-oidc
|
|
280
|
+
- name: Install dependencies
|
|
281
|
+
|
|
282
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
283
|
+
env:
|
|
284
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
285
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
286
|
+
- name: Prepare Unisphere Applications
|
|
287
|
+
id: prepare-applications
|
|
288
|
+
run: npx unisphere application publish prepare --verbose
|
|
289
|
+
- name: Capture Commit SHA
|
|
290
|
+
id: capture_commit_sha
|
|
291
|
+
run: echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
|
292
|
+
- name: Set commit_sha as output
|
|
293
|
+
id: set_commit_sha
|
|
294
|
+
run: echo "commit_sha=${{ env.commit_sha }}" >> $GITHUB_OUTPUT
|
|
295
|
+
- uses: actions/upload-artifact@v6
|
|
296
|
+
id: upload-unisphere-applications-artifacts
|
|
297
|
+
with:
|
|
298
|
+
name: unisphere-applications
|
|
299
|
+
path: ${{ steps.prepare-applications.outputs.artifactsRootFolder }}
|
|
300
|
+
retention-days: 1
|
|
301
|
+
|
|
302
|
+
deploy-applications:
|
|
303
|
+
if: always() && needs.prepare-applications.outputs.hasArtifacts == 'true'
|
|
304
|
+
needs: [prepare-applications]
|
|
305
|
+
runs-on:
|
|
306
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
307
|
+
- instance-size:medium
|
|
308
|
+
strategy:
|
|
309
|
+
matrix:
|
|
310
|
+
envs_regions:
|
|
311
|
+
- { env: 'nvp1', region: 'us-east-1', accountid: '583352821080' }
|
|
312
|
+
- { env: 'frp2', region: 'eu-central-1', accountid: '082111255551' }
|
|
313
|
+
- { env: 'irp2', region: 'eu-west-1', accountid: '137576761235' }
|
|
314
|
+
- { env: 'nvq2', region: 'us-east-1', accountid: '383697330906' }
|
|
315
|
+
- { env: 'sgp2', region: 'ap-southeast-1', accountid: '882351240370' }
|
|
316
|
+
- { env: 'syp2', region: 'ap-southeast-2', accountid: '650755435642' }
|
|
317
|
+
- { env: 'cap2', region: 'ca-central-1', accountid: '948632009361' }
|
|
318
|
+
fail-fast: false
|
|
319
|
+
steps:
|
|
320
|
+
- name: Cache npm
|
|
321
|
+
uses: actions/cache@v5
|
|
322
|
+
with:
|
|
323
|
+
path: ~/.npm
|
|
324
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
325
|
+
restore-keys: |
|
|
326
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
327
|
+
|
|
328
|
+
- name: Checkout Repo at specific commit
|
|
329
|
+
uses: actions/checkout@v5
|
|
330
|
+
with:
|
|
331
|
+
ref: ${{ needs.prepare-applications.outputs.commit_sha }}
|
|
332
|
+
fetch-tags: true
|
|
333
|
+
- name: Setup Node.js
|
|
334
|
+
uses: actions/setup-node@v5
|
|
335
|
+
with:
|
|
336
|
+
node-version-file: '.nvmrc'
|
|
337
|
+
- name: Setup JFrog
|
|
338
|
+
|
|
339
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
340
|
+
id: setup-jfrog
|
|
341
|
+
env:
|
|
342
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
343
|
+
with:
|
|
344
|
+
oidc-provider-name: ovp-github-oidc
|
|
345
|
+
- name: Install dependencies
|
|
346
|
+
|
|
347
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
348
|
+
env:
|
|
349
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
350
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
351
|
+
- name: Download artifacts folder
|
|
352
|
+
uses: actions/download-artifact@v7
|
|
353
|
+
with:
|
|
354
|
+
name: unisphere-applications
|
|
355
|
+
path: ${{ needs.prepare-applications.outputs.unisphereApplicationsArtifactsFolder }}
|
|
356
|
+
- name: Sync S3 bucket
|
|
357
|
+
run: |
|
|
358
|
+
npx unisphere application publish execute \
|
|
359
|
+
--env ${{ matrix.envs_regions.env }} \
|
|
360
|
+
--aws-region '${{ matrix.envs_regions.region }}' \
|
|
361
|
+
--aws-arn 'arn:aws:iam::${{matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role' \
|
|
362
|
+
--artifacts-folder '${{ needs.prepare-applications.outputs.unisphereApplicationsArtifactsFolder }}' \
|
|
363
|
+
--verbose
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- 'prerelease/**'
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
id-token: write
|
|
11
|
+
contents: write
|
|
12
|
+
packages: write
|
|
13
|
+
pull-requests: write
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
release:
|
|
17
|
+
name: Release
|
|
18
|
+
runs-on:
|
|
19
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.attempt }}
|
|
20
|
+
- instance-size:medium
|
|
21
|
+
outputs:
|
|
22
|
+
hasChangesets: ${{ steps.changesets.outputs.hasChangesets }}
|
|
23
|
+
steps:
|
|
24
|
+
|
|
25
|
+
- name: Checkout Repo
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
- name: Check if part of prerelease or official release
|
|
29
|
+
id: check
|
|
30
|
+
run: |
|
|
31
|
+
if [ "${{ github.ref }}" = "refs/heads/main" ] && [ -f ".changeset/pre.json" ]; then
|
|
32
|
+
echo "main branch should not have pre.json file, skipping job"
|
|
33
|
+
exit 1
|
|
34
|
+
elif [[ "${{ github.ref }}" == "refs/heads/prerelease/"* ]] && [ ! -f ".changeset/pre.json" ]; then
|
|
35
|
+
echo "prerelease branch must have pre.json file, skipping job"
|
|
36
|
+
exit 1
|
|
37
|
+
elif [ "${{ github.ref }}" != "refs/heads/main" ] && [[ "${{ github.ref }}" != "refs/heads/prerelease/"* ]]; then
|
|
38
|
+
echo "not part of prerelease or official release, skipping job"
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
- name: Setup Node.js
|
|
43
|
+
uses: actions/setup-node@v5
|
|
44
|
+
with:
|
|
45
|
+
node-version-file: '.nvmrc'
|
|
46
|
+
cache: npm
|
|
47
|
+
cache-dependency-path: package-lock.json
|
|
48
|
+
|
|
49
|
+
- name: Pre-CICD Checks
|
|
50
|
+
uses: kaltura/unisphere-core/.github/actions/pre-cicd@main
|
|
51
|
+
with:
|
|
52
|
+
repo-path: '${{ github.workspace }}'
|
|
53
|
+
|
|
54
|
+
- name: Setup JFrog
|
|
55
|
+
|
|
56
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
57
|
+
id: setup-jfrog
|
|
58
|
+
env:
|
|
59
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
60
|
+
with:
|
|
61
|
+
oidc-provider-name: ovp-github-oidc
|
|
62
|
+
|
|
63
|
+
- name: Install Dependencies
|
|
64
|
+
run: npm ci --prefer-offline --include=optional --no-fund
|
|
65
|
+
env:
|
|
66
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
67
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# - name: Security Audit
|
|
71
|
+
# run: npx unisphere tools audit
|
|
72
|
+
# env:
|
|
73
|
+
# KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
74
|
+
|
|
75
|
+
- name: Create Release Pull Request or Publish to npm
|
|
76
|
+
id: changesets
|
|
77
|
+
uses: changesets/action@v1
|
|
78
|
+
env:
|
|
79
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
80
|
+
|
|
81
|
+
- name: Create release tags
|
|
82
|
+
if: steps.changesets.outputs.hasChangesets == 'false'
|
|
83
|
+
run: |
|
|
84
|
+
npx changeset tag
|
|
85
|
+
git push --follow-tags
|
|
86
|
+
|
|
87
|
+
publish-artifacts:
|
|
88
|
+
needs: release
|
|
89
|
+
if: needs.release.outputs.hasChangesets == 'false'
|
|
90
|
+
uses: ./.github/workflows/_publish-artifacts.yml
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Documentations
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
id-token: write
|
|
8
|
+
contents: write
|
|
9
|
+
packages: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deploy-to-aws:
|
|
13
|
+
runs-on:
|
|
14
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.attempt }}
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
envs_regions:
|
|
18
|
+
- env: nvp1
|
|
19
|
+
accountid: "583352821080"
|
|
20
|
+
region: us-east-1
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout Repo at specific commit
|
|
24
|
+
uses: actions/checkout@v5
|
|
25
|
+
|
|
26
|
+
- name: Setup Node.js
|
|
27
|
+
uses: actions/setup-node@v5
|
|
28
|
+
with:
|
|
29
|
+
node-version: 24
|
|
30
|
+
|
|
31
|
+
- name: Setup JFrog
|
|
32
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
33
|
+
id: setup-jfrog
|
|
34
|
+
env:
|
|
35
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
36
|
+
with:
|
|
37
|
+
oidc-provider-name: ovp-github-oidc
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: cd unisphere/documentation/__EXPERIENCE_NAME__ && npm ci --include=optional --ignore-scripts
|
|
41
|
+
env:
|
|
42
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
43
|
+
|
|
44
|
+
- name: Build documentation
|
|
45
|
+
run: cd unisphere/documentation/__EXPERIENCE_NAME__ && npm run build
|
|
46
|
+
env:
|
|
47
|
+
DOCUSAURUS_URL: 'https://docs.kaltura.ai/'
|
|
48
|
+
DOCUSAURUS_BASE_URL: '/__EXPERIENCE_NAME__/'
|
|
49
|
+
|
|
50
|
+
- name: Configure AWS credentials
|
|
51
|
+
run: |
|
|
52
|
+
aws sts assume-role \
|
|
53
|
+
--role-arn arn:aws:iam::${{ matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role \
|
|
54
|
+
--role-session-name github-actions-deployment \
|
|
55
|
+
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
|
|
56
|
+
--output text | \
|
|
57
|
+
while read access_key secret_key session_token; do
|
|
58
|
+
echo "AWS_ACCESS_KEY_ID=$access_key" >> $GITHUB_ENV
|
|
59
|
+
echo "AWS_SECRET_ACCESS_KEY=$secret_key" >> $GITHUB_ENV
|
|
60
|
+
echo "AWS_SESSION_TOKEN=$session_token" >> $GITHUB_ENV
|
|
61
|
+
done
|
|
62
|
+
echo "AWS_DEFAULT_REGION=${{ matrix.envs_regions.region }}" >> $GITHUB_ENV
|
|
63
|
+
|
|
64
|
+
- name: Sync dist/documentations to S3
|
|
65
|
+
run: |
|
|
66
|
+
aws s3 sync unisphere/documentation/__EXPERIENCE_NAME__/build s3://nvp1-kaltura-documentation/__EXPERIENCE_NAME__ \
|
|
67
|
+
--region ${{ matrix.envs_regions.region }} \
|
|
68
|
+
--delete
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration: Upgrade GitHub Actions to Node 24-compatible versions
|
|
3
|
+
*
|
|
4
|
+
* Replaces all GitHub workflow files with updated versions that use
|
|
5
|
+
* Node 24-compatible action versions to resolve the Node 20 deprecation warning.
|
|
6
|
+
*
|
|
7
|
+
* Action upgrades:
|
|
8
|
+
* - actions/checkout: v4 → v5
|
|
9
|
+
* - actions/setup-node: v4 → v5
|
|
10
|
+
* - actions/cache: v3 → v5
|
|
11
|
+
* - actions/upload-artifact: v4 → v6
|
|
12
|
+
* - actions/download-artifact: v4 → v7
|
|
13
|
+
* - jfrog/setup-jfrog-cli: v4 → v5
|
|
14
|
+
*/
|
|
15
|
+
import { Tree } from '@nx/devkit';
|
|
16
|
+
export default function update(tree: Tree): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=upgrade-github-actions-node24.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-github-actions-node24.d.ts","sourceRoot":"","sources":["../../../src/migrations/4-15-1/upgrade-github-actions-node24.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAWpD,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration: Upgrade GitHub Actions to Node 24-compatible versions
|
|
4
|
+
*
|
|
5
|
+
* Replaces all GitHub workflow files with updated versions that use
|
|
6
|
+
* Node 24-compatible action versions to resolve the Node 20 deprecation warning.
|
|
7
|
+
*
|
|
8
|
+
* Action upgrades:
|
|
9
|
+
* - actions/checkout: v4 → v5
|
|
10
|
+
* - actions/setup-node: v4 → v5
|
|
11
|
+
* - actions/cache: v3 → v5
|
|
12
|
+
* - actions/upload-artifact: v4 → v6
|
|
13
|
+
* - actions/download-artifact: v4 → v7
|
|
14
|
+
* - jfrog/setup-jfrog-cli: v4 → v5
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.default = update;
|
|
18
|
+
const devkit_1 = require("@nx/devkit");
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const path_1 = require("path");
|
|
21
|
+
async function update(tree) {
|
|
22
|
+
devkit_1.logger.info('🔄 Upgrading GitHub Actions to Node 24-compatible versions...');
|
|
23
|
+
// Ensure .github/workflows directory exists
|
|
24
|
+
if (!tree.exists('.github')) {
|
|
25
|
+
tree.write('.github/.gitkeep', '');
|
|
26
|
+
}
|
|
27
|
+
if (!tree.exists('.github/workflows')) {
|
|
28
|
+
tree.write('.github/workflows/.gitkeep', '');
|
|
29
|
+
}
|
|
30
|
+
// Update cicd.yml
|
|
31
|
+
try {
|
|
32
|
+
const cicdPath = '.github/workflows/cicd.yml';
|
|
33
|
+
const cicdTemplatePath = (0, path_1.join)(__dirname, 'templates', 'cicd.template');
|
|
34
|
+
const cicdContent = (0, fs_1.readFileSync)(cicdTemplatePath, 'utf-8');
|
|
35
|
+
tree.write(cicdPath, cicdContent);
|
|
36
|
+
devkit_1.logger.info('✅ Updated .github/workflows/cicd.yml');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
devkit_1.logger.error(`❌ Failed to update cicd.yml: ${error?.message || 'Unknown error'}`);
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
// Update _publish-artifacts.yml
|
|
43
|
+
try {
|
|
44
|
+
const publishPath = '.github/workflows/_publish-artifacts.yml';
|
|
45
|
+
const publishTemplatePath = (0, path_1.join)(__dirname, 'templates', '_publish-artifacts.template');
|
|
46
|
+
const publishContent = (0, fs_1.readFileSync)(publishTemplatePath, 'utf-8');
|
|
47
|
+
tree.write(publishPath, publishContent);
|
|
48
|
+
devkit_1.logger.info('✅ Updated .github/workflows/_publish-artifacts.yml');
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
devkit_1.logger.error(`❌ Failed to update _publish-artifacts.yml: ${error?.message || 'Unknown error'}`);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
// Update documentation.yml (only if documentation elements exist)
|
|
55
|
+
try {
|
|
56
|
+
if (tree.exists('.unisphere')) {
|
|
57
|
+
const config = (0, devkit_1.readJson)(tree, '.unisphere');
|
|
58
|
+
const experienceName = config.name;
|
|
59
|
+
if (experienceName && config.elements?.documentation && Object.keys(config.elements.documentation).length > 0) {
|
|
60
|
+
const docPath = '.github/workflows/documentation.yml';
|
|
61
|
+
const docTemplatePath = (0, path_1.join)(__dirname, 'templates', 'documentation-workflow.template');
|
|
62
|
+
const docContent = (0, fs_1.readFileSync)(docTemplatePath, 'utf-8');
|
|
63
|
+
const workflowContent = docContent.replace(/__EXPERIENCE_NAME__/g, experienceName);
|
|
64
|
+
tree.write(docPath, workflowContent);
|
|
65
|
+
devkit_1.logger.info('✅ Updated .github/workflows/documentation.yml');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
devkit_1.logger.info('⏭️ No documentation elements found, skipping documentation.yml');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
devkit_1.logger.info('⏭️ No .unisphere file found, skipping documentation.yml');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
devkit_1.logger.error(`❌ Failed to update documentation.yml: ${error?.message || 'Unknown error'}`);
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
devkit_1.logger.info('✅ GitHub Actions upgraded to Node 24-compatible versions');
|
|
80
|
+
}
|
package/migrations.json
CHANGED
|
@@ -570,6 +570,14 @@
|
|
|
570
570
|
"cli": {
|
|
571
571
|
"postUpdateMessage": "✅ Languages support migrated to @unisphere/ui-i18n-react"
|
|
572
572
|
}
|
|
573
|
+
},
|
|
574
|
+
"4.15.1-upgrade-github-actions-node24": {
|
|
575
|
+
"version": "4.15.1",
|
|
576
|
+
"description": "Upgrades GitHub Actions to Node 24-compatible versions (resolves Node 20 deprecation warning)",
|
|
577
|
+
"factory": "./dist/migrations/4-15-1/upgrade-github-actions-node24.js",
|
|
578
|
+
"cli": {
|
|
579
|
+
"postUpdateMessage": "✅ GitHub Actions upgraded to Node 24-compatible versions"
|
|
580
|
+
}
|
|
573
581
|
}
|
|
574
582
|
},
|
|
575
583
|
"packageJsonUpdates": {
|
|
@@ -1020,6 +1028,69 @@
|
|
|
1020
1028
|
"alwaysAddToPackageJson": false
|
|
1021
1029
|
}
|
|
1022
1030
|
}
|
|
1031
|
+
},
|
|
1032
|
+
"4.15.1": {
|
|
1033
|
+
"version": "4.15.1",
|
|
1034
|
+
"cli": "nx",
|
|
1035
|
+
"postUpdateMessage": "🎉 Migration to @unisphere/nx 4.15.1 completed successfully!",
|
|
1036
|
+
"packages": {
|
|
1037
|
+
"nx": {
|
|
1038
|
+
"version": "22.7.7",
|
|
1039
|
+
"alwaysAddToPackageJson": false
|
|
1040
|
+
},
|
|
1041
|
+
"@nx/eslint": {
|
|
1042
|
+
"version": "22.7.7",
|
|
1043
|
+
"alwaysAddToPackageJson": false
|
|
1044
|
+
},
|
|
1045
|
+
"@nx/eslint-plugin": {
|
|
1046
|
+
"version": "22.7.7",
|
|
1047
|
+
"alwaysAddToPackageJson": false
|
|
1048
|
+
},
|
|
1049
|
+
"@nx/jest": {
|
|
1050
|
+
"version": "22.7.7",
|
|
1051
|
+
"alwaysAddToPackageJson": false
|
|
1052
|
+
},
|
|
1053
|
+
"@nx/js": {
|
|
1054
|
+
"version": "22.7.7",
|
|
1055
|
+
"alwaysAddToPackageJson": false
|
|
1056
|
+
},
|
|
1057
|
+
"@nx/react": {
|
|
1058
|
+
"version": "22.7.7",
|
|
1059
|
+
"alwaysAddToPackageJson": false
|
|
1060
|
+
},
|
|
1061
|
+
"@nx/rollup": {
|
|
1062
|
+
"version": "22.7.7",
|
|
1063
|
+
"alwaysAddToPackageJson": false
|
|
1064
|
+
},
|
|
1065
|
+
"@nx/vite": {
|
|
1066
|
+
"version": "22.7.7",
|
|
1067
|
+
"alwaysAddToPackageJson": false
|
|
1068
|
+
},
|
|
1069
|
+
"@nx/vitest": {
|
|
1070
|
+
"version": "22.7.7",
|
|
1071
|
+
"alwaysAddToPackageJson": false
|
|
1072
|
+
},
|
|
1073
|
+
"@nx/web": {
|
|
1074
|
+
"version": "22.7.7",
|
|
1075
|
+
"alwaysAddToPackageJson": false
|
|
1076
|
+
},
|
|
1077
|
+
"@nx/webpack": {
|
|
1078
|
+
"version": "22.7.7",
|
|
1079
|
+
"alwaysAddToPackageJson": false
|
|
1080
|
+
},
|
|
1081
|
+
"@nx/workspace": {
|
|
1082
|
+
"version": "22.7.7",
|
|
1083
|
+
"alwaysAddToPackageJson": false
|
|
1084
|
+
},
|
|
1085
|
+
"vite": {
|
|
1086
|
+
"version": "7.3.6",
|
|
1087
|
+
"alwaysAddToPackageJson": false
|
|
1088
|
+
},
|
|
1089
|
+
"@unisphere/cli": {
|
|
1090
|
+
"version": "6.0.2",
|
|
1091
|
+
"alwaysAddToPackageJson": false
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1023
1094
|
}
|
|
1024
1095
|
}
|
|
1025
1096
|
}
|