@peterhauge/apiops-cli 0.1.4-alpha.0 → 0.1.5-alpha.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.
Files changed (44) hide show
  1. package/README.md +14 -5
  2. package/dist/cli/init-command.js +1 -1
  3. package/dist/cli/init-command.js.map +1 -1
  4. package/dist/lib/config-loader.d.ts.map +1 -1
  5. package/dist/lib/config-loader.js +4 -6
  6. package/dist/lib/config-loader.js.map +1 -1
  7. package/dist/lib/dependency-graph.d.ts.map +1 -1
  8. package/dist/lib/dependency-graph.js +2 -0
  9. package/dist/lib/dependency-graph.js.map +1 -1
  10. package/dist/lib/logger.d.ts.map +1 -1
  11. package/dist/lib/logger.js +10 -1
  12. package/dist/lib/logger.js.map +1 -1
  13. package/dist/lib/resource-path.d.ts +7 -0
  14. package/dist/lib/resource-path.d.ts.map +1 -1
  15. package/dist/lib/resource-path.js +9 -0
  16. package/dist/lib/resource-path.js.map +1 -1
  17. package/dist/models/config.d.ts +1 -1
  18. package/dist/models/config.d.ts.map +1 -1
  19. package/dist/models/resource-types.d.ts +4 -2
  20. package/dist/models/resource-types.d.ts.map +1 -1
  21. package/dist/models/resource-types.js +11 -1
  22. package/dist/models/resource-types.js.map +1 -1
  23. package/dist/services/api-extractor.d.ts +1 -0
  24. package/dist/services/api-extractor.d.ts.map +1 -1
  25. package/dist/services/api-extractor.js +93 -1
  26. package/dist/services/api-extractor.js.map +1 -1
  27. package/dist/services/api-publisher.d.ts.map +1 -1
  28. package/dist/services/api-publisher.js +1 -0
  29. package/dist/services/api-publisher.js.map +1 -1
  30. package/dist/services/extract-service.js +1 -0
  31. package/dist/services/extract-service.js.map +1 -1
  32. package/dist/services/identity-guide-service.d.ts.map +1 -1
  33. package/dist/services/identity-guide-service.js +367 -64
  34. package/dist/services/identity-guide-service.js.map +1 -1
  35. package/dist/services/init-service.d.ts.map +1 -1
  36. package/dist/services/init-service.js +21 -12
  37. package/dist/services/init-service.js.map +1 -1
  38. package/dist/services/publish-service.js +6 -1
  39. package/dist/services/publish-service.js.map +1 -1
  40. package/dist/templates/configs/package-json.d.ts +6 -4
  41. package/dist/templates/configs/package-json.d.ts.map +1 -1
  42. package/dist/templates/configs/package-json.js +11 -6
  43. package/dist/templates/configs/package-json.js.map +1 -1
  44. package/package.json +2 -1
@@ -109,110 +109,413 @@ Test the authentication by running a workflow manually or pushing to main branch
109
109
 
110
110
  ## Security Notes
111
111
  - Use GitHub Environments for production deployments with required reviewers
112
- - Rotate service principal credentials periodically
113
- - Review federated credential subjects regularly
112
+ - Review federated credential subjects periodically (no secrets to rotate — OIDC authentication has no stored credentials)
113
+ - Review RBAC role assignments regularly and remove any no longer needed
114
114
  - Use least-privilege RBAC assignments
115
115
  `;
116
116
  }
117
117
  generateAzureDevOpsGuide(subscriptionId, resourceGroup, environments) {
118
+ const environmentsArrayPowerShell = environments.map((e) => `"${e}"`).join(', ');
119
+ const environmentsArrayBash = environments.map((e) => `"${e}"`).join(' ');
118
120
  return `# Azure DevOps Identity Setup Guide
119
121
 
120
122
  ## Prerequisites
121
123
  - Azure subscription: ${subscriptionId}
122
124
  - Resource group: ${resourceGroup}
123
125
  - Azure DevOps organization and project
126
+ - Azure CLI installed and authenticated (\`az login\`)
124
127
 
125
- ## Step 1: Create Service Principal
128
+ > **Note:** All commands use only built-in tools—no additional installations required. Commands are shown for both **PowerShell** and **Git Bash** where syntax differs.
129
+
130
+ ---
126
131
 
127
- Create a service principal for each environment or use a single shared one:
132
+ ## Step 1: Set Variables
128
133
 
134
+ **PowerShell:**
135
+ \`\`\`powershell
136
+ $SUBSCRIPTION_ID = "${subscriptionId}"
137
+ $RESOURCE_GROUP = "${resourceGroup}"
138
+ $APP_NAME = "apiops-azdo-sp"
139
+ $ENVIRONMENTS = @(${environmentsArrayPowerShell})
140
+ \`\`\`
141
+
142
+ **Git Bash:**
129
143
  \`\`\`bash
130
- # Set variables
131
144
  SUBSCRIPTION_ID="${subscriptionId}"
132
145
  RESOURCE_GROUP="${resourceGroup}"
133
146
  APP_NAME="apiops-azdo-sp"
147
+ ENVIRONMENTS=(${environmentsArrayBash})
148
+ \`\`\`
134
149
 
135
- # Create Service Principal with Contributor role
136
- SP_OUTPUT=$(az ad sp create-for-rbac \\
137
- --name "$APP_NAME" \\
138
- --role "API Management Service Contributor" \\
139
- --scopes "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP" \\
140
- --sdk-auth)
150
+ ---
141
151
 
142
- echo "$SP_OUTPUT"
152
+ ## Step 2: Create Service Principal
143
153
 
144
- # Save the output - you'll need these values:
145
- # - appId (client ID)
146
- # - password (client secret)
147
- # - tenant
154
+ **PowerShell:**
155
+ \`\`\`powershell
156
+ $SP_OUTPUT = az ad sp create-for-rbac --name $APP_NAME --role "API Management Service Contributor" --scopes "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP"
157
+ $spObj = $SP_OUTPUT | ConvertFrom-Json
158
+ $APP_ID = $spObj.appId
159
+ $PASSWORD = $spObj.password
160
+ $TENANT_ID = $spObj.tenant
148
161
  \`\`\`
149
162
 
150
- ## Step 2: Create Azure Service Connections
163
+ **Git Bash:** (use \`MSYS_NO_PATHCONV=1\` to prevent path conversion on Windows)
164
+ \`\`\`bash
165
+ SP_OUTPUT=$(MSYS_NO_PATHCONV=1 az ad sp create-for-rbac --name "$APP_NAME" --role "API Management Service Contributor" --scopes "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP")
166
+ APP_ID=$(echo "$SP_OUTPUT" | grep -o '"appId": *"[^"]*"' | cut -d'"' -f4)
167
+ PASSWORD=$(echo "$SP_OUTPUT" | grep -o '"password": *"[^"]*"' | cut -d'"' -f4)
168
+ TENANT_ID=$(echo "$SP_OUTPUT" | grep -o '"tenant": *"[^"]*"' | cut -d'"' -f4)
169
+ \`\`\`
151
170
 
152
- In Azure DevOps, create service connections for Azure Resource Manager:
171
+ **Important:** The password is only shown once during creation. Save it securely now!
153
172
 
154
- 1. Go to Project Settings → Service connections
155
- 2. Click "New service connection" → "Azure Resource Manager" → "Service principal (manual)"
156
- 3. Fill in the details from Step 1:
157
- - **Subscription ID**: ${subscriptionId}
158
- - **Subscription Name**: (your subscription name)
159
- - **Service Principal ID**: appId from Step 1
160
- - **Service Principal Key**: password from Step 1
161
- - **Tenant ID**: tenant from Step 1
173
+ ---
162
174
 
163
- ${environments.map((env) => `
164
- **For ${env} environment:**
165
- - Connection name: \`AZURE_SERVICE_CONNECTION_${env.toUpperCase()}\`
166
- - Verify: Test the connection
167
- `).join('\n')}
175
+ ## Step 3: Configure Azure DevOps CLI
168
176
 
169
- **For extract pipeline:**
170
- - Connection name: \`AZURE_SERVICE_CONNECTION\`
171
- - Verify: Test the connection
177
+ Install the extension (works in both shells):
178
+ \`\`\`bash
179
+ az extension add --name azure-devops
180
+ \`\`\`
172
181
 
173
- ## Step 3: Create Variable Groups
182
+ Set organization defaults:
174
183
 
175
- Create variable groups in Azure DevOps Library:
184
+ **PowerShell:**
185
+ \`\`\`powershell
186
+ # For self-hosted Azure DevOps Server, use: https://<server>/<collection>
187
+ $AZDO_ORG = "https://dev.azure.com/<your-org>"
188
+ $ORG_NAME = "<your-org>" # Used for Build Service identity
189
+ $AZDO_PROJECT = "<your-project>"
190
+ az devops configure --defaults organization=$AZDO_ORG project=$AZDO_PROJECT
191
+ $SUBSCRIPTION_NAME = az account show --subscription $SUBSCRIPTION_ID --query name -o tsv
192
+ \`\`\`
176
193
 
177
- ### Common Variable Group (\`apim-common\`):
178
- - \`AZURE_SUBSCRIPTION_ID\`: ${subscriptionId}
179
- - \`APIM_RESOURCE_GROUP\`: ${resourceGroup}
180
- - \`APIM_SERVICE_NAME\`: <your-apim-service-name>
181
- - \`AZURE_SERVICE_CONNECTION\`: Name from Step 2
194
+ **Git Bash:**
195
+ \`\`\`bash
196
+ # For self-hosted Azure DevOps Server, use: https://<server>/<collection>
197
+ AZDO_ORG="https://dev.azure.com/<your-org>"
198
+ ORG_NAME="<your-org>" # Used for Build Service identity
199
+ AZDO_PROJECT="<your-project>"
200
+ az devops configure --defaults organization="$AZDO_ORG" project="$AZDO_PROJECT"
201
+ SUBSCRIPTION_NAME=$(az account show --subscription "$SUBSCRIPTION_ID" --query name -o tsv)
202
+ \`\`\`
182
203
 
183
- ${environments.map((env) => `
184
- ### ${env} Environment Variable Group (\`apim-${env}\`):
185
- - \`APIM_RESOURCE_GROUP_${env.toUpperCase()}\`: Resource group for ${env}
186
- - \`APIM_SERVICE_NAME_${env.toUpperCase()}\`: APIM service name for ${env}
187
- - \`AZURE_SERVICE_CONNECTION_${env.toUpperCase()}\`: Service connection name for ${env}
188
- `).join('\n')}
204
+ ---
205
+
206
+ ## Step 4: Create Azure Service Connections
207
+
208
+ Set the service principal key for non-interactive creation:
209
+
210
+ **PowerShell:**
211
+ \`\`\`powershell
212
+ $env:AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY = $PASSWORD
213
+ \`\`\`
214
+
215
+ **Git Bash:**
216
+ \`\`\`bash
217
+ export AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY="$PASSWORD"
218
+ \`\`\`
219
+
220
+ Create the base service connection and one per environment:
221
+
222
+ **PowerShell:**
223
+ \`\`\`powershell
224
+ az devops service-endpoint azurerm create --name "AZURE_SERVICE_CONNECTION" --azure-rm-service-principal-id $APP_ID --azure-rm-subscription-id $SUBSCRIPTION_ID --azure-rm-subscription-name $SUBSCRIPTION_NAME --azure-rm-tenant-id $TENANT_ID
225
+
226
+ foreach ($env in $ENVIRONMENTS) {
227
+ $envUpper = $env.ToUpper()
228
+ az devops service-endpoint azurerm create --name "AZURE_SERVICE_CONNECTION_$envUpper" --azure-rm-service-principal-id $APP_ID --azure-rm-subscription-id $SUBSCRIPTION_ID --azure-rm-subscription-name $SUBSCRIPTION_NAME --azure-rm-tenant-id $TENANT_ID
229
+ }
230
+ \`\`\`
231
+
232
+ **Git Bash:**
233
+ \`\`\`bash
234
+ az devops service-endpoint azurerm create --name "AZURE_SERVICE_CONNECTION" --azure-rm-service-principal-id "$APP_ID" --azure-rm-subscription-id "$SUBSCRIPTION_ID" --azure-rm-subscription-name "$SUBSCRIPTION_NAME" --azure-rm-tenant-id "$TENANT_ID"
235
+
236
+ for env in "\${ENVIRONMENTS[@]}"; do
237
+ env_upper=$(echo "$env" | tr '[:lower:]' '[:upper:]')
238
+ az devops service-endpoint azurerm create --name "AZURE_SERVICE_CONNECTION_$env_upper" --azure-rm-service-principal-id "$APP_ID" --azure-rm-subscription-id "$SUBSCRIPTION_ID" --azure-rm-subscription-name "$SUBSCRIPTION_NAME" --azure-rm-tenant-id "$TENANT_ID"
239
+ done
240
+ \`\`\`
241
+
242
+ Clean up the environment variable:
189
243
 
190
- ## Step 4: Configure Pipeline Permissions
244
+ **PowerShell:**
245
+ \`\`\`powershell
246
+ Remove-Item Env:AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY
247
+ \`\`\`
248
+
249
+ **Git Bash:**
250
+ \`\`\`bash
251
+ unset AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY
252
+ \`\`\`
253
+
254
+ Verify (works in both shells):
255
+ \`\`\`bash
256
+ az devops service-endpoint list --query "[].name" -o table
257
+ \`\`\`
258
+
259
+ ---
260
+
261
+ ## Step 5: Create Variable Groups
262
+
263
+ Set target environment variables:
264
+
265
+ **PowerShell:**
266
+ \`\`\`powershell
267
+ $TARGET_SUBSCRIPTION_ID = "${subscriptionId}"
268
+ $TARGET_APIM_BASE_NAME = "<your-apim-base-name>"
269
+ $TARGET_RESOURCE_GROUP_BASE_NAME = "${resourceGroup}"
270
+ \`\`\`
271
+
272
+ **Git Bash:**
273
+ \`\`\`bash
274
+ TARGET_SUBSCRIPTION_ID="${subscriptionId}"
275
+ TARGET_APIM_BASE_NAME="<your-apim-base-name>"
276
+ TARGET_RESOURCE_GROUP_BASE_NAME="${resourceGroup}"
277
+ \`\`\`
278
+
279
+ Create the common variable group:
280
+
281
+ **PowerShell:**
282
+ \`\`\`powershell
283
+ az pipelines variable-group create --name "apim-common" --variables AZURE_SUBSCRIPTION_ID=$TARGET_SUBSCRIPTION_ID APIM_RESOURCE_GROUP=$TARGET_RESOURCE_GROUP_BASE_NAME APIM_SERVICE_NAME=$TARGET_APIM_BASE_NAME AZURE_SERVICE_CONNECTION="AZURE_SERVICE_CONNECTION"
284
+ \`\`\`
285
+
286
+ **Git Bash:**
287
+ \`\`\`bash
288
+ az pipelines variable-group create --name "apim-common" --variables AZURE_SUBSCRIPTION_ID="$TARGET_SUBSCRIPTION_ID" APIM_RESOURCE_GROUP="$TARGET_RESOURCE_GROUP_BASE_NAME" APIM_SERVICE_NAME="$TARGET_APIM_BASE_NAME" AZURE_SERVICE_CONNECTION="AZURE_SERVICE_CONNECTION"
289
+ \`\`\`
191
290
 
192
- 1. Go to Pipelines → Library → Variable Groups
193
- 2. For each variable group, click "Pipeline permissions"
194
- 3. Allow the extract and publish pipelines to use these variable groups
291
+ Create environment-specific variable groups:
195
292
 
196
- ## Step 5: Create Environments
293
+ **PowerShell:**
294
+ \`\`\`powershell
295
+ foreach ($env in $ENVIRONMENTS) {
296
+ $envUpper = $env.ToUpper()
297
+ az pipelines variable-group create --name "apim-$env" --variables "APIM_RESOURCE_GROUP_$envUpper=\${TARGET_RESOURCE_GROUP_BASE_NAME}-$env" "APIM_SERVICE_NAME_$envUpper=\${TARGET_APIM_BASE_NAME}-$env" "AZURE_SERVICE_CONNECTION_$envUpper=AZURE_SERVICE_CONNECTION_$envUpper"
298
+ }
299
+ \`\`\`
300
+
301
+ **Git Bash:**
302
+ \`\`\`bash
303
+ for env in "\${ENVIRONMENTS[@]}"; do
304
+ env_upper=$(echo "$env" | tr '[:lower:]' '[:upper:]')
305
+ az pipelines variable-group create --name "apim-$env" --variables "APIM_RESOURCE_GROUP_$env_upper=\${TARGET_RESOURCE_GROUP_BASE_NAME}-$env" "APIM_SERVICE_NAME_$env_upper=\${TARGET_APIM_BASE_NAME}-$env" "AZURE_SERVICE_CONNECTION_$env_upper=AZURE_SERVICE_CONNECTION_$env_upper"
306
+ done
307
+ \`\`\`
197
308
 
198
- Create deployment environments in Azure DevOps:
309
+ Verify variable groups were created:
310
+ \`\`\`bash
311
+ az pipelines variable-group list --query "[].name" -o table
312
+ \`\`\`
199
313
 
200
- 1. Go to Pipelines → Environments
201
- 2. Create new environment for each:
202
- ${environments.map((env) => ` - \`${env}\``).join('\n')}
203
- 3. Configure approvals and checks as needed for production environments
314
+ ---
204
315
 
205
- ## Step 6: Enable Pipeline Contributions
316
+ ## Step 6: Configure Pipeline Permissions
206
317
 
207
- For the extract pipeline to commit changes:
318
+ Authorize all pipelines to use the variable groups:
208
319
 
209
- 1. Go to Project Settings → Repositories → Security
210
- 2. Find "Build Service" account
211
- 3. Grant "Contribute" and "Contribute to pull requests" permissions
320
+ **PowerShell:**
321
+ \`\`\`powershell
322
+ $groupIds = az pipelines variable-group list --query "[].id" -o tsv
323
+ foreach ($id in $groupIds) {
324
+ az pipelines variable-group update --group-id $id --authorize true
325
+ }
326
+ \`\`\`
212
327
 
213
- ## Step 7: Verify Setup
328
+ **Git Bash:**
329
+ \`\`\`bash
330
+ for id in $(az pipelines variable-group list --query "[].id" -o tsv); do
331
+ az pipelines variable-group update --group-id "$id" --authorize true
332
+ done
333
+ \`\`\`
334
+
335
+ ---
336
+
337
+ ## Step 7: Create Environments
338
+
339
+ Create deployment environments:
340
+
341
+ **PowerShell:**
342
+ \`\`\`powershell
343
+ foreach ($env in $ENVIRONMENTS) {
344
+ $body = @{ name = $env } | ConvertTo-Json -Compress
345
+ $body | Out-File -Encoding utf8 -FilePath env-body.json
346
+ az devops invoke --area environments --resource environments --route-parameters project=$AZDO_PROJECT --http-method POST --api-version 7.1 --in-file env-body.json
347
+ }
348
+ Remove-Item env-body.json -ErrorAction SilentlyContinue
349
+ \`\`\`
350
+
351
+ **Git Bash:**
352
+ \`\`\`bash
353
+ for env in "\${ENVIRONMENTS[@]}"; do
354
+ echo "{\\"name\\": \\"$env\\"}" > env-body.json
355
+ az devops invoke --area environments --resource environments --route-parameters project="$AZDO_PROJECT" --http-method POST --api-version 7.1 --in-file env-body.json
356
+ done
357
+ rm -f env-body.json
358
+ \`\`\`
359
+
360
+ **Note:** Environment approvals and checks must be configured via the Azure DevOps UI (Project Settings > Environments).
361
+
362
+ ---
363
+
364
+ ## Step 8: Enable Pipeline Contributions
365
+
366
+ Grant the Build Service permission to contribute to the repository. This allows pipelines to push commits (e.g., extracted API artifacts).
367
+
368
+ First, get the project and repository IDs:
369
+
370
+ **PowerShell:**
371
+ \`\`\`powershell
372
+ $PROJECT_ID = az devops project show --project $AZDO_PROJECT --query id -o tsv
373
+ $REPO_NAME = $AZDO_PROJECT # Change if your repo name differs from project name
374
+ $REPO_ID = az repos show --repository $REPO_NAME --query id -o tsv
375
+ \`\`\`
376
+
377
+ **Git Bash:**
378
+ \`\`\`bash
379
+ PROJECT_ID=$(az devops project show --project "$AZDO_PROJECT" --query id -o tsv)
380
+ REPO_NAME="$AZDO_PROJECT" # Change if your repo name differs from project name
381
+ REPO_ID=$(az repos show --repository "$REPO_NAME" --query id -o tsv)
382
+ \`\`\`
383
+
384
+ Next, find the Build Service identity descriptor:
385
+
386
+ **PowerShell:**
387
+ \`\`\`powershell
388
+ $GRAPH_USERS = az devops invoke --area graph --resource users --query-parameters 'api-version=7.1-preview.1' --http-method GET -o json | ConvertFrom-Json
389
+ $BUILD_SERVICE_NAME = "$AZDO_PROJECT Build Service ($ORG_NAME)"
390
+ $BUILD_SERVICE_DESCRIPTOR = ($GRAPH_USERS.value | Where-Object { $_.displayName -eq $BUILD_SERVICE_NAME }).descriptor
391
+ \`\`\`
392
+
393
+ **Git Bash:**
394
+ \`\`\`bash
395
+ BUILD_SERVICE_NAME="$AZDO_PROJECT Build Service ($ORG_NAME)"
396
+ BUILD_SERVICE_DESCRIPTOR=$(az devops invoke --area graph --resource users --query-parameters 'api-version=7.1-preview.1' --http-method GET -o json | grep -B5 "\\"displayName\\": \\"$BUILD_SERVICE_NAME\\"" | grep '"descriptor"' | head -1 | cut -d'"' -f4)
397
+ \`\`\`
398
+
399
+ Finally, grant the Contribute permission (bit 4) on the repository:
400
+
401
+ **PowerShell:**
402
+ \`\`\`powershell
403
+ $GIT_REPOS_NAMESPACE = az devops security permission namespace list --query "[?name=='Git Repositories'].namespaceId" -o tsv
404
+ $TOKEN = "repoV2/$PROJECT_ID/$REPO_ID"
405
+ az devops security permission update --namespace-id $GIT_REPOS_NAMESPACE --subject $BUILD_SERVICE_DESCRIPTOR --token $TOKEN --allow-bit 4
406
+ \`\`\`
407
+
408
+ **Git Bash:**
409
+ \`\`\`bash
410
+ GIT_REPOS_NAMESPACE=$(az devops security permission namespace list --query "[?name=='Git Repositories'].namespaceId" -o tsv)
411
+ TOKEN="repoV2/$PROJECT_ID/$REPO_ID"
412
+ az devops security permission update --namespace-id "$GIT_REPOS_NAMESPACE" --subject "$BUILD_SERVICE_DESCRIPTOR" --token "$TOKEN" --allow-bit 4
413
+ \`\`\`
414
+
415
+ Verify the permission was set:
416
+
417
+ **PowerShell:**
418
+ \`\`\`powershell
419
+ az devops security permission show --namespace-id $GIT_REPOS_NAMESPACE --subject $BUILD_SERVICE_DESCRIPTOR --token $TOKEN --query "[].acesDictionary.*.resolvedPermissions" -o json
420
+ \`\`\`
421
+
422
+ **Git Bash:**
423
+ \`\`\`bash
424
+ az devops security permission show --namespace-id "$GIT_REPOS_NAMESPACE" --subject "$BUILD_SERVICE_DESCRIPTOR" --token "$TOKEN" --query "[].acesDictionary.*.resolvedPermissions" -o json
425
+ \`\`\`
426
+
427
+ ---
428
+
429
+ ## Step 9: Verify Setup
430
+
431
+ Verify all resources were created correctly:
432
+
433
+ **Service Connections:**
434
+ \`\`\`bash
435
+ az devops service-endpoint list --query "[].name" -o table
436
+ \`\`\`
437
+
438
+ **Variable Groups:**
439
+ \`\`\`bash
440
+ az pipelines variable-group list --query "[].name" -o table
441
+ \`\`\`
442
+
443
+ **Environments:**
444
+
445
+ **PowerShell:**
446
+ \`\`\`powershell
447
+ (az devops invoke --area environments --resource environments --route-parameters project=$AZDO_PROJECT --http-method GET --api-version 7.1 -o json | ConvertFrom-Json).value | Select-Object name
448
+ \`\`\`
449
+
450
+ **Git Bash:**
451
+ \`\`\`bash
452
+ az devops invoke --area environments --resource environments --route-parameters project="$AZDO_PROJECT" --http-method GET --api-version 7.1 -o json | grep -o '"name": *"[^"]*"' | cut -d'"' -f4
453
+ \`\`\`
454
+
455
+ **Service Principal Role Assignment:**
456
+
457
+ **PowerShell:**
458
+ \`\`\`powershell
459
+ az role assignment list --assignee $APP_ID --query "[].{Role:roleDefinitionName, Scope:scope}" -o table
460
+ \`\`\`
461
+
462
+ **Git Bash:**
463
+ \`\`\`bash
464
+ az role assignment list --assignee "$APP_ID" --query "[].{Role:roleDefinitionName, Scope:scope}" -o table
465
+ \`\`\`
466
+
467
+ **Final Test:** Run the extract pipeline manually to verify end-to-end authentication and permissions.
468
+
469
+ ---
470
+
471
+ ## Step 10: Create Pipelines
472
+
473
+ Create Azure Pipelines from the YAML files in your repository.
474
+
475
+ **Prerequisites:** Ensure your pipeline YAML files are committed to the repository (e.g., \`azure-pipelines-extract.yml\`, \`azure-pipelines-publish.yml\`).
476
+
477
+ **Create Extract Pipeline:**
478
+
479
+ **PowerShell:**
480
+ \`\`\`powershell
481
+ az pipelines create --name "apiops-extract" --repository $REPO_NAME --branch main --yml-path "azure-pipelines-extract.yml" --repository-type tfsgit --skip-first-run true
482
+ \`\`\`
483
+
484
+ **Git Bash:**
485
+ \`\`\`bash
486
+ az pipelines create --name "apiops-extract" --repository "$REPO_NAME" --branch main --yml-path "azure-pipelines-extract.yml" --repository-type tfsgit --skip-first-run true
487
+ \`\`\`
488
+
489
+ **Create Publish Pipeline:**
490
+
491
+ **PowerShell:**
492
+ \`\`\`powershell
493
+ az pipelines create --name "apiops-publish" --repository $REPO_NAME --branch main --yml-path "azure-pipelines-publish.yml" --repository-type tfsgit --skip-first-run true
494
+ \`\`\`
495
+
496
+ **Git Bash:**
497
+ \`\`\`bash
498
+ az pipelines create --name "apiops-publish" --repository "$REPO_NAME" --branch main --yml-path "azure-pipelines-publish.yml" --repository-type tfsgit --skip-first-run true
499
+ \`\`\`
500
+
501
+ **Verify pipelines were created:**
502
+ \`\`\`bash
503
+ az pipelines list --query "[].name" -o table
504
+ \`\`\`
505
+
506
+ **Run the extract pipeline:**
507
+
508
+ **PowerShell:**
509
+ \`\`\`powershell
510
+ az pipelines run --name "apiops-extract"
511
+ \`\`\`
512
+
513
+ **Git Bash:**
514
+ \`\`\`bash
515
+ az pipelines run --name "apiops-extract"
516
+ \`\`\`
214
517
 
215
- Run the extract pipeline manually to verify authentication and permissions.
518
+ ---
216
519
 
217
520
  ## Security Notes
218
521
  - Use separate service principals for production environments
@@ -1 +1 @@
1
- {"version":3,"file":"identity-guide-service.js","sourceRoot":"","sources":["../../src/services/identity-guide-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,wBAAwB;IAC5B,0BAA0B,CACxB,cAAsB,EACtB,aAAqB,EACrB,YAAsB;QAEtB,OAAO;;;wBAGa,cAAc;oBAClB,aAAa;;;;;;;;;mBASd,cAAc;kBACf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsD7B,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;;;0BAGF,GAAG;;oEAEuC,GAAG;;KAElE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;+BAUY,cAAc;;;EAG3C,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACpB,GAAG;0BACe,GAAG,CAAC,WAAW,EAAE,0BAA0B,GAAG;wBAChD,GAAG,CAAC,WAAW,EAAE,6BAA6B,GAAG;CACxE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAeZ,CAAC;IACA,CAAC;IAED,wBAAwB,CACtB,cAAsB,EACtB,aAAqB,EACrB,YAAsB;QAEtB,OAAO;;;wBAGa,cAAc;oBAClB,aAAa;;;;;;;;;mBASd,cAAc;kBACf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;4BAyBH,cAAc;;;;;;EAMxC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACpB,GAAG;gDACqC,GAAG,CAAC,WAAW,EAAE;;CAEhE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;+BAWkB,cAAc;6BAChB,aAAa;;;;EAIxC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;MACtB,GAAG,uCAAuC,GAAG;0BACzB,GAAG,CAAC,WAAW,EAAE,0BAA0B,GAAG;wBAChD,GAAG,CAAC,WAAW,EAAE,6BAA6B,GAAG;+BAC1C,GAAG,CAAC,WAAW,EAAE,mCAAmC,GAAG;CACrF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;EAcX,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBxD,CAAC;IACA,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAyB,IAAI,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"identity-guide-service.js","sourceRoot":"","sources":["../../src/services/identity-guide-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,wBAAwB;IAC5B,0BAA0B,CACxB,cAAsB,EACtB,aAAqB,EACrB,YAAsB;QAEtB,OAAO;;;wBAGa,cAAc;oBAClB,aAAa;;;;;;;;;mBASd,cAAc;kBACf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsD7B,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;;;0BAGF,GAAG;;oEAEuC,GAAG;;KAElE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;+BAUY,cAAc;;;EAG3C,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACpB,GAAG;0BACe,GAAG,CAAC,WAAW,EAAE,0BAA0B,GAAG;wBAChD,GAAG,CAAC,WAAW,EAAE,6BAA6B,GAAG;CACxE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAeZ,CAAC;IACA,CAAC;IAED,wBAAwB,CACtB,cAAsB,EACtB,aAAqB,EACrB,YAAsB;QAEtB,MAAM,2BAA2B,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1E,OAAO;;;wBAGa,cAAc;oBAClB,aAAa;;;;;;;;;;;;sBAYX,cAAc;qBACf,aAAa;;oBAEd,2BAA2B;;;;;mBAK5B,cAAc;kBACf,aAAa;;gBAEf,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAwHR,cAAc;;sCAEL,aAAa;;;;;0BAKzB,cAAc;;mCAEL,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0P/C,CAAC;IACA,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAyB,IAAI,wBAAwB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-service.d.ts","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA6BjD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAClD;AAqXD,eAAO,MAAM,WAAW,EAAE,WAAmC,CAAC"}
1
+ {"version":3,"file":"init-service.d.ts","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA6BjD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAClD;AA8XD,eAAO,MAAM,WAAW,EAAE,WAAmC,CAAC"}
@@ -22,8 +22,10 @@ const PLACEHOLDER_RESOURCE_GROUP = '<your-resource-group>';
22
22
  class InitServiceImpl {
23
23
  async run(config) {
24
24
  logger.info('Starting APIM repository initialization...');
25
- // Validate that the CLI package tarball exists
26
- await this.validateCliPackage(config.cliPackage);
25
+ // Validate that the CLI package tarball exists (only if provided)
26
+ if (config.cliPackage) {
27
+ await this.validateCliPackage(config.cliPackage);
28
+ }
27
29
  // Gather configuration (interactive or from flags)
28
30
  const finalConfig = await this.gatherConfiguration(config);
29
31
  logger.debug('Final configuration:', finalConfig);
@@ -167,16 +169,23 @@ class InitServiceImpl {
167
169
  const gitkeepPath = path.join(artifactPath, '.gitkeep');
168
170
  await fs.writeFile(gitkeepPath, '');
169
171
  generatedFiles.directories.push(config.artifactDir);
170
- // Copy CLI tarball into .apiops/ directory
171
- const apiopsDir = path.join(config.outputDir, '.apiops');
172
- await fs.mkdir(apiopsDir, { recursive: true });
173
- const tarballFilename = path.basename(config.cliPackage);
174
- const tarballDest = path.join(apiopsDir, tarballFilename);
175
- await fs.copyFile(path.resolve(config.cliPackage), tarballDest);
176
- generatedFiles.directories.push('.apiops');
177
- // Generate package.json with local tarball dependency
178
- const tarballRelPath = path.join('.apiops', tarballFilename);
179
- const packageJsonContent = generatePackageJson({ tarballRelPath });
172
+ // Generate package.json - mode depends on whether cliPackage is provided
173
+ let packageJsonContent;
174
+ if (config.cliPackage) {
175
+ // Local tarball mode: copy tarball and reference via file: dependency
176
+ const apiopsDir = path.join(config.outputDir, '.apiops');
177
+ await fs.mkdir(apiopsDir, { recursive: true });
178
+ const tarballFilename = path.basename(config.cliPackage);
179
+ const tarballDest = path.join(apiopsDir, tarballFilename);
180
+ await fs.copyFile(path.resolve(config.cliPackage), tarballDest);
181
+ generatedFiles.directories.push('.apiops');
182
+ const tarballRelPath = path.join('.apiops', tarballFilename);
183
+ packageJsonContent = generatePackageJson({ mode: 'local', tarballRelPath });
184
+ }
185
+ else {
186
+ // Public npm mode: use registry package
187
+ packageJsonContent = generatePackageJson({ mode: 'npm' });
188
+ }
180
189
  const packageJsonPath = path.join(config.outputDir, 'package.json');
181
190
  await fs.writeFile(packageJsonPath, packageJsonContent);
182
191
  generatedFiles.configs.push('package.json');
@@ -1 +1 @@
1
- {"version":3,"file":"init-service.js","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-service.js","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { logger } from '../lib/logger.js';
10
10
  import { isAutoGeneratedId } from '../lib/auto-generated.js';
11
11
  import { EXIT_SUCCESS, EXIT_PARTIAL, EXIT_FATAL } from '../lib/exit-codes.js';
12
12
  import { buildResourceLabel } from '../lib/resource-uri.js';
13
- import { getNamePart, isChildType } from '../lib/resource-path.js';
13
+ import { getNamePart, isChildType, isTopLevelSingleton } from '../lib/resource-path.js';
14
14
  // Import from other agents' files (will be created in parallel)
15
15
  import { publishResource } from './resource-publisher.js';
16
16
  import { publishApi } from './api-publisher.js';
@@ -118,6 +118,11 @@ async function executePuts(client, store, context, config, targetDescriptors) {
118
118
  // so we exclude those children from tiers 3/4 to avoid double-publishing.
119
119
  const parentNamesByType = new Map();
120
120
  for (const d of tierGroups.get(2) || []) {
121
+ // Top-level singletons such as ServicePolicy do not participate in
122
+ // parent-name child filtering.
123
+ if (isTopLevelSingleton(d.type)) {
124
+ continue;
125
+ }
121
126
  // Top-level types are those that are NOT child types
122
127
  if (!isChildType(d.type)) {
123
128
  if (!parentNamesByType.has(d.type)) {