@postman-cse/onboarding-bootstrap 0.9.1 → 0.11.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/.github/workflows/contract-smoke.yml +155 -0
- package/.omc/sessions/b36ac16d-ce26-4e94-ae7e-dd817f2430a3.json +8 -0
- package/CLAUDE.md +57 -0
- package/README.md +133 -12
- package/action.yml +21 -18
- package/dist/cli.cjs +370 -518
- package/dist/index.cjs +364 -509
- package/package.json +3 -2
- package/src/cli.ts +6 -11
- package/src/contracts.ts +30 -24
- package/src/index.ts +302 -322
- package/src/lib/postman/internal-integration-adapter.ts +116 -30
- package/src/lib/postman/postman-assets-client.ts +27 -4
- package/tests/bootstrap-action.test.ts +647 -77
- package/tests/cli.test.ts +15 -6
- package/tests/contract.test.ts +28 -3
- package/tests/internal-integration-adapter.test.ts +69 -0
- package/tests/postman-assets-client.test.ts +153 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@postman-cse/onboarding-bootstrap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Public open-alpha Postman bootstrap GitHub Action.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"@actions/io": "^1.1.3"
|
|
28
28
|
},
|
|
29
29
|
"overrides": {
|
|
30
|
-
"undici": "^6.24.0"
|
|
30
|
+
"undici": "^6.24.0",
|
|
31
|
+
"picomatch": ">=4.0.4"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|
|
33
34
|
"esbuild": "^0.27.3",
|
package/src/cli.ts
CHANGED
|
@@ -168,9 +168,7 @@ export function createCliDependencies(
|
|
|
168
168
|
): BootstrapExecutionDependencies {
|
|
169
169
|
const secretMasker = createSecretMasker([
|
|
170
170
|
inputs.postmanApiKey,
|
|
171
|
-
inputs.postmanAccessToken
|
|
172
|
-
inputs.githubToken,
|
|
173
|
-
inputs.ghFallbackToken
|
|
171
|
+
inputs.postmanAccessToken
|
|
174
172
|
]);
|
|
175
173
|
const cliExec = createCliExec(secretMasker);
|
|
176
174
|
|
|
@@ -193,18 +191,18 @@ export function parseCliArgs(argv: string[], env: NodeJS.ProcessEnv = process.en
|
|
|
193
191
|
'baseline-collection-id',
|
|
194
192
|
'smoke-collection-id',
|
|
195
193
|
'contract-collection-id',
|
|
194
|
+
'sync-examples',
|
|
195
|
+
'collection-sync-mode',
|
|
196
|
+
'spec-sync-mode',
|
|
197
|
+
'release-label',
|
|
196
198
|
'domain',
|
|
197
199
|
'domain-code',
|
|
198
200
|
'requester-email',
|
|
199
201
|
'workspace-admin-user-ids',
|
|
200
|
-
'environments-json',
|
|
201
|
-
'system-env-map-json',
|
|
202
202
|
'governance-mapping-json',
|
|
203
203
|
'integration-backend',
|
|
204
|
-
'github-auth-mode',
|
|
205
|
-
'github-token',
|
|
206
|
-
'gh-fallback-token',
|
|
207
204
|
'team-id',
|
|
205
|
+
'workspace-team-id',
|
|
208
206
|
'repo-url'
|
|
209
207
|
];
|
|
210
208
|
|
|
@@ -256,9 +254,6 @@ export async function runCli(
|
|
|
256
254
|
const inputs = resolveInputs(config.inputEnv);
|
|
257
255
|
const dependencies = createCliDependencies(inputs);
|
|
258
256
|
|
|
259
|
-
if (!dependencies.github) {
|
|
260
|
-
dependencies.core.info('GitHub repository variable persistence disabled for this run');
|
|
261
|
-
}
|
|
262
257
|
if (inputs.domain && !dependencies.internalIntegration) {
|
|
263
258
|
dependencies.core.warning(
|
|
264
259
|
'Skipping governance assignment because postman-access-token is not configured'
|
package/src/contracts.ts
CHANGED
|
@@ -43,6 +43,31 @@ export const openAlphaActionContract: BetaActionContract = {
|
|
|
43
43
|
description: 'Existing contract collection ID.',
|
|
44
44
|
required: false
|
|
45
45
|
},
|
|
46
|
+
'sync-examples': {
|
|
47
|
+
description: 'Whether linked spec/collection relations should enable example syncing.',
|
|
48
|
+
required: false,
|
|
49
|
+
default: 'true',
|
|
50
|
+
allowedValues: ['true', 'false']
|
|
51
|
+
},
|
|
52
|
+
'collection-sync-mode': {
|
|
53
|
+
description:
|
|
54
|
+
'Collection lifecycle policy: reuse existing collections, refresh them from the latest spec, or version them by release label.',
|
|
55
|
+
required: false,
|
|
56
|
+
default: 'refresh',
|
|
57
|
+
allowedValues: ['reuse', 'refresh', 'version']
|
|
58
|
+
},
|
|
59
|
+
'spec-sync-mode': {
|
|
60
|
+
description:
|
|
61
|
+
'Spec lifecycle policy: update the canonical spec or create/reuse a versioned spec for the resolved release label.',
|
|
62
|
+
required: false,
|
|
63
|
+
default: 'update',
|
|
64
|
+
allowedValues: ['update', 'version']
|
|
65
|
+
},
|
|
66
|
+
'release-label': {
|
|
67
|
+
description:
|
|
68
|
+
'Optional release label. When omitted for versioned sync, the action derives one from GitHub ref metadata.',
|
|
69
|
+
required: false
|
|
70
|
+
},
|
|
46
71
|
'project-name': {
|
|
47
72
|
description: 'Service project name.',
|
|
48
73
|
required: true
|
|
@@ -63,20 +88,14 @@ export const openAlphaActionContract: BetaActionContract = {
|
|
|
63
88
|
description: 'Comma-separated workspace admin user ids.',
|
|
64
89
|
required: false
|
|
65
90
|
},
|
|
91
|
+
'workspace-team-id': {
|
|
92
|
+
description: 'Numeric sub-team ID for org-mode workspace creation.',
|
|
93
|
+
required: false
|
|
94
|
+
},
|
|
66
95
|
'spec-url': {
|
|
67
96
|
description: 'HTTPS URL to the OpenAPI document.',
|
|
68
97
|
required: true
|
|
69
98
|
},
|
|
70
|
-
'environments-json': {
|
|
71
|
-
description: 'JSON array of environment slugs to preserve in bootstrap outputs.',
|
|
72
|
-
required: false,
|
|
73
|
-
default: '["prod"]'
|
|
74
|
-
},
|
|
75
|
-
'system-env-map-json': {
|
|
76
|
-
description: 'JSON map of environment slug to system environment id.',
|
|
77
|
-
required: false,
|
|
78
|
-
default: '{}'
|
|
79
|
-
},
|
|
80
99
|
'governance-mapping-json': {
|
|
81
100
|
description: 'JSON map of business domain to governance group name.',
|
|
82
101
|
required: false,
|
|
@@ -90,19 +109,6 @@ export const openAlphaActionContract: BetaActionContract = {
|
|
|
90
109
|
description: 'Postman access token used for governance and workspace mutations.',
|
|
91
110
|
required: false
|
|
92
111
|
},
|
|
93
|
-
'github-token': {
|
|
94
|
-
description: 'GitHub token for repository variable persistence.',
|
|
95
|
-
required: false
|
|
96
|
-
},
|
|
97
|
-
'gh-fallback-token': {
|
|
98
|
-
description: 'Fallback token for repository variable APIs.',
|
|
99
|
-
required: false
|
|
100
|
-
},
|
|
101
|
-
'github-auth-mode': {
|
|
102
|
-
description: 'GitHub auth mode for repository variable APIs.',
|
|
103
|
-
required: false,
|
|
104
|
-
default: 'github_token_first'
|
|
105
|
-
},
|
|
106
112
|
'integration-backend': {
|
|
107
113
|
description: 'Integration backend for downstream workspace connectivity.',
|
|
108
114
|
required: false,
|
|
@@ -148,8 +154,8 @@ export const openAlphaActionContract: BetaActionContract = {
|
|
|
148
154
|
'OpenAPI operation summary normalization before upload (missing or oversized summaries)',
|
|
149
155
|
'spec linting by UID',
|
|
150
156
|
'baseline, smoke, and contract collection generation',
|
|
157
|
+
'collection refresh and versioning policies',
|
|
151
158
|
'collection tagging',
|
|
152
|
-
'GitHub repository variable persistence for downstream sync steps',
|
|
153
159
|
'workspace, spec, and collection outputs'
|
|
154
160
|
],
|
|
155
161
|
removedBehavior: [
|