@ankhorage/renovate 0.2.15 → 0.2.16
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/CHANGELOG.md +6 -0
- package/dist/changeset-workflow-write-boundary.test.d.ts +2 -0
- package/dist/changeset-workflow-write-boundary.test.d.ts.map +1 -0
- package/dist/changeset-workflow-write-boundary.test.js +45 -0
- package/dist/changeset-workflow-write-boundary.test.js.map +1 -0
- package/dist/changeset-workflow.test.js +0 -36
- package/dist/changeset-workflow.test.js.map +1 -1
- package/dist/devtools-sync-protocol.test.js +10 -7
- package/dist/devtools-sync-protocol.test.js.map +1 -1
- package/dist/package-release-rollout.test.d.ts +2 -0
- package/dist/package-release-rollout.test.d.ts.map +1 -0
- package/dist/package-release-rollout.test.js +113 -0
- package/dist/package-release-rollout.test.js.map +1 -0
- package/examples/renovate.json5 +4 -3
- package/package.json +1 -1
- package/dist/devtools-release-rollout.test.d.ts +0 -2
- package/dist/devtools-release-rollout.test.d.ts.map +0 -1
- package/dist/devtools-release-rollout.test.js +0 -114
- package/dist/devtools-release-rollout.test.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeset-workflow-write-boundary.test.d.ts","sourceRoot":"","sources":["../src/changeset-workflow-write-boundary.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { describe, expect, test } from 'bun:test';
|
|
3
|
+
const workflow = readFileSync(new URL('../.github/workflows/changeset.yml', import.meta.url), 'utf8');
|
|
4
|
+
const [prepareJob = '', afterPrepare = ''] = workflow.split('\n commit:');
|
|
5
|
+
const [commitJob = ''] = afterPrepare.split('\n merge:');
|
|
6
|
+
describe('trusted Renovate write boundary', () => {
|
|
7
|
+
test('limits derived writes to the Devtools-managed inventory', () => {
|
|
8
|
+
for (const path of [
|
|
9
|
+
'.github/workflows/ci.yml',
|
|
10
|
+
'.github/workflows/release.yml',
|
|
11
|
+
'.github/workflows/renovate.yml',
|
|
12
|
+
'.agents/.devtools-manifest.json',
|
|
13
|
+
'.gitignore',
|
|
14
|
+
'.prettierignore',
|
|
15
|
+
'.prettierrc.js',
|
|
16
|
+
'.vscode/extensions.json',
|
|
17
|
+
'.vscode/settings.json',
|
|
18
|
+
'AGENTS.md',
|
|
19
|
+
'bun.lock',
|
|
20
|
+
'eslint.config.mjs',
|
|
21
|
+
'eslint.examples.config.mjs',
|
|
22
|
+
'eslint.local.config.mjs',
|
|
23
|
+
'knip.config.ts',
|
|
24
|
+
'package.json',
|
|
25
|
+
'prettier.local.config.js',
|
|
26
|
+
'renovate.json5',
|
|
27
|
+
]) {
|
|
28
|
+
expect(workflow).toContain("'" + path + "'");
|
|
29
|
+
}
|
|
30
|
+
expect(workflow).not.toContain("'.github/workflows/studio-acceptance.yml'");
|
|
31
|
+
expect(workflow).toContain('Devtools sync changed an unexpected path:');
|
|
32
|
+
expect(workflow).toContain('Devtools sync created an unexpected path:');
|
|
33
|
+
expect(workflow).not.toContain('DEVTOOLS_MANAGED_SKILL_NAMES');
|
|
34
|
+
expect(workflow).toContain("segments[1] === 'skills'");
|
|
35
|
+
for (const job of [prepareJob, commitJob]) {
|
|
36
|
+
expect(job).toContain('const isExactManagedSkillPath = (relativePath) =>');
|
|
37
|
+
expect(job).toContain('declaredManagedSkillFiles.has(relativePath)');
|
|
38
|
+
expect(job).toContain('baseManagedSkillFiles.has(relativePath)');
|
|
39
|
+
expect(job).toContain('Managed skill content does not match its ownership manifest:');
|
|
40
|
+
}
|
|
41
|
+
expect(prepareJob).toContain('Devtools ownership manifest must be a regular file.');
|
|
42
|
+
expect(workflow).toContain('segments[2]) &&');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=changeset-workflow-write-boundary.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeset-workflow-write-boundary.test.js","sourceRoot":"","sources":["../src/changeset-workflow-write-boundary.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,QAAQ,GAAG,YAAY,CAC3B,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9D,MAAM,CACP,CAAC;AACF,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3E,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAE1D,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,KAAK,MAAM,IAAI,IAAI;YACjB,0BAA0B;YAC1B,+BAA+B;YAC/B,gCAAgC;YAChC,iCAAiC;YACjC,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,yBAAyB;YACzB,uBAAuB;YACvB,WAAW;YACX,UAAU;YACV,mBAAmB;YACnB,4BAA4B;YAC5B,yBAAyB;YACzB,gBAAgB;YAChB,cAAc;YACd,0BAA0B;YAC1B,gBAAgB;SACjB,EAAE,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;YAC3E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;YACrE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;QACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -115,42 +115,6 @@ describe('trusted Devtools owner preparation', () => {
|
|
|
115
115
|
expect(workflow).not.toContain('bun run --cwd repository');
|
|
116
116
|
});
|
|
117
117
|
});
|
|
118
|
-
describe('trusted Renovate write boundary', () => {
|
|
119
|
-
test('limits derived writes to the Devtools-managed inventory', () => {
|
|
120
|
-
for (const path of [
|
|
121
|
-
'.github/workflows/ci.yml',
|
|
122
|
-
'.github/workflows/release.yml',
|
|
123
|
-
'.github/workflows/renovate.yml',
|
|
124
|
-
'.agents/.devtools-manifest.json',
|
|
125
|
-
'.prettierrc.js',
|
|
126
|
-
'.vscode/extensions.json',
|
|
127
|
-
'.vscode/settings.json',
|
|
128
|
-
'AGENTS.md',
|
|
129
|
-
'bun.lock',
|
|
130
|
-
'eslint.config.mjs',
|
|
131
|
-
'eslint.examples.config.mjs',
|
|
132
|
-
'eslint.local.config.mjs',
|
|
133
|
-
'knip.config.ts',
|
|
134
|
-
'package.json',
|
|
135
|
-
'prettier.local.config.js',
|
|
136
|
-
]) {
|
|
137
|
-
expect(workflow).toContain("'" + path + "'");
|
|
138
|
-
}
|
|
139
|
-
expect(workflow).not.toContain("'.github/workflows/studio-acceptance.yml'");
|
|
140
|
-
expect(workflow).toContain('Devtools sync changed an unexpected path:');
|
|
141
|
-
expect(workflow).toContain('Devtools sync created an unexpected path:');
|
|
142
|
-
expect(workflow).not.toContain('DEVTOOLS_MANAGED_SKILL_NAMES');
|
|
143
|
-
expect(workflow).toContain("segments[1] === 'skills'");
|
|
144
|
-
for (const job of [prepareJob, commitJob]) {
|
|
145
|
-
expect(job).toContain('const isExactManagedSkillPath = (relativePath) =>');
|
|
146
|
-
expect(job).toContain('declaredManagedSkillFiles.has(relativePath)');
|
|
147
|
-
expect(job).toContain('baseManagedSkillFiles.has(relativePath)');
|
|
148
|
-
expect(job).toContain('Managed skill content does not match its ownership manifest:');
|
|
149
|
-
}
|
|
150
|
-
expect(prepareJob).toContain('Devtools ownership manifest must be a regular file.');
|
|
151
|
-
expect(workflow).toContain('segments[2]) &&');
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
118
|
describe('trusted Renovate deletion boundary', () => {
|
|
155
119
|
test('allows deletions only inside exact managed skill roots', () => {
|
|
156
120
|
expect(workflow).toContain('Devtools sync deleted an unexpected path:');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeset-workflow.test.js","sourceRoot":"","sources":["../src/changeset-workflow.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changeset-workflow.test.js","sourceRoot":"","sources":["../src/changeset-workflow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { describe, expect, test } from 'bun:test';
|
|
3
3
|
const protocolManifest = JSON.parse(readFileSync(new URL('../sync-protocol.json', import.meta.url), 'utf8'));
|
|
4
|
-
const workflow = readFileSync(new URL('../.github/workflows/rollout-
|
|
4
|
+
const workflow = readFileSync(new URL('../.github/workflows/rollout-package-release.yml', import.meta.url), 'utf8');
|
|
5
5
|
describe('Devtools sync protocol release contract', () => {
|
|
6
6
|
test('declares one positive canonical protocol', () => {
|
|
7
7
|
expect(protocolManifest.version).toBeInteger();
|
|
8
|
-
expect(protocolManifest.version).
|
|
8
|
+
expect(protocolManifest.version).toBe(2);
|
|
9
9
|
});
|
|
10
10
|
test('requires the exact published Devtools release to declare its protocol', () => {
|
|
11
|
-
expect(workflow).toContain('
|
|
11
|
+
expect(workflow).toContain("if (packageName === '@ankhorage/devtools')");
|
|
12
|
+
expect(workflow).toContain('encodeURIComponent(packageName)');
|
|
13
|
+
expect(workflow).toContain('encodeURIComponent(version)');
|
|
12
14
|
expect(workflow).toContain('releaseManifest?.ankhorage?.renovateSyncProtocol');
|
|
13
15
|
expect(workflow).toContain('The published Devtools release must declare ankhorage.renovateSyncProtocol as a positive integer.');
|
|
14
16
|
expect(workflow).toContain('canonicalProtocol < requiredProtocol');
|
|
15
|
-
expect(workflow).toContain('
|
|
17
|
+
expect(workflow).toContain('required_protocol: ${{ steps.registry.outputs.required_protocol }}');
|
|
16
18
|
});
|
|
17
19
|
test('reads protocol from the exact immutable consumer workflow pin', () => {
|
|
18
20
|
expect(workflow).toContain('const pin = /changeset\\.yml@([0-9a-f]{40})/');
|
|
@@ -28,16 +30,17 @@ describe('Devtools sync protocol rollout orchestration', () => {
|
|
|
28
30
|
const rollout = workflow.slice(rolloutStart);
|
|
29
31
|
const updateStart = rollout.indexOf('- name: Update the immutable Renovate workflow first');
|
|
30
32
|
const waitStart = rollout.indexOf("- name: Wait for this repository's compatible immutable Renovate workflow");
|
|
31
|
-
const
|
|
33
|
+
const packageStart = rollout.indexOf('- name: Run Renovate immediately for the released package');
|
|
32
34
|
expect(rolloutStart).toBeGreaterThan(0);
|
|
33
35
|
expect(rollout).toContain('repository: ${{ fromJSON(needs.validate.outputs.repositories) }}');
|
|
34
36
|
expect(updateStart).toBeGreaterThan(0);
|
|
35
37
|
expect(waitStart).toBeGreaterThan(updateStart);
|
|
36
|
-
expect(
|
|
38
|
+
expect(packageStart).toBeGreaterThan(waitStart);
|
|
37
39
|
expect(rollout).toContain('bun x renovate --enabled-managers=custom.regex');
|
|
38
40
|
expect(rollout).toContain('TARGET_REPOSITORY: ${{ matrix.repository }}');
|
|
39
41
|
expect(rollout).toContain('while (Date.now() < timeoutAt)');
|
|
40
42
|
expect(workflow.match(/while \(Date\.now\(\) < timeoutAt\)/gu)).toHaveLength(1);
|
|
43
|
+
expect(rollout).toContain('const timeoutAt = Date.now() + 60 * 60 * 1000;');
|
|
41
44
|
});
|
|
42
45
|
test('isolates consumer failures instead of gating one global barrier', () => {
|
|
43
46
|
const rolloutStart = workflow.indexOf('\n rollout:');
|
|
@@ -46,7 +49,7 @@ describe('Devtools sync protocol rollout orchestration', () => {
|
|
|
46
49
|
expect(workflow).not.toContain('\n prepare-protocol:');
|
|
47
50
|
expect(rollout).toContain('fail-fast: false');
|
|
48
51
|
expect(rollout).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
|
|
49
|
-
expect(rollout).toContain('"matchPackageNames":["
|
|
52
|
+
expect(rollout).toContain('"matchPackageNames":["${{ needs.validate.outputs.package_name }}"]');
|
|
50
53
|
expect(workflow).not.toContain('for (const repository of repositories)');
|
|
51
54
|
});
|
|
52
55
|
test('keeps direct consumer writes out of the rollout', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-sync-protocol.test.js","sourceRoot":"","sources":["../src/devtools-sync-protocol.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,YAAY,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACtC,CAAC;AACpC,MAAM,QAAQ,GAAG,YAAY,CAC3B,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"devtools-sync-protocol.test.js","sourceRoot":"","sources":["../src/devtools-sync-protocol.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-release-rollout.test.d.ts","sourceRoot":"","sources":["../src/package-release-rollout.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { describe, expect, test } from 'bun:test';
|
|
3
|
+
const registry = JSON.parse(readFileSync(new URL('../release-consumers.json', import.meta.url), 'utf8'));
|
|
4
|
+
const workflow = readFileSync(new URL('../.github/workflows/rollout-package-release.yml', import.meta.url), 'utf8');
|
|
5
|
+
describe('package release rollout registry', () => {
|
|
6
|
+
test('lists every reviewed managed package consumer exactly once', () => {
|
|
7
|
+
expect(registry.repositories).toHaveLength(37);
|
|
8
|
+
expect(new Set(registry.repositories).size).toBe(registry.repositories.length);
|
|
9
|
+
expect(registry.repositories).toContain('ankhorage/apm');
|
|
10
|
+
expect(registry.repositories).toContain('ankhorage/devtools');
|
|
11
|
+
expect(registry.repositories).toContain('ankhorage/local');
|
|
12
|
+
expect(registry.repositories).toContain('ankhorage/minikube');
|
|
13
|
+
expect(registry.repositories).toContain('ankhorage/studio');
|
|
14
|
+
expect(registry.repositories).toContain('ankhorage/renovate');
|
|
15
|
+
expect(registry.repositories).not.toContain('ankhorage/api-gateway');
|
|
16
|
+
expect(registry.repositories).not.toContain('ankhorage/gh');
|
|
17
|
+
expect(registry.repositories).not.toContain('ankhorage/zora-navigation');
|
|
18
|
+
for (const repository of registry.repositories) {
|
|
19
|
+
expect(repository).toMatch(/^ankhorage\/[a-z0-9-]+$/);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('package release rollout validation', () => {
|
|
24
|
+
test('accepts one exact Ankhorage package release identity', () => {
|
|
25
|
+
expect(workflow).toContain('repository_dispatch:');
|
|
26
|
+
expect(workflow).toContain('package-release');
|
|
27
|
+
expect(workflow).not.toContain('devtools-release');
|
|
28
|
+
expect(workflow).toContain('package_name:');
|
|
29
|
+
expect(workflow).toContain('source_repository:');
|
|
30
|
+
expect(workflow).toContain('Package rollout requires one valid @ankhorage package name.');
|
|
31
|
+
expect(workflow).toContain('Package rollout requires one exact published semver version.');
|
|
32
|
+
expect(workflow).toContain('Package rollout requires one valid Ankhorage source repository.');
|
|
33
|
+
expect(workflow).toContain('/^@ankhorage\\/[a-z0-9][a-z0-9-]*$/');
|
|
34
|
+
expect(workflow).toContain('/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/');
|
|
35
|
+
});
|
|
36
|
+
test('verifies the exact npm artifact before scheduling consumers', () => {
|
|
37
|
+
expect(workflow).toContain('https://registry.npmjs.org/');
|
|
38
|
+
expect(workflow).toContain('encodeURIComponent(packageName)');
|
|
39
|
+
expect(workflow).toContain('encodeURIComponent(version)');
|
|
40
|
+
expect(workflow).toContain('releaseManifest?.name !== packageName');
|
|
41
|
+
expect(workflow).toContain('releaseManifest?.version !== version');
|
|
42
|
+
expect(workflow).toContain('The npm release manifest does not match the dispatched package identity.');
|
|
43
|
+
});
|
|
44
|
+
test('targets only reviewed App-visible consumers and excludes the source repository', () => {
|
|
45
|
+
expect(workflow).toContain("fs.readFileSync('release-consumers.json', 'utf8')");
|
|
46
|
+
expect(workflow).toContain('github.rest.apps.listReposAccessibleToInstallation');
|
|
47
|
+
expect(workflow).toContain('The ankhorage-renovate-sync GitHub App installation does not include registered package consumers');
|
|
48
|
+
expect(workflow).toContain('(repository) => repository !== sourceRepository');
|
|
49
|
+
expect(workflow).toContain("github.event.pull_request.user.login == 'ankhorage-renovate-sync[bot]'");
|
|
50
|
+
expect(workflow).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
|
|
51
|
+
expect(workflow).toContain('RENOVATE_REQUIRE_CONFIG: required');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('package release rollout execution', () => {
|
|
55
|
+
test('keeps the immutable workflow protocol gate specific to Devtools releases', () => {
|
|
56
|
+
expect(workflow).toContain("if (packageName === '@ankhorage/devtools')");
|
|
57
|
+
expect(workflow).toContain('let requiredProtocol = 0;');
|
|
58
|
+
expect(workflow).toContain('if (requiredProtocol === 0)');
|
|
59
|
+
expect(workflow).toContain("core.setOutput('compatible', 'true')");
|
|
60
|
+
expect(workflow).toContain('The canonical Renovate sync protocol cannot satisfy this Devtools release.');
|
|
61
|
+
expect(workflow).toContain('Update the immutable Renovate workflow first');
|
|
62
|
+
expect(workflow).toContain("Wait for this repository's compatible immutable Renovate workflow");
|
|
63
|
+
});
|
|
64
|
+
test('guarantees the exact released package while retaining canonical grouping', () => {
|
|
65
|
+
const rules = readReleasePackageRules('@ankhorage/apm', '0.8.9');
|
|
66
|
+
expect(rules).toEqual([
|
|
67
|
+
{
|
|
68
|
+
matchDatasources: ['npm'],
|
|
69
|
+
matchPackageNames: ['@ankhorage/apm'],
|
|
70
|
+
enabled: true,
|
|
71
|
+
rangeStrategy: 'bump',
|
|
72
|
+
allowedVersions: '0.8.9',
|
|
73
|
+
recreateWhen: 'always',
|
|
74
|
+
},
|
|
75
|
+
]);
|
|
76
|
+
expect(workflow).toContain("RENOVATE_PR_HOURLY_LIMIT: '0'");
|
|
77
|
+
expect(workflow).toContain('bun x renovate');
|
|
78
|
+
expect(workflow).not.toContain('git push');
|
|
79
|
+
expect(workflow).not.toContain('pulls.create');
|
|
80
|
+
});
|
|
81
|
+
test('serializes grouped package releases without cancelling an in-flight rollout', () => {
|
|
82
|
+
expect(workflow).toContain('group: package-release-rollout');
|
|
83
|
+
expect(workflow).not.toContain('group: package-release-rollout-${{ github.event.client_payload.package_name || inputs.package_name }}');
|
|
84
|
+
expect(workflow).toContain('cancel-in-progress: false');
|
|
85
|
+
expect(workflow).toContain("node-version: '24'");
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
/*** Parse the final exact-package rollout rules from the managed workflow fixture. */
|
|
89
|
+
function readReleasePackageRules(packageName, version) {
|
|
90
|
+
const stepMarker = '- name: Run Renovate immediately for the released package';
|
|
91
|
+
const stepStart = workflow.indexOf(stepMarker);
|
|
92
|
+
if (stepStart < 0) {
|
|
93
|
+
throw new Error('Package rollout workflow does not declare the final package update step.');
|
|
94
|
+
}
|
|
95
|
+
const marker = 'RENOVATE_PACKAGE_RULES: >-\n ';
|
|
96
|
+
const start = workflow.indexOf(marker, stepStart);
|
|
97
|
+
if (start < 0) {
|
|
98
|
+
throw new Error('Package rollout workflow does not declare RENOVATE_PACKAGE_RULES.');
|
|
99
|
+
}
|
|
100
|
+
const rendered = workflow
|
|
101
|
+
.slice(start + marker.length)
|
|
102
|
+
.split('\n', 1)[0]
|
|
103
|
+
?.replace('${{ needs.validate.outputs.package_name }}', packageName)
|
|
104
|
+
.replace('${{ needs.validate.outputs.version }}', version);
|
|
105
|
+
if (!rendered)
|
|
106
|
+
throw new Error('Package rollout package rules are empty.');
|
|
107
|
+
const parsed = JSON.parse(rendered);
|
|
108
|
+
if (!Array.isArray(parsed) || parsed.length !== 1) {
|
|
109
|
+
throw new Error('Package rollout must render exactly one release-specific package rule.');
|
|
110
|
+
}
|
|
111
|
+
return parsed;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=package-release-rollout.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-release-rollout.test.js","sourceRoot":"","sources":["../src/package-release-rollout.test.ts"],"names":[],"mappings":"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"}
|
package/examples/renovate.json5
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* in consumers. Compatible @ankhorage/ankh and @ankhorage/devtools releases are grouped for the
|
|
9
9
|
* trusted synchronization workflow. The workflow runs the exact lock-selected provider, requires
|
|
10
10
|
* byte stability and current status, and commits the complete managed result without a manual
|
|
11
|
-
* repository sync.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* repository sync. Every published @ankhorage package immediately starts a targeted Renovate
|
|
12
|
+
* rollout for every repository in the reviewed managed-consumer registry; Devtools releases retain
|
|
13
|
+
* the immutable workflow protocol gate before their package update. The preset explicitly owns bun
|
|
14
|
+
* and custom.regex extraction so self-hosted manager
|
|
14
15
|
* filtering cannot silently drop package propagation. Never edit renovate/* branches manually;
|
|
15
16
|
* request Renovate rebase/retry to discard edits and return the branch to Renovate ownership.
|
|
16
17
|
* Renovate remains the only dependency-branch writer. The shared preset also performs a
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-release-rollout.test.d.ts","sourceRoot":"","sources":["../src/devtools-release-rollout.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { describe, expect, test } from 'bun:test';
|
|
3
|
-
const registry = JSON.parse(readFileSync(new URL('../devtools-consumers.json', import.meta.url), 'utf8'));
|
|
4
|
-
const workflow = readFileSync(new URL('../.github/workflows/rollout-devtools-release.yml', import.meta.url), 'utf8');
|
|
5
|
-
describe('Devtools release rollout registry', () => {
|
|
6
|
-
test('lists each current managed Devtools consumer exactly once', () => {
|
|
7
|
-
expect(registry.repositories).toHaveLength(33);
|
|
8
|
-
expect(new Set(registry.repositories).size).toBe(registry.repositories.length);
|
|
9
|
-
expect(registry.repositories).toContain('ankhorage/renovate');
|
|
10
|
-
expect(registry.repositories).toContain('ankhorage/game');
|
|
11
|
-
expect(registry.repositories).toContain('ankhorage/zora-game');
|
|
12
|
-
expect(registry.repositories).not.toContain('ankhorage/devtools');
|
|
13
|
-
expect(registry.repositories).not.toContain('ankhorage/api-gateway');
|
|
14
|
-
for (const repository of registry.repositories) {
|
|
15
|
-
expect(repository).toMatch(/^ankhorage\/[a-z0-9-]+$/);
|
|
16
|
-
}
|
|
17
|
-
expect(registry.repositories).toContain('ankhorage/repository');
|
|
18
|
-
expect(registry.repositories).toContain('ankhorage/navigator');
|
|
19
|
-
expect(registry.repositories).not.toContain('ankhorage/gh');
|
|
20
|
-
expect(registry.repositories).not.toContain('ankhorage/zora-navigation');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('Devtools release rollout update policy', () => {
|
|
24
|
-
test('bumps a compatible consumer caret range to the exact released minor', () => {
|
|
25
|
-
const rule = readReleasePackageRule('1.14.0');
|
|
26
|
-
const currentValue = '^1.13.0';
|
|
27
|
-
const expectedNewValue = rule.rangeStrategy === 'bump' ? `^${rule.allowedVersions}` : currentValue;
|
|
28
|
-
expect(rule).toEqual({
|
|
29
|
-
matchPackageNames: ['@ankhorage/devtools'],
|
|
30
|
-
enabled: true,
|
|
31
|
-
rangeStrategy: 'bump',
|
|
32
|
-
allowedVersions: '1.14.0',
|
|
33
|
-
recreateWhen: 'always',
|
|
34
|
-
});
|
|
35
|
-
expect(expectedNewValue).toBe('^1.14.0');
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
describe('Devtools release rollout workflow', () => {
|
|
39
|
-
test('accepts explicit release events and validates their exact version', () => {
|
|
40
|
-
expect(workflow).toContain('repository_dispatch:');
|
|
41
|
-
expect(workflow).toContain('devtools-release');
|
|
42
|
-
expect(workflow).toContain('workflow_dispatch:');
|
|
43
|
-
expect(workflow).toContain('Devtools rollout requires one exact published semver version.');
|
|
44
|
-
expect(workflow).toContain('/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/');
|
|
45
|
-
});
|
|
46
|
-
test('targets only the reviewed registry through the organization Renovate Sync App', () => {
|
|
47
|
-
expect(workflow).toContain("fs.readFileSync('devtools-consumers.json', 'utf8')");
|
|
48
|
-
expect(workflow).toContain('The Devtools consumer registry must not contain duplicates.');
|
|
49
|
-
expect(workflow).toContain("github.event.pull_request.user.login == 'ankhorage-renovate-sync[bot]'");
|
|
50
|
-
expect(workflow).toContain('github.rest.apps.listReposAccessibleToInstallation');
|
|
51
|
-
expect(workflow).toContain('The ankhorage-renovate-sync GitHub App installation does not include registered Devtools consumers');
|
|
52
|
-
expect(workflow).toContain('selected-repository App installation');
|
|
53
|
-
expect(workflow).toContain('https://github.com/ankhorage/renovate/issues/115');
|
|
54
|
-
expect(workflow).toContain('awaiting the one-time workflow bootstrap');
|
|
55
|
-
expect(workflow).toContain('has-repositories: ${{ steps.registry.outputs.has-repositories }}');
|
|
56
|
-
expect(workflow).toContain("if: needs.validate.outputs.has-repositories == 'true'");
|
|
57
|
-
expect(workflow).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
|
|
58
|
-
expect(workflow).toContain('RENOVATE_REQUIRE_CONFIG: required');
|
|
59
|
-
expect(workflow).toContain("RENOVATE_PR_HOURLY_LIMIT: '0'");
|
|
60
|
-
expect(workflow).toContain('actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1');
|
|
61
|
-
expect(workflow).toContain('ANKHORAGE_RENOVATE_SYNC_CLIENT_ID');
|
|
62
|
-
expect(workflow).toContain('ANKHORAGE_RENOVATE_SYNC_PRIVATE_KEY');
|
|
63
|
-
expect(workflow).toContain('permission-issues: write');
|
|
64
|
-
expect(workflow).toContain('permission-pull-requests: write');
|
|
65
|
-
});
|
|
66
|
-
test('serializes duplicate deliveries while leaving every consumer update to Renovate', () => {
|
|
67
|
-
expect(workflow).toContain('group: devtools-release-rollout');
|
|
68
|
-
expect(workflow).toContain('cancel-in-progress: false');
|
|
69
|
-
expect(workflow).toContain("node-version: '24'");
|
|
70
|
-
expect(workflow).toContain('bun x renovate');
|
|
71
|
-
expect(workflow).not.toContain('git push');
|
|
72
|
-
expect(workflow).not.toContain('pulls.create');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe('Devtools release rollout protocol isolation', () => {
|
|
76
|
-
test('keeps each consumer independent while waiting for protocol compatibility', () => {
|
|
77
|
-
expect(workflow).toContain(' rollout:');
|
|
78
|
-
expect(workflow).toContain('fail-fast: false');
|
|
79
|
-
expect(workflow).toContain('TARGET_REPOSITORY: ${{ matrix.repository }}');
|
|
80
|
-
expect(workflow).toContain('const repository = process.env.TARGET_REPOSITORY;');
|
|
81
|
-
expect(workflow).toContain("Wait for this repository's compatible immutable Renovate workflow");
|
|
82
|
-
expect(workflow).toContain('const timeoutAt = Date.now() + 20 * 60 * 1000;');
|
|
83
|
-
expect(workflow).toContain('setTimeout(resolve, 30000)');
|
|
84
|
-
expect(workflow).toContain('if (pin !== lastPin)');
|
|
85
|
-
expect(workflow).not.toContain(' protocol-barrier:');
|
|
86
|
-
expect(workflow).not.toContain('REPOSITORIES: ${{ needs.validate.outputs.repositories }}');
|
|
87
|
-
expect(workflow).not.toContain('for (const repository of repositories)');
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
/*** Parse the Devtools release rule from its final protocol-gated rollout step. */
|
|
91
|
-
function readReleasePackageRule(version) {
|
|
92
|
-
const stepMarker = '- name: Run Renovate immediately for the released Devtools version';
|
|
93
|
-
const stepStart = workflow.indexOf(stepMarker);
|
|
94
|
-
if (stepStart < 0) {
|
|
95
|
-
throw new Error('Devtools rollout workflow does not declare the final Devtools update step.');
|
|
96
|
-
}
|
|
97
|
-
const marker = 'RENOVATE_PACKAGE_RULES: >-\n ';
|
|
98
|
-
const start = workflow.indexOf(marker, stepStart);
|
|
99
|
-
if (start < 0) {
|
|
100
|
-
throw new Error('Devtools rollout workflow does not declare RENOVATE_PACKAGE_RULES.');
|
|
101
|
-
}
|
|
102
|
-
const rendered = workflow
|
|
103
|
-
.slice(start + marker.length)
|
|
104
|
-
.split('\n', 1)[0]
|
|
105
|
-
?.replace('${{ needs.validate.outputs.version }}', version);
|
|
106
|
-
if (!rendered)
|
|
107
|
-
throw new Error('Devtools rollout package rule is empty.');
|
|
108
|
-
const parsed = JSON.parse(rendered);
|
|
109
|
-
if (!Array.isArray(parsed) || parsed.length !== 1) {
|
|
110
|
-
throw new Error('Devtools rollout must render exactly one release-specific package rule.');
|
|
111
|
-
}
|
|
112
|
-
return parsed[0];
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=devtools-release-rollout.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-release-rollout.test.js","sourceRoot":"","sources":["../src/devtools-release-rollout.test.ts"],"names":[],"mappings":"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"}
|