-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathupgrade-dependencies.ts
50 lines (45 loc) · 1.47 KB
/
upgrade-dependencies.ts
1
2
3
4
5
6
7
8
9
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
import { Component, JsonPatch, javascript } from 'projen';
import { SUPPORT_POLICY } from './support';
export class JsiiDependencyUpgrades extends Component {
public constructor(project: javascript.NodeProject) {
super(project, 'jsii-deps-upgrades');
const branches = [
'main',
...Object.entries(SUPPORT_POLICY.maintenance).flatMap(([version, until]) => {
if (Date.now() > until.getTime()) {
return [];
}
return [`maintenance/v${version}`];
}),
];
const upgrades = new javascript.UpgradeDependencies(project, {
exclude: ['jsii', 'typescript'],
workflowOptions: {
branches,
labels: ['auto-approve'],
},
});
for (const upgradeWorkflow of upgrades.workflows) {
if (upgradeWorkflow.name.startsWith('upgrade-maintenance-')) {
upgradeWorkflow.file?.patch(
JsonPatch.add('/jobs/upgrade/steps/3', {
name: 'Back-port projenrc changes from main',
env: { CI: 'false' },
run: 'git fetch origin main && git checkout FETCH_HEAD -- README.md && yarn projen',
}),
);
}
}
// Upgrade jsii & typescript as patch only
new javascript.UpgradeDependencies(project, {
taskName: 'upgrade-jsii',
include: ['jsii', 'typescript'],
target: 'patch',
pullRequestTitle: 'upgrade jsii & typescript',
workflowOptions: {
branches,
labels: ['auto-approve'],
},
});
}
}