@peterhauge/apiops-cli 0.2.1-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.
- package/README.md +167 -169
- package/dist/cli/extract-command.d.ts +2 -2
- package/dist/cli/extract-command.d.ts.map +1 -1
- package/dist/cli/extract-command.js +3 -5
- package/dist/cli/extract-command.js.map +1 -1
- package/dist/cli/index.js +2 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts +1 -1
- package/dist/cli/init-command.js +1 -1
- package/dist/cli/publish-command.d.ts +2 -2
- package/dist/cli/publish-command.js +3 -3
- package/dist/clients/apim-client.d.ts +16 -5
- package/dist/clients/apim-client.d.ts.map +1 -1
- package/dist/clients/apim-client.js +22 -7
- package/dist/clients/apim-client.js.map +1 -1
- package/dist/clients/artifact-store.d.ts +4 -4
- package/dist/clients/artifact-store.d.ts.map +1 -1
- package/dist/clients/artifact-store.js +10 -4
- package/dist/clients/artifact-store.js.map +1 -1
- package/dist/clients/iapim-client.d.ts +14 -2
- package/dist/clients/iapim-client.d.ts.map +1 -1
- package/dist/clients/iapim-client.js +1 -1
- package/dist/clients/iartifact-store.d.ts +10 -5
- package/dist/clients/iartifact-store.d.ts.map +1 -1
- package/dist/clients/iartifact-store.js +1 -1
- package/dist/lib/cloud-config.d.ts +1 -1
- package/dist/lib/cloud-config.js +1 -1
- package/dist/lib/config-loader.d.ts +2 -7
- package/dist/lib/config-loader.d.ts.map +1 -1
- package/dist/lib/config-loader.js +3 -22
- package/dist/lib/config-loader.js.map +1 -1
- package/dist/lib/dependency-graph.d.ts +1 -1
- package/dist/lib/dependency-graph.js +1 -1
- package/dist/lib/exit-codes.d.ts +1 -1
- package/dist/lib/exit-codes.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/parallel-runner.d.ts +2 -2
- package/dist/lib/parallel-runner.js +2 -2
- package/dist/lib/resource-path.d.ts +1 -1
- package/dist/lib/resource-path.js +1 -1
- package/dist/lib/resource-uri.d.ts +1 -1
- package/dist/lib/resource-uri.js +1 -1
- package/dist/lib/workspace-link.d.ts +31 -3
- package/dist/lib/workspace-link.d.ts.map +1 -1
- package/dist/lib/workspace-link.js +49 -3
- package/dist/lib/workspace-link.js.map +1 -1
- package/dist/models/config.d.ts +2 -4
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +1 -1
- package/dist/models/resource-types.d.ts +1 -1
- package/dist/models/resource-types.d.ts.map +1 -1
- package/dist/models/resource-types.js +5 -3
- package/dist/models/resource-types.js.map +1 -1
- package/dist/models/types.d.ts +22 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +1 -1
- package/dist/services/api-extractor.d.ts +1 -1
- package/dist/services/api-extractor.d.ts.map +1 -1
- package/dist/services/api-extractor.js +29 -127
- package/dist/services/api-extractor.js.map +1 -1
- package/dist/services/api-publisher.d.ts +1 -1
- package/dist/services/api-publisher.d.ts.map +1 -1
- package/dist/services/api-publisher.js +50 -18
- package/dist/services/api-publisher.js.map +1 -1
- package/dist/services/delete-unmatched-service.d.ts +1 -1
- package/dist/services/delete-unmatched-service.js +1 -1
- package/dist/services/dry-run-reporter.d.ts +1 -1
- package/dist/services/dry-run-reporter.js +1 -1
- package/dist/services/extract-service.d.ts +1 -1
- package/dist/services/extract-service.js +1 -1
- package/dist/services/filter-service.d.ts +19 -1
- package/dist/services/filter-service.d.ts.map +1 -1
- package/dist/services/filter-service.js +40 -2
- package/dist/services/filter-service.js.map +1 -1
- package/dist/services/git-diff-service.d.ts +1 -1
- package/dist/services/git-diff-service.js +1 -1
- package/dist/services/identity-guide-service.d.ts +1 -1
- package/dist/services/identity-guide-service.js +12 -12
- package/dist/services/init-service.d.ts +1 -1
- package/dist/services/init-service.js +1 -1
- package/dist/services/override-merger.d.ts +1 -1
- package/dist/services/override-merger.js +1 -1
- package/dist/services/product-extractor.d.ts +1 -1
- package/dist/services/product-extractor.d.ts.map +1 -1
- package/dist/services/product-extractor.js +27 -26
- package/dist/services/product-extractor.js.map +1 -1
- package/dist/services/product-publisher.d.ts.map +1 -1
- package/dist/services/product-publisher.js +25 -9
- package/dist/services/product-publisher.js.map +1 -1
- package/dist/services/prompt-service.d.ts +1 -1
- package/dist/services/prompt-service.js +1 -1
- package/dist/services/publish-service.d.ts +1 -1
- package/dist/services/publish-service.js +1 -1
- package/dist/services/resource-extractor.d.ts +1 -1
- package/dist/services/resource-extractor.js +1 -1
- package/dist/services/resource-publisher.d.ts +9 -1
- package/dist/services/resource-publisher.d.ts.map +1 -1
- package/dist/services/resource-publisher.js +30 -9
- package/dist/services/resource-publisher.js.map +1 -1
- package/dist/services/secret-redactor.d.ts +1 -1
- package/dist/services/secret-redactor.js +1 -1
- package/dist/services/transitive-resolver.d.ts +1 -1
- package/dist/services/transitive-resolver.js +1 -1
- package/dist/services/workspace-extractor.d.ts +7 -1
- package/dist/services/workspace-extractor.d.ts.map +1 -1
- package/dist/services/workspace-extractor.js +75 -10
- package/dist/services/workspace-extractor.js.map +1 -1
- package/dist/templates/azure-devops/extract-pipeline.d.ts +1 -1
- package/dist/templates/azure-devops/extract-pipeline.js +142 -142
- package/dist/templates/azure-devops/publish-pipeline.d.ts +1 -1
- package/dist/templates/azure-devops/publish-pipeline.js +114 -114
- package/dist/templates/configs/filter-config.d.ts +1 -1
- package/dist/templates/configs/filter-config.d.ts.map +1 -1
- package/dist/templates/configs/filter-config.js +118 -109
- package/dist/templates/configs/filter-config.js.map +1 -1
- package/dist/templates/configs/override-config.d.ts +1 -1
- package/dist/templates/configs/override-config.d.ts.map +1 -1
- package/dist/templates/configs/override-config.js +92 -91
- package/dist/templates/configs/override-config.js.map +1 -1
- package/dist/templates/github-actions/extract-workflow.d.ts +1 -1
- package/dist/templates/github-actions/extract-workflow.js +119 -119
- package/dist/templates/github-actions/publish-workflow.d.ts +1 -1
- package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -1
- package/dist/templates/github-actions/publish-workflow.js +147 -104
- package/dist/templates/github-actions/publish-workflow.js.map +1 -1
- package/package.json +69 -69
|
@@ -1,100 +1,101 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
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
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# policies
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
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}"
|
|
98
99
|
`;
|
|
99
100
|
}
|
|
100
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
|
|
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"}
|
|
@@ -1,128 +1,128 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
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 +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,
|
|
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"}
|