Skip to content

Commit

Permalink
feat: default cdk8s repos to use merge queues (#1004)
Browse files Browse the repository at this point in the history
Signed-off-by: Momo Kornher <mail@moritzkornher.de>
  • Loading branch information
mrgrain authored Oct 21, 2024
1 parent 6ef46c8 commit 6371728
Show file tree
Hide file tree
Showing 14 changed files with 932 additions and 1,065 deletions.
2 changes: 1 addition & 1 deletion .gitattributes

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions .github/workflows/auto-queue.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .github/workflows/build.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 0 additions & 26 deletions .mergify.yml

This file was deleted.

1 change: 0 additions & 1 deletion .npmignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .projen/files.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions src/projects/github.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { github } from 'projen';
import { Cdk8sTeamNodeProjectOptions } from './node';

/**
* Subset of options that have default values for all cdk8s-team GitHub projects.
* These will be available for customization by individual projects.
*/
export const defaultOptionsKeys = [
'mergify',
'mergeQueue',
] as const;
export type defaultOptionsKeysType = typeof defaultOptionsKeys[number];

/**
* Create the default GitHub project options.
*/
export function buildGitHubDefaultOptions(options: Cdk8sTeamNodeProjectOptions): Pick<github.GitHubOptions, defaultOptionsKeysType> {
return {
mergify: options.githubOptions?.mergify ?? false,
mergeQueue: options.githubOptions?.mergeQueue ?? true,
};
}
3 changes: 3 additions & 0 deletions src/projects/jsii.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as maker from 'codemaker';
import * as deepmerge from 'deepmerge';
import { DependencyType, cdk } from 'projen';
import * as github from './github';
import * as node from './node';
import * as ts from './typescript';
import { Backport } from '../components/backport/backport';
Expand Down Expand Up @@ -73,6 +74,7 @@ export class Cdk8sTeamJsiiProject extends cdk.JsiiProject {

const fixedNodeOptions = node.buildNodeProjectFixedOptions(options);
const defaultNodeOptions = node.buildNodeProjectDefaultOptions(options);
const defaultGitHubOptions = github.buildGitHubDefaultOptions(options);
const repoName = options.repoName ?? node.buildRepositoryName(options.name);

const golangBranch = options.golangBranch ?? 'main';
Expand All @@ -91,6 +93,7 @@ export class Cdk8sTeamJsiiProject extends cdk.JsiiProject {
publishToGo: golang ? golangTarget(repoName, golangBranch) : undefined,
...fixedNodeOptions,
...defaultNodeOptions,
githubOptions: defaultGitHubOptions,
}, options]) as cdk.JsiiProjectOptions;

super(finalOptions);
Expand Down
26 changes: 14 additions & 12 deletions src/projects/node.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as deepmerge from 'deepmerge';
import { DependencyType, JsonPatch, Project, ReleasableCommits, javascript } from 'projen';
import { NodeProject, NodeProjectOptions, UpgradeDependencies, UpgradeDependenciesOptions, UpgradeDependenciesSchedule } from 'projen/lib/javascript';
import * as github from './github';
import { Backport } from '../components/backport/backport';
import { CodeOfConductMD } from '../components/code-of-conduct/code-of-conduct';
import { DCO } from '../components/dco/devco';
Expand Down Expand Up @@ -87,7 +87,7 @@ export function buildNodeProjectFixedOptions(options: Cdk8sTeamNodeProjectOption
*/
export function buildNodeProjectDefaultOptions(options: Cdk8sTeamNodeProjectOptions): Pick<javascript.NodeProjectOptions, defaultOptionsKeysType> {

const depsUpgradeOptions: UpgradeDependenciesOptions = {
const depsUpgradeOptions: javascript.UpgradeDependenciesOptions = {
taskName: 'upgrade-runtime-dependencies',
pullRequestTitle: 'upgrade runtime dependencies',
// only include plain dependency because we will created a non release triggering PR for the rest
Expand All @@ -97,7 +97,7 @@ export function buildNodeProjectDefaultOptions(options: Cdk8sTeamNodeProjectOpti
// them without also upgrading devDependencies.
types: [DependencyType.RUNTIME, DependencyType.OPTIONAL, DependencyType.BUNDLED],
workflowOptions: {
schedule: UpgradeDependenciesSchedule.expressions([UPGRADE_RUNTIME_DEPENDENCIES_SCHEDULE]),
schedule: javascript.UpgradeDependenciesSchedule.expressions([UPGRADE_RUNTIME_DEPENDENCIES_SCHEDULE]),
},
};

Expand Down Expand Up @@ -167,11 +167,13 @@ export class Cdk8sTeamNodeProject extends javascript.NodeProject {

const fixedOptions = buildNodeProjectFixedOptions(options);
const defaultOptions = buildNodeProjectDefaultOptions(options);
const defaultGitHubOptions = github.buildGitHubDefaultOptions(options);

const finalOptions: NodeProjectOptions = deepmerge.all([{
const finalOptions: javascript.NodeProjectOptions = deepmerge.all([{
...fixedOptions,
...defaultOptions,
}, options]) as NodeProjectOptions;
githubOptions: defaultGitHubOptions,
}, options]) as javascript.NodeProjectOptions;

super(finalOptions);

Expand Down Expand Up @@ -250,7 +252,7 @@ export interface CommonComponentsOptions {
/**
* Add common components to the project.
*/
export function addComponents(project: NodeProject, repoName: string, options: CommonComponentsOptions) {
export function addComponents(project: javascript.NodeProject, repoName: string, options: CommonComponentsOptions) {

new CodeOfConductMD(project);
new DCO(project);
Expand All @@ -265,39 +267,39 @@ export function addComponents(project: NodeProject, repoName: string, options: C
configDeps.push('@cdk8s/projen-common');
}

new UpgradeDependencies(project, {
new javascript.UpgradeDependencies(project, {
include: configDeps,
taskName: 'upgrade-configuration',
pullRequestTitle: 'upgrade configuration',
types: [DependencyType.BUILD],
workflowOptions: {
branches: options.branches,
labels: ['auto-approve'],
schedule: UpgradeDependenciesSchedule.expressions([UPGRADE_CONFIGURATION_SCHEDULE]),
schedule: javascript.UpgradeDependenciesSchedule.expressions([UPGRADE_CONFIGURATION_SCHEDULE]),
},
});

new UpgradeDependencies(project, {
new javascript.UpgradeDependencies(project, {
exclude: [...configDeps, ...(options.compilerDeps ?? [])],
taskName: 'upgrade-dev-dependencies',
pullRequestTitle: 'upgrade dev dependencies',
workflowOptions: {
branches: options.branches,
labels: ['auto-approve'],
schedule: UpgradeDependenciesSchedule.expressions([UPGRADE_DEV_DEPENDENCIES_SCHEDULE]),
schedule: javascript.UpgradeDependenciesSchedule.expressions([UPGRADE_DEV_DEPENDENCIES_SCHEDULE]),
},
types: [DependencyType.BUILD, DependencyType.BUNDLED, DependencyType.DEVENV, DependencyType.TEST],
});

if (options.compilerDeps && options.compilerDeps.length > 0) {
new UpgradeDependencies(project, {
new javascript.UpgradeDependencies(project, {
include: options.compilerDeps,
taskName: 'upgrade-compiler-dependencies',
pullRequestTitle: 'upgrade compiler dependencies',
workflowOptions: {
branches: options.branches,
labels: ['auto-approve'],
schedule: UpgradeDependenciesSchedule.expressions([UPGRADE_COMPILER_DEPENDENCIES_SCHEDULE]),
schedule: javascript.UpgradeDependenciesSchedule.expressions([UPGRADE_COMPILER_DEPENDENCIES_SCHEDULE]),
},
types: [DependencyType.BUILD],
});
Expand Down
4 changes: 3 additions & 1 deletion src/projects/typescript.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as deepmerge from 'deepmerge';
import { DependencyType, typescript } from 'projen';
import * as github from './github';
import * as node from './node';
import { TriageOptions } from '../components';
import { Backport } from '../components/backport/backport';
Expand Down Expand Up @@ -58,10 +59,12 @@ export class Cdk8sTeamTypeScriptProject extends typescript.TypeScriptProject {

const fixedNodeOptions = node.buildNodeProjectFixedOptions(options);
const defaultNodeOptions = node.buildNodeProjectDefaultOptions(options);
const defaultGitHubOptions = github.buildGitHubDefaultOptions(options);

const finalOptions = deepmerge.all([{
...fixedNodeOptions,
...defaultNodeOptions,
githubOptions: defaultGitHubOptions,
}, options]) as typescript.TypeScriptProjectOptions;

super(finalOptions);
Expand All @@ -87,6 +90,5 @@ export class Cdk8sTeamTypeScriptProject extends typescript.TypeScriptProject {
this.deps.addDependency('@types/node@16.18.78', DependencyType.BUILD);

node.limitReleaseConcurrency(this);

}
}
Loading

0 comments on commit 6371728

Please sign in to comment.