@peterhauge/apiops-cli 0.2.0-alpha.0 → 0.3.0-alpha.0

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 (206) hide show
  1. package/README.md +167 -169
  2. package/dist/cli/extract-command.d.ts +2 -2
  3. package/dist/cli/extract-command.d.ts.map +1 -1
  4. package/dist/cli/extract-command.js +3 -5
  5. package/dist/cli/extract-command.js.map +1 -1
  6. package/dist/cli/index.d.ts +0 -0
  7. package/dist/cli/index.d.ts.map +0 -0
  8. package/dist/cli/index.js +2 -3
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/init-command.d.ts +1 -1
  11. package/dist/cli/init-command.d.ts.map +0 -0
  12. package/dist/cli/init-command.js +1 -1
  13. package/dist/cli/init-command.js.map +0 -0
  14. package/dist/cli/publish-command.d.ts +2 -2
  15. package/dist/cli/publish-command.d.ts.map +0 -0
  16. package/dist/cli/publish-command.js +3 -3
  17. package/dist/cli/publish-command.js.map +0 -0
  18. package/dist/clients/apim-client.d.ts +16 -5
  19. package/dist/clients/apim-client.d.ts.map +1 -1
  20. package/dist/clients/apim-client.js +22 -7
  21. package/dist/clients/apim-client.js.map +1 -1
  22. package/dist/clients/artifact-store.d.ts +4 -4
  23. package/dist/clients/artifact-store.d.ts.map +1 -1
  24. package/dist/clients/artifact-store.js +10 -4
  25. package/dist/clients/artifact-store.js.map +1 -1
  26. package/dist/clients/iapim-client.d.ts +14 -2
  27. package/dist/clients/iapim-client.d.ts.map +1 -1
  28. package/dist/clients/iapim-client.js +1 -1
  29. package/dist/clients/iapim-client.js.map +0 -0
  30. package/dist/clients/iartifact-store.d.ts +10 -5
  31. package/dist/clients/iartifact-store.d.ts.map +1 -1
  32. package/dist/clients/iartifact-store.js +1 -1
  33. package/dist/clients/iartifact-store.js.map +0 -0
  34. package/dist/lib/auto-generated.d.ts +0 -0
  35. package/dist/lib/auto-generated.d.ts.map +0 -0
  36. package/dist/lib/auto-generated.js +0 -0
  37. package/dist/lib/auto-generated.js.map +0 -0
  38. package/dist/lib/cloud-config.d.ts +1 -1
  39. package/dist/lib/cloud-config.d.ts.map +0 -0
  40. package/dist/lib/cloud-config.js +1 -1
  41. package/dist/lib/cloud-config.js.map +0 -0
  42. package/dist/lib/config-loader.d.ts +2 -7
  43. package/dist/lib/config-loader.d.ts.map +1 -1
  44. package/dist/lib/config-loader.js +3 -22
  45. package/dist/lib/config-loader.js.map +1 -1
  46. package/dist/lib/dependency-graph.d.ts +1 -1
  47. package/dist/lib/dependency-graph.d.ts.map +0 -0
  48. package/dist/lib/dependency-graph.js +1 -1
  49. package/dist/lib/dependency-graph.js.map +0 -0
  50. package/dist/lib/exit-codes.d.ts +1 -1
  51. package/dist/lib/exit-codes.d.ts.map +0 -0
  52. package/dist/lib/exit-codes.js +1 -1
  53. package/dist/lib/exit-codes.js.map +0 -0
  54. package/dist/lib/logger.d.ts +0 -0
  55. package/dist/lib/logger.d.ts.map +0 -0
  56. package/dist/lib/logger.js +1 -1
  57. package/dist/lib/logger.js.map +0 -0
  58. package/dist/lib/parallel-runner.d.ts +2 -2
  59. package/dist/lib/parallel-runner.d.ts.map +0 -0
  60. package/dist/lib/parallel-runner.js +2 -2
  61. package/dist/lib/parallel-runner.js.map +0 -0
  62. package/dist/lib/resource-path.d.ts +1 -1
  63. package/dist/lib/resource-path.d.ts.map +0 -0
  64. package/dist/lib/resource-path.js +1 -1
  65. package/dist/lib/resource-path.js.map +0 -0
  66. package/dist/lib/resource-uri.d.ts +1 -1
  67. package/dist/lib/resource-uri.d.ts.map +0 -0
  68. package/dist/lib/resource-uri.js +1 -1
  69. package/dist/lib/resource-uri.js.map +0 -0
  70. package/dist/lib/user-agent.d.ts +0 -0
  71. package/dist/lib/user-agent.d.ts.map +0 -0
  72. package/dist/lib/user-agent.js +0 -0
  73. package/dist/lib/user-agent.js.map +0 -0
  74. package/dist/lib/workspace-link.d.ts +31 -3
  75. package/dist/lib/workspace-link.d.ts.map +1 -1
  76. package/dist/lib/workspace-link.js +49 -3
  77. package/dist/lib/workspace-link.js.map +1 -1
  78. package/dist/models/config.d.ts +2 -4
  79. package/dist/models/config.d.ts.map +1 -1
  80. package/dist/models/config.js +1 -1
  81. package/dist/models/config.js.map +0 -0
  82. package/dist/models/resource-types.d.ts +1 -1
  83. package/dist/models/resource-types.d.ts.map +1 -1
  84. package/dist/models/resource-types.js +5 -3
  85. package/dist/models/resource-types.js.map +1 -1
  86. package/dist/models/types.d.ts +22 -1
  87. package/dist/models/types.d.ts.map +1 -1
  88. package/dist/models/types.js +1 -1
  89. package/dist/models/types.js.map +0 -0
  90. package/dist/services/api-extractor.d.ts +1 -1
  91. package/dist/services/api-extractor.d.ts.map +1 -1
  92. package/dist/services/api-extractor.js +29 -127
  93. package/dist/services/api-extractor.js.map +1 -1
  94. package/dist/services/api-publisher.d.ts +1 -1
  95. package/dist/services/api-publisher.d.ts.map +1 -1
  96. package/dist/services/api-publisher.js +71 -28
  97. package/dist/services/api-publisher.js.map +1 -1
  98. package/dist/services/delete-unmatched-service.d.ts +1 -1
  99. package/dist/services/delete-unmatched-service.d.ts.map +0 -0
  100. package/dist/services/delete-unmatched-service.js +1 -1
  101. package/dist/services/delete-unmatched-service.js.map +0 -0
  102. package/dist/services/dry-run-reporter.d.ts +1 -1
  103. package/dist/services/dry-run-reporter.d.ts.map +0 -0
  104. package/dist/services/dry-run-reporter.js +1 -1
  105. package/dist/services/dry-run-reporter.js.map +0 -0
  106. package/dist/services/extract-service.d.ts +1 -1
  107. package/dist/services/extract-service.d.ts.map +0 -0
  108. package/dist/services/extract-service.js +1 -1
  109. package/dist/services/extract-service.js.map +0 -0
  110. package/dist/services/filter-service.d.ts +19 -1
  111. package/dist/services/filter-service.d.ts.map +1 -1
  112. package/dist/services/filter-service.js +40 -2
  113. package/dist/services/filter-service.js.map +1 -1
  114. package/dist/services/git-diff-service.d.ts +1 -1
  115. package/dist/services/git-diff-service.d.ts.map +0 -0
  116. package/dist/services/git-diff-service.js +1 -1
  117. package/dist/services/git-diff-service.js.map +0 -0
  118. package/dist/services/identity-guide-service.d.ts +1 -1
  119. package/dist/services/identity-guide-service.d.ts.map +0 -0
  120. package/dist/services/identity-guide-service.js +12 -12
  121. package/dist/services/identity-guide-service.js.map +0 -0
  122. package/dist/services/init-service.d.ts +1 -1
  123. package/dist/services/init-service.d.ts.map +0 -0
  124. package/dist/services/init-service.js +1 -1
  125. package/dist/services/init-service.js.map +0 -0
  126. package/dist/services/keyvault-checker.d.ts +0 -0
  127. package/dist/services/keyvault-checker.d.ts.map +0 -0
  128. package/dist/services/keyvault-checker.js +0 -0
  129. package/dist/services/keyvault-checker.js.map +0 -0
  130. package/dist/services/override-merger.d.ts +1 -1
  131. package/dist/services/override-merger.d.ts.map +0 -0
  132. package/dist/services/override-merger.js +1 -1
  133. package/dist/services/override-merger.js.map +0 -0
  134. package/dist/services/product-extractor.d.ts +1 -1
  135. package/dist/services/product-extractor.d.ts.map +1 -1
  136. package/dist/services/product-extractor.js +27 -26
  137. package/dist/services/product-extractor.js.map +1 -1
  138. package/dist/services/product-publisher.d.ts +0 -0
  139. package/dist/services/product-publisher.d.ts.map +1 -1
  140. package/dist/services/product-publisher.js +25 -9
  141. package/dist/services/product-publisher.js.map +1 -1
  142. package/dist/services/prompt-service.d.ts +1 -1
  143. package/dist/services/prompt-service.d.ts.map +0 -0
  144. package/dist/services/prompt-service.js +1 -1
  145. package/dist/services/prompt-service.js.map +0 -0
  146. package/dist/services/publish-service.d.ts +1 -1
  147. package/dist/services/publish-service.d.ts.map +1 -1
  148. package/dist/services/publish-service.js +18 -6
  149. package/dist/services/publish-service.js.map +1 -1
  150. package/dist/services/resource-extractor.d.ts +1 -1
  151. package/dist/services/resource-extractor.d.ts.map +1 -1
  152. package/dist/services/resource-extractor.js +2 -53
  153. package/dist/services/resource-extractor.js.map +1 -1
  154. package/dist/services/resource-publisher.d.ts +9 -1
  155. package/dist/services/resource-publisher.d.ts.map +1 -1
  156. package/dist/services/resource-publisher.js +145 -9
  157. package/dist/services/resource-publisher.js.map +1 -1
  158. package/dist/services/secret-redactor.d.ts +1 -1
  159. package/dist/services/secret-redactor.d.ts.map +0 -0
  160. package/dist/services/secret-redactor.js +1 -1
  161. package/dist/services/secret-redactor.js.map +0 -0
  162. package/dist/services/transitive-resolver.d.ts +1 -1
  163. package/dist/services/transitive-resolver.d.ts.map +0 -0
  164. package/dist/services/transitive-resolver.js +1 -1
  165. package/dist/services/transitive-resolver.js.map +0 -0
  166. package/dist/services/workspace-extractor.d.ts +7 -1
  167. package/dist/services/workspace-extractor.d.ts.map +1 -1
  168. package/dist/services/workspace-extractor.js +75 -10
  169. package/dist/services/workspace-extractor.js.map +1 -1
  170. package/dist/templates/azure-devops/extract-pipeline.d.ts +1 -1
  171. package/dist/templates/azure-devops/extract-pipeline.d.ts.map +0 -0
  172. package/dist/templates/azure-devops/extract-pipeline.js +142 -142
  173. package/dist/templates/azure-devops/extract-pipeline.js.map +0 -0
  174. package/dist/templates/azure-devops/publish-pipeline.d.ts +1 -1
  175. package/dist/templates/azure-devops/publish-pipeline.d.ts.map +0 -0
  176. package/dist/templates/azure-devops/publish-pipeline.js +114 -114
  177. package/dist/templates/azure-devops/publish-pipeline.js.map +0 -0
  178. package/dist/templates/configs/filter-config.d.ts +1 -1
  179. package/dist/templates/configs/filter-config.d.ts.map +1 -1
  180. package/dist/templates/configs/filter-config.js +118 -109
  181. package/dist/templates/configs/filter-config.js.map +1 -1
  182. package/dist/templates/configs/override-config.d.ts +1 -1
  183. package/dist/templates/configs/override-config.d.ts.map +1 -1
  184. package/dist/templates/configs/override-config.js +92 -89
  185. package/dist/templates/configs/override-config.js.map +1 -1
  186. package/dist/templates/configs/package-json.d.ts +0 -0
  187. package/dist/templates/configs/package-json.d.ts.map +0 -0
  188. package/dist/templates/configs/package-json.js +0 -0
  189. package/dist/templates/configs/package-json.js.map +0 -0
  190. package/dist/templates/copilot/identity-setup-prompt.d.ts +0 -0
  191. package/dist/templates/copilot/identity-setup-prompt.d.ts.map +0 -0
  192. package/dist/templates/copilot/identity-setup-prompt.js +0 -0
  193. package/dist/templates/copilot/identity-setup-prompt.js.map +0 -0
  194. package/dist/templates/generated/embedded-markdown.d.ts +0 -0
  195. package/dist/templates/generated/embedded-markdown.d.ts.map +0 -0
  196. package/dist/templates/generated/embedded-markdown.js +0 -0
  197. package/dist/templates/generated/embedded-markdown.js.map +0 -0
  198. package/dist/templates/github-actions/extract-workflow.d.ts +1 -1
  199. package/dist/templates/github-actions/extract-workflow.d.ts.map +0 -0
  200. package/dist/templates/github-actions/extract-workflow.js +119 -119
  201. package/dist/templates/github-actions/extract-workflow.js.map +0 -0
  202. package/dist/templates/github-actions/publish-workflow.d.ts +1 -1
  203. package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -1
  204. package/dist/templates/github-actions/publish-workflow.js +147 -104
  205. package/dist/templates/github-actions/publish-workflow.js.map +1 -1
  206. package/package.json +69 -69
@@ -1,98 +1,101 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  /**
4
- * T047: Sample override configuration template per environment
4
+ * Sample override configuration template per environment
5
5
  * Generates environment-specific configuration.{env}.yaml files
6
6
  */
7
7
  export function generateOverrideConfig(environment) {
8
- return `# APIM Override Configuration for ${environment} environment
9
- # Customize resource properties for this specific environment
10
- # All APIOps Toolkit override sections are supported.
11
-
12
- # Override named values (e.g., API keys, connection strings)
13
- # namedValues:
14
- # - name: api-key
15
- # properties:
16
- # value: "${environment}-api-key-value"
17
- # - name: connection-string
18
- # properties:
19
- # value: "Server=${environment}-db.example.com;Database=mydb"
20
- # - name: secret-from-keyvault
21
- # properties:
22
- # keyVault:
23
- # secretIdentifier: "https://${environment}-kv.vault.azure.net/secrets/my-secret"
24
- # identityClientId: "00000000-0000-0000-0000-000000000000"
25
-
26
- # Override backend URLs per environment
27
- # backends:
28
- # - name: backend-api
29
- # properties:
30
- # url: "https://${environment}-api.example.com"
31
- # - name: legacy-backend
32
- # properties:
33
- # url: "https://${environment}-legacy.example.com"
34
- # resourceId: "/subscriptions/.../sites/${environment}-backend"
35
-
36
- # Override API service URLs (with optional nested sub-resource overrides)
37
- # apis:
38
- # - name: echo-api
39
- # properties:
40
- # serviceUrl: "https://${environment}-echo.example.com"
41
- # - name: petstore-api
42
- # properties:
43
- # serviceUrl: "https://${environment}-petstore.example.com"
44
- # displayName: "Petstore API (${environment})"
45
- # diagnostics:
46
- # - name: applicationinsights
47
- # properties:
48
- # loggerId: "appinsights-logger-${environment}"
49
- # verbosity: Error
50
- # policies:
51
- # - name: policy
52
- # properties:
53
- # format: rawxml
54
-
55
- # Override diagnostic logger references
56
- # diagnostics:
57
- # - name: applicationinsights
58
- # properties:
59
- # loggerId: "appinsights-logger-${environment}"
60
- # verbosity: Error
61
-
62
- # Override logger credentials or resource IDs
63
- # loggers:
64
- # - name: appinsights-logger
65
- # properties:
66
- # loggerType: applicationInsights
67
- # resourceId: "/subscriptions/xxxxx/resourceGroups/${environment}-rg/providers/microsoft.insights/components/${environment}-appinsights"
68
- # isBuffered: true
69
-
70
- # Override service-level policies
71
- # policies:
72
- # - name: policy
73
- # properties:
74
- # format: rawxml
75
-
76
- # Override gateway properties
77
- # gateways:
78
- # - name: on-prem-gateway
79
- # properties:
80
- # locationData:
81
- # name: "${environment} datacenter"
82
-
83
- # Override version sets, groups, subscriptions, products, tags, policy fragments
84
- # versionSets:
85
- # - name: my-version-set
86
- # properties:
87
- # displayName: "My Version Set (${environment})"
88
- # products:
89
- # - name: starter
90
- # properties:
91
- # displayName: "Starter Plan (${environment})"
92
- # tags:
93
- # - name: env-tag
94
- # properties:
95
- # displayName: "${environment}"
8
+ return `# APIM Override Configuration for ${environment} environment
9
+ # Customize resource properties for this specific environment
10
+ # For full format details and examples, see:
11
+ # https://github.com/Azure/apiops-cli/blob/main/docs/guides/environment-overrides.md
12
+
13
+ # Override named values (e.g., API keys, connection strings)
14
+ # namedValues:
15
+ # - name: api-key
16
+ # properties:
17
+ # value: "${environment}-api-key-value"
18
+ # - name: connection-string
19
+ # properties:
20
+ # value: "{#[DB_Connection_String]#}"
21
+ # - name: secret-from-keyvault
22
+ # properties:
23
+ # keyVault:
24
+ # secretIdentifier: "https://${environment}-kv.vault.azure.net/secrets/my-secret"
25
+ # identityClientId: "00000000-0000-0000-0000-000000000000"
26
+
27
+ # Override backend URLs per environment
28
+ # backends:
29
+ # - name: backend-api
30
+ # properties:
31
+ # url: "https://${environment}-api.example.com"
32
+ # - name: legacy-backend
33
+ # properties:
34
+ # url: "https://${environment}-legacy.example.com"
35
+ # resourceId: "/subscriptions/.../sites/${environment}-backend"
36
+
37
+ # Override API service URLs (with optional nested sub-resource overrides)
38
+ # apis:
39
+ # - name: echo-api
40
+ # properties:
41
+ # serviceUrl: "https://${environment}-echo.example.com"
42
+ # - name: petstore-api
43
+ # properties:
44
+ # serviceUrl: "https://${environment}-petstore.example.com"
45
+ # displayName: "Petstore API (${environment})"
46
+ # diagnostics:
47
+ # - name: applicationinsights
48
+ # properties:
49
+ # loggerId: "appinsights-logger-${environment}"
50
+ # verbosity: Error
51
+ # policies:
52
+ # - name: policy
53
+ # properties:
54
+ # format: rawxml
55
+
56
+ # Override diagnostic logger references
57
+ # diagnostics:
58
+ # - name: applicationinsights
59
+ # properties:
60
+ # loggerId: "appinsights-logger-${environment}"
61
+ # verbosity: Error
62
+
63
+ # Override logger credentials or resource IDs
64
+ # loggers:
65
+ # - name: appinsights-logger
66
+ # properties:
67
+ # loggerType: applicationInsights
68
+ # resourceId: "/subscriptions/xxxxx/resourceGroups/${environment}-rg/providers/microsoft.insights/components/${environment}-appinsights"
69
+ # isBuffered: true
70
+ # credentials:
71
+ # instrumentationKey: "<APP-INSIGHTS-INSTRUMENTATION-KEY>"
72
+
73
+ # Override service-level policies
74
+ # policies:
75
+ # - name: policy
76
+ # properties:
77
+ # format: rawxml
78
+
79
+ # Override gateway properties
80
+ # gateways:
81
+ # - name: on-prem-gateway
82
+ # properties:
83
+ # locationData:
84
+ # name: "${environment} datacenter"
85
+
86
+ # Override version sets, groups, subscriptions, products, tags, policy fragments
87
+ # versionSets:
88
+ # - name: my-version-set
89
+ # properties:
90
+ # displayName: "My Version Set (${environment})"
91
+ # products:
92
+ # - name: starter
93
+ # properties:
94
+ # displayName: "Starter Plan (${environment})"
95
+ # tags:
96
+ # - name: env-tag
97
+ # properties:
98
+ # displayName: "${environment}"
96
99
  `;
97
100
  }
98
101
  //# sourceMappingURL=override-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"override-config.js","sourceRoot":"","sources":["../../../src/templates/configs/override-config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC;;;GAGG;AAEH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,OAAO,qCAAqC,WAAW;;;;;;;;kBAQvC,WAAW;;;yBAGJ,WAAW;;;;uCAIG,WAAW;;;;;;;wBAO1B,WAAW;;;wBAGX,WAAW;gDACa,WAAW;;;;;;+BAM5B,WAAW;;;+BAGX,WAAW;sCACJ,WAAW;;;;4CAIL,WAAW;;;;;;;;;;;wCAWf,WAAW;;;;;;;;2DAQQ,WAAW,+CAA+C,WAAW;;;;;;;;;;;;;;mBAc7G,WAAW;;;;;;wCAMU,WAAW;;;;sCAIb,WAAW;;;;wBAIzB,WAAW;CAClC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"override-config.js","sourceRoot":"","sources":["../../../src/templates/configs/override-config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC;;;GAGG;AAEH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,OAAO,qCAAqC,WAAW;;;;;;;;;kBASvC,WAAW;;;;;;;uCAOU,WAAW;;;;;;;wBAO1B,WAAW;;;wBAGX,WAAW;gDACa,WAAW;;;;;;+BAM5B,WAAW;;;+BAGX,WAAW;sCACJ,WAAW;;;;4CAIL,WAAW;;;;;;;;;;;wCAWf,WAAW;;;;;;;;2DAQQ,WAAW,+CAA+C,WAAW;;;;;;;;;;;;;;;;mBAgB7G,WAAW;;;;;;wCAMU,WAAW;;;;sCAIb,WAAW;;;;wBAIzB,WAAW;CAClC,CAAC;AACF,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,5 @@
1
1
  /**
2
- * T043: GitHub Actions extract workflow template
2
+ * GitHub Actions extract workflow template
3
3
  * Generates extract workflow with manual trigger, configuration choice, and auto-PR creation
4
4
  */
5
5
  export interface ExtractWorkflowConfig {
@@ -1,128 +1,128 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  /**
4
- * T043: GitHub Actions extract workflow template
4
+ * GitHub Actions extract workflow template
5
5
  * Generates extract workflow with manual trigger, configuration choice, and auto-PR creation
6
6
  */
7
7
  export function generateExtractWorkflow(config) {
8
- return `name: Run APIM Extractor
9
-
10
- on:
11
- workflow_dispatch:
12
- inputs:
13
- ENVIRONMENT:
14
- description: 'Choose which environment to extract from'
15
- required: true
16
- type: choice
17
- default: dev
18
- options:
19
- - dev
20
- - prod
21
- CONFIGURATION_YAML_PATH:
22
- description: 'Choose whether to extract all APIs or use the extraction configuration file'
23
- required: true
24
- type: choice
25
- options:
26
- - Extract All APIs
27
- - configuration.extractor.yaml
28
-
29
- permissions:
30
- id-token: write
31
- contents: write
32
- pull-requests: write
33
-
34
- jobs:
35
- extract:
36
- runs-on: ubuntu-latest
37
- environment: \${{ github.event.inputs.ENVIRONMENT }}
38
- env:
39
- APIM_RESOURCE_GROUP: \${{ (github.event.inputs.ENVIRONMENT == 'dev' && secrets.APIM_RESOURCE_GROUP_DEV) || (github.event.inputs.ENVIRONMENT == 'prod' && secrets.APIM_RESOURCE_GROUP_PROD) }}
40
- APIM_SERVICE_NAME: \${{ (github.event.inputs.ENVIRONMENT == 'dev' && secrets.APIM_SERVICE_NAME_DEV) || (github.event.inputs.ENVIRONMENT == 'prod' && secrets.APIM_SERVICE_NAME_PROD) }}
41
- steps:
42
- - name: Validate required secrets
43
- run: |
44
- if [ -z "\${{ env.APIM_RESOURCE_GROUP }}" ]; then
45
- echo "::error::APIM_RESOURCE_GROUP secret is not set for environment '\${{ github.event.inputs.ENVIRONMENT }}'"
46
- echo "Please configure APIM_RESOURCE_GROUP_\${{ github.event.inputs.ENVIRONMENT == 'dev' && 'DEV' || 'PROD' }} secret in the \${{ github.event.inputs.ENVIRONMENT }} environment"
47
- exit 1
48
- fi
49
- if [ -z "\${{ env.APIM_SERVICE_NAME }}" ]; then
50
- echo "::error::APIM_SERVICE_NAME secret is not set for environment '\${{ github.event.inputs.ENVIRONMENT }}'"
51
- echo "Please configure APIM_SERVICE_NAME_\${{ github.event.inputs.ENVIRONMENT == 'dev' && 'DEV' || 'PROD' }} secret in the \${{ github.event.inputs.ENVIRONMENT }} environment"
52
- exit 1
53
- fi
54
- echo "✓ All required secrets are configured"
55
- echo " Environment: \${{ github.event.inputs.ENVIRONMENT }}"
56
- echo " Resource Group: \${{ env.APIM_RESOURCE_GROUP }}"
57
- echo " Service Name: \${{ env.APIM_SERVICE_NAME }}"
58
-
59
- - name: Checkout repository
60
- uses: actions/checkout@v4
61
-
62
- - name: Setup Node.js
63
- uses: actions/setup-node@v4
64
- with:
65
- node-version: '22'
66
-
67
- - name: Install dependencies
68
- run: npm install
69
-
70
- - name: Azure Login (Federated Credential)
71
- uses: azure/login@v2
72
- with:
73
- client-id: \${{ secrets.AZURE_CLIENT_ID }}
74
- tenant-id: \${{ secrets.AZURE_TENANT_ID }}
75
- subscription-id: \${{ secrets.AZURE_SUBSCRIPTION_ID }}
76
-
77
- - name: Run APIM Extract (All APIs)
78
- if: \${{ github.event.inputs.CONFIGURATION_YAML_PATH == 'Extract All APIs' }}
79
- run: |
80
- npx apiops extract \\
81
- --subscription-id \${{ secrets.AZURE_SUBSCRIPTION_ID }} \\
82
- --resource-group \${{ env.APIM_RESOURCE_GROUP }} \\
83
- --service-name \${{ env.APIM_SERVICE_NAME }} \\
84
- --output ${config.artifactDir}
85
-
86
- - name: Run APIM Extract (With Configuration)
87
- if: \${{ github.event.inputs.CONFIGURATION_YAML_PATH != 'Extract All APIs' }}
88
- run: |
89
- npx apiops extract \\
90
- --subscription-id \${{ secrets.AZURE_SUBSCRIPTION_ID }} \\
91
- --resource-group \${{ env.APIM_RESOURCE_GROUP }} \\
92
- --service-name \${{ env.APIM_SERVICE_NAME }} \\
93
- --output ${config.artifactDir} \\
94
- --filter configuration.extractor.yaml
95
-
96
- - name: Upload artifacts
97
- uses: actions/upload-artifact@v4
98
- with:
99
- name: apim-artifacts
100
- path: ${config.artifactDir}
101
- retention-days: 30
102
-
103
- create-pull-request:
104
- needs: extract
105
- runs-on: ubuntu-latest
106
- steps:
107
- - name: Checkout repository
108
- uses: actions/checkout@v4
109
-
110
- - name: Download artifacts
111
- uses: actions/download-artifact@v4
112
- with:
113
- name: apim-artifacts
114
- path: ${config.artifactDir}
115
-
116
- - name: Create pull request
117
- uses: peter-evans/create-pull-request@v6
118
- with:
119
- token: \${{ secrets.GITHUB_TOKEN }}
120
- commit-message: "chore: update APIM artifacts from extract"
121
- title: "APIM Extract - Update artifacts"
122
- body: >
123
- This PR is auto-generated by the APIM extract workflow.
124
- labels: extract, automated pr
125
- branch: apim-extract-\${{ github.run_id }}
8
+ return `name: Run APIM Extractor
9
+
10
+ on:
11
+ workflow_dispatch:
12
+ inputs:
13
+ ENVIRONMENT:
14
+ description: 'Choose which environment to extract from'
15
+ required: true
16
+ type: choice
17
+ default: dev
18
+ options:
19
+ - dev
20
+ - prod
21
+ CONFIGURATION_YAML_PATH:
22
+ description: 'Choose whether to extract all APIs or use the extraction configuration file'
23
+ required: true
24
+ type: choice
25
+ options:
26
+ - Extract All APIs
27
+ - configuration.extractor.yaml
28
+
29
+ permissions:
30
+ id-token: write
31
+ contents: write
32
+ pull-requests: write
33
+
34
+ jobs:
35
+ extract:
36
+ runs-on: ubuntu-latest
37
+ environment: \${{ github.event.inputs.ENVIRONMENT }}
38
+ env:
39
+ APIM_RESOURCE_GROUP: \${{ (github.event.inputs.ENVIRONMENT == 'dev' && secrets.APIM_RESOURCE_GROUP_DEV) || (github.event.inputs.ENVIRONMENT == 'prod' && secrets.APIM_RESOURCE_GROUP_PROD) }}
40
+ APIM_SERVICE_NAME: \${{ (github.event.inputs.ENVIRONMENT == 'dev' && secrets.APIM_SERVICE_NAME_DEV) || (github.event.inputs.ENVIRONMENT == 'prod' && secrets.APIM_SERVICE_NAME_PROD) }}
41
+ steps:
42
+ - name: Validate required secrets
43
+ run: |
44
+ if [ -z "\${{ env.APIM_RESOURCE_GROUP }}" ]; then
45
+ echo "::error::APIM_RESOURCE_GROUP secret is not set for environment '\${{ github.event.inputs.ENVIRONMENT }}'"
46
+ echo "Please configure APIM_RESOURCE_GROUP_\${{ github.event.inputs.ENVIRONMENT == 'dev' && 'DEV' || 'PROD' }} secret in the \${{ github.event.inputs.ENVIRONMENT }} environment"
47
+ exit 1
48
+ fi
49
+ if [ -z "\${{ env.APIM_SERVICE_NAME }}" ]; then
50
+ echo "::error::APIM_SERVICE_NAME secret is not set for environment '\${{ github.event.inputs.ENVIRONMENT }}'"
51
+ echo "Please configure APIM_SERVICE_NAME_\${{ github.event.inputs.ENVIRONMENT == 'dev' && 'DEV' || 'PROD' }} secret in the \${{ github.event.inputs.ENVIRONMENT }} environment"
52
+ exit 1
53
+ fi
54
+ echo "✓ All required secrets are configured"
55
+ echo " Environment: \${{ github.event.inputs.ENVIRONMENT }}"
56
+ echo " Resource Group: \${{ env.APIM_RESOURCE_GROUP }}"
57
+ echo " Service Name: \${{ env.APIM_SERVICE_NAME }}"
58
+
59
+ - name: Checkout repository
60
+ uses: actions/checkout@v4
61
+
62
+ - name: Setup Node.js
63
+ uses: actions/setup-node@v4
64
+ with:
65
+ node-version: '22'
66
+
67
+ - name: Install dependencies
68
+ run: npm install
69
+
70
+ - name: Azure Login (Federated Credential)
71
+ uses: azure/login@v2
72
+ with:
73
+ client-id: \${{ secrets.AZURE_CLIENT_ID }}
74
+ tenant-id: \${{ secrets.AZURE_TENANT_ID }}
75
+ subscription-id: \${{ secrets.AZURE_SUBSCRIPTION_ID }}
76
+
77
+ - name: Run APIM Extract (All APIs)
78
+ if: \${{ github.event.inputs.CONFIGURATION_YAML_PATH == 'Extract All APIs' }}
79
+ run: |
80
+ npx apiops extract \\
81
+ --subscription-id \${{ secrets.AZURE_SUBSCRIPTION_ID }} \\
82
+ --resource-group \${{ env.APIM_RESOURCE_GROUP }} \\
83
+ --service-name \${{ env.APIM_SERVICE_NAME }} \\
84
+ --output ${config.artifactDir}
85
+
86
+ - name: Run APIM Extract (With Configuration)
87
+ if: \${{ github.event.inputs.CONFIGURATION_YAML_PATH != 'Extract All APIs' }}
88
+ run: |
89
+ npx apiops extract \\
90
+ --subscription-id \${{ secrets.AZURE_SUBSCRIPTION_ID }} \\
91
+ --resource-group \${{ env.APIM_RESOURCE_GROUP }} \\
92
+ --service-name \${{ env.APIM_SERVICE_NAME }} \\
93
+ --output ${config.artifactDir} \\
94
+ --filter configuration.extractor.yaml
95
+
96
+ - name: Upload artifacts
97
+ uses: actions/upload-artifact@v4
98
+ with:
99
+ name: apim-artifacts
100
+ path: ${config.artifactDir}
101
+ retention-days: 30
102
+
103
+ create-pull-request:
104
+ needs: extract
105
+ runs-on: ubuntu-latest
106
+ steps:
107
+ - name: Checkout repository
108
+ uses: actions/checkout@v4
109
+
110
+ - name: Download artifacts
111
+ uses: actions/download-artifact@v4
112
+ with:
113
+ name: apim-artifacts
114
+ path: ${config.artifactDir}
115
+
116
+ - name: Create pull request
117
+ uses: peter-evans/create-pull-request@v6
118
+ with:
119
+ token: \${{ secrets.GITHUB_TOKEN }}
120
+ commit-message: "chore: update APIM artifacts from extract"
121
+ title: "APIM Extract - Update artifacts"
122
+ body: >
123
+ This PR is auto-generated by the APIM extract workflow.
124
+ labels: extract, automated pr
125
+ branch: apim-extract-\${{ github.run_id }}
126
126
  `;
127
127
  }
128
128
  //# sourceMappingURL=extract-workflow.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * T044: GitHub Actions publish workflow template
2
+ * GitHub Actions publish workflow template
3
3
  * Push-to-main trigger with commit ID choice, environment selection, and multi-env stages
4
4
  */
5
5
  export interface PublishWorkflowConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"publish-workflow.d.ts","sourceRoot":"","sources":["../../../src/templates/github-actions/publish-workflow.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAoH7E"}
1
+ {"version":3,"file":"publish-workflow.d.ts","sourceRoot":"","sources":["../../../src/templates/github-actions/publish-workflow.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CA+J7E"}