@@ -258,14 +258,16 @@ jobs:
258
258
echo "CD_ROOT=$CD_ROOT" >> "$GITHUB_ENV"
259
259
echo "cd_root=$CD_ROOT" >> "$GITHUB_OUTPUT"
260
260
261
- # Export UAMI env vars (uami_name => client_id) for selected cluster
261
+ # Export UAMI env vars (uami_name => client_id)
262
262
- name : Export UAMI env vars (uami_name => client_id)
263
263
uses : actions/github-script@v7
264
264
env :
265
265
UAMI_JSON : ${{ steps.env.outputs.uami_map }}
266
+ CLUSTER : ${{ steps.env.outputs.cluster }}
266
267
with :
267
268
script : |
268
269
const fs = require('fs');
270
+ const clusterName = (process.env.CLUSTER || '').trim();
269
271
270
272
let arr = [];
271
273
try { arr = JSON.parse(process.env.UAMI_JSON || '[]'); }
@@ -276,20 +278,11 @@ jobs:
276
278
return;
277
279
}
278
280
279
- const seenByName = new Set();
280
- const seenByVar = new Set();
281
- const exported = [];
282
-
283
- const toShellId = (s) => {
284
- const orig = String(s).trim();
285
- let k = orig.replace(/[^A-Za-z0-9_]/g, '_');
286
- if (!/^[A-Za-z_]/.test(k)) k = `_${k}`;
287
- if (k !== orig) core.warning(`UAMI name '${orig}' adjusted to '${k}' for shell compatibility.`);
288
- return k;
289
- };
281
+ const seen = new Set();
282
+ const exported = [];
290
283
291
284
for (const [i, u] of arr.entries()) {
292
- const name = String(u.uami_name || '').trim();
285
+ let name = String(u.uami_name || '').trim();
293
286
const rg = String(u.uami_resource_group || '').trim();
294
287
const cid = String(u.client_id || '').trim();
295
288
@@ -298,24 +291,39 @@ jobs:
298
291
continue;
299
292
}
300
293
301
- if (seenByName.has(name)) {
302
- core.warning(`Duplicate UAMI name '${name}' (rg='${rg}'). Keeping the first occurrence.`);
303
- continue;
294
+ // Remove "<clusterName>-" prefix if present
295
+ const prefix = clusterName + "-";
296
+ if (name.toLowerCase().startsWith(prefix.toLowerCase())) {
297
+ name = name.substring(prefix.length);
304
298
}
305
299
306
- const varName = toShellId(name);
307
- if (seenByVar.has(varName)) {
308
- core.warning(`UAMI name '${name}' maps to '${varName}', which collides with another UAMI. Keeping the first occurrence.`);
300
+ // Replace '-' with '_'
301
+ let varName = name.replace(/-/g, "_");
302
+
303
+ // Ensure valid shell identifier
304
+ if (!/^[A-Za-z_]/.test(varName)) varName = `_${varName}`;
305
+
306
+ if (seen.has(varName)) {
307
+ core.warning(`Duplicate UAMI var '${varName}' (rg='${rg}'). Skipping duplicate.`);
309
308
continue;
310
309
}
311
310
312
311
fs.appendFileSync(process.env.GITHUB_ENV, `${varName}=${cid}\n`);
313
- seenByName.add(name);
314
- seenByVar.add(varName);
315
- exported.push(varName);
312
+ seen.add(varName);
313
+ exported.push({ varName, cid });
316
314
}
317
315
318
- core.info(`Exported ${exported.length} UAMI env var(s): ${exported.join(', ')}`);
316
+ if (exported.length === 0) {
317
+ core.info("No UAMI vars exported.");
318
+ } else {
319
+ core.info("Exported UAMI vars for templating:");
320
+ for (const e of exported) {
321
+ core.info(` ${e.varName}=${e.cid}`);
322
+ }
323
+ }
324
+
325
+
326
+
319
327
320
328
# Unify to a single apps[] list for either mode
321
329
- name : Resolve apps (single or multi)
0 commit comments