Skip to content

Commit 73b842f

Browse files
authored
feat(manager/github-actions): support registry aliases (#33377)
1 parent 60754ce commit 73b842f

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

docs/usage/configuration-options.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3707,6 +3707,7 @@ This feature works with the following managers:
37073707
- [`dockerfile`](modules/manager/dockerfile/index.md)
37083708
- [`droneci`](modules/manager/droneci/index.md)
37093709
- [`flux`](modules/manager/flux/index.md)
3710+
- [`github-actions`](modules/manager/github-actions/index.md)
37103711
- [`gitlabci`](modules/manager/gitlabci/index.md)
37113712
- [`helm-requirements`](modules/manager/helm-requirements/index.md)
37123713
- [`helm-values`](modules/manager/helm-values/index.md)

lib/modules/manager/github-actions/extract.ts

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import { GithubRunnersDatasource } from '../../datasource/github-runners';
1010
import { GithubTagsDatasource } from '../../datasource/github-tags';
1111
import * as dockerVersioning from '../../versioning/docker';
1212
import { getDep } from '../dockerfile/extract';
13-
import type { PackageDependency, PackageFileContent } from '../types';
13+
import type {
14+
ExtractConfig,
15+
PackageDependency,
16+
PackageFileContent,
17+
} from '../types';
1418
import type { Workflow } from './types';
1519

1620
const dockerActionRe = regEx(/^\s+uses\s*: ['"]?docker:\/\/([^'"]+)\s*$/);
@@ -44,7 +48,10 @@ function detectCustomGitHubRegistryUrlsForActions(): PackageDependency {
4448
return {};
4549
}
4650

47-
function extractWithRegex(content: string): PackageDependency[] {
51+
function extractWithRegex(
52+
content: string,
53+
config: ExtractConfig,
54+
): PackageDependency[] {
4855
const customRegistryUrlsPackageDependency =
4956
detectCustomGitHubRegistryUrlsForActions();
5057
logger.trace('github-actions.extractWithRegex()');
@@ -57,7 +64,7 @@ function extractWithRegex(content: string): PackageDependency[] {
5764
const dockerMatch = dockerActionRe.exec(line);
5865
if (dockerMatch) {
5966
const [, currentFrom] = dockerMatch;
60-
const dep = getDep(currentFrom);
67+
const dep = getDep(currentFrom, true, config.registryAliases);
6168
dep.depType = 'docker';
6269
deps.push(dep);
6370
continue;
@@ -126,11 +133,14 @@ function detectDatasource(registryUrl: string): PackageDependency {
126133
};
127134
}
128135

129-
function extractContainer(container: unknown): PackageDependency | undefined {
136+
function extractContainer(
137+
container: unknown,
138+
registryAliases: Record<string, string> | undefined,
139+
): PackageDependency | undefined {
130140
if (is.string(container)) {
131-
return getDep(container);
141+
return getDep(container, true, registryAliases);
132142
} else if (is.plainObject(container) && is.string(container.image)) {
133-
return getDep(container.image);
143+
return getDep(container.image, true, registryAliases);
134144
}
135145
return undefined;
136146
}
@@ -181,6 +191,7 @@ function extractRunners(runner: unknown): PackageDependency[] {
181191
function extractWithYAMLParser(
182192
content: string,
183193
packageFile: string,
194+
config: ExtractConfig,
184195
): PackageDependency[] {
185196
logger.trace('github-actions.extractWithYAMLParser()');
186197
const deps: PackageDependency[] = [];
@@ -198,14 +209,14 @@ function extractWithYAMLParser(
198209
}
199210

200211
for (const job of Object.values(pkg?.jobs ?? {})) {
201-
const dep = extractContainer(job?.container);
212+
const dep = extractContainer(job?.container, config.registryAliases);
202213
if (dep) {
203214
dep.depType = 'container';
204215
deps.push(dep);
205216
}
206217

207218
for (const service of Object.values(job?.services ?? {})) {
208-
const dep = extractContainer(service);
219+
const dep = extractContainer(service, config.registryAliases);
209220
if (dep) {
210221
dep.depType = 'service';
211222
deps.push(dep);
@@ -221,11 +232,12 @@ function extractWithYAMLParser(
221232
export function extractPackageFile(
222233
content: string,
223234
packageFile: string,
235+
config: ExtractConfig = {}, // TODO: enforce ExtractConfig
224236
): PackageFileContent | null {
225237
logger.trace(`github-actions.extractPackageFile(${packageFile})`);
226238
const deps = [
227-
...extractWithRegex(content),
228-
...extractWithYAMLParser(content, packageFile),
239+
...extractWithRegex(content, config),
240+
...extractWithYAMLParser(content, packageFile, config),
229241
];
230242
if (!deps.length) {
231243
return null;

0 commit comments

Comments
 (0)