mirror of https://github.com/renovatebot/renovate
77 lines
2.2 KiB
TypeScript
77 lines
2.2 KiB
TypeScript
import { id as dockerVersioningId } from '../../versioning/docker';
|
|
import { Datasource } from '../datasource';
|
|
import type { GetReleasesConfig, Release, ReleaseResult } from '../types';
|
|
|
|
export class GithubRunnersDatasource extends Datasource {
|
|
static readonly id = 'github-runners';
|
|
|
|
override readonly sourceUrlSupport = 'package';
|
|
override readonly sourceUrlNote =
|
|
'We use the URL: https://github.com/actions/runner-images.';
|
|
|
|
/**
|
|
* Only add stable runners to the datasource. See datasource readme for details.
|
|
*/
|
|
private static readonly releases: Record<string, Release[] | undefined> = {
|
|
ubuntu: [
|
|
{ version: '24.04', isStable: false },
|
|
{ version: '22.04' },
|
|
{ version: '20.04' },
|
|
{ version: '18.04', isDeprecated: true },
|
|
{ version: '16.04', isDeprecated: true },
|
|
],
|
|
macos: [
|
|
{ version: '14' },
|
|
{ version: '14-large' },
|
|
{ version: '14-xlarge' },
|
|
{ version: '13' },
|
|
{ version: '13-large' },
|
|
{ version: '13-xlarge' },
|
|
{ version: '12-large', isDeprecated: true },
|
|
{ version: '12', isDeprecated: true },
|
|
{ version: '11', isDeprecated: true },
|
|
{ version: '10.15', isDeprecated: true },
|
|
],
|
|
windows: [
|
|
{ version: '2022' },
|
|
{ version: '2019' },
|
|
{ version: '2016', isDeprecated: true },
|
|
],
|
|
};
|
|
|
|
public static isValidRunner(
|
|
runnerName: string,
|
|
runnerVersion: string,
|
|
): boolean {
|
|
const runnerReleases = GithubRunnersDatasource.releases[runnerName];
|
|
if (!runnerReleases) {
|
|
return false;
|
|
}
|
|
|
|
const versionExists = runnerReleases.some(
|
|
({ version }) => version === runnerVersion,
|
|
);
|
|
|
|
return runnerVersion === 'latest' || versionExists;
|
|
}
|
|
|
|
override readonly defaultVersioning = dockerVersioningId;
|
|
|
|
constructor() {
|
|
super(GithubRunnersDatasource.id);
|
|
}
|
|
|
|
override getReleases({
|
|
packageName,
|
|
}: GetReleasesConfig): Promise<ReleaseResult | null> {
|
|
const releases = GithubRunnersDatasource.releases[packageName];
|
|
const releaseResult: ReleaseResult | null = releases
|
|
? {
|
|
releases,
|
|
sourceUrl: 'https://github.com/actions/runner-images',
|
|
}
|
|
: null;
|
|
return Promise.resolve(releaseResult);
|
|
}
|
|
}
|