mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 10:09:50 +00:00
3eec5b7d88
Co-authored-by: Jamie Magee <jamie.magee@gmail.com> Co-authored-by: Michael Kriese <michael.kriese@visualon.de> Co-authored-by: Rhys Arkins <rhys@arkins.net>
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { regEx } from '../../../util/regex';
|
|
import { getDep } from '../dockerfile/extract';
|
|
import type { PackageDependency } from '../types';
|
|
|
|
const re = /!reference \[(.*?)\]/g;
|
|
|
|
/**
|
|
* Replaces GitLab reference tags before parsing, because our yaml parser cannot process them anyway.
|
|
* @param content pipeline yaml
|
|
* @returns replaced pipeline content
|
|
* https://docs.gitlab.com/ee/ci/yaml/#reference-tags
|
|
*/
|
|
export function replaceReferenceTags(content: string): string {
|
|
const res = content.replace(re, '');
|
|
return res;
|
|
}
|
|
|
|
const depProxyRe = regEx(
|
|
`(?<prefix>\\$\\{?CI_DEPENDENCY_PROXY_(?:DIRECT_)?GROUP_IMAGE_PREFIX\\}?\\/)(?<depName>.+)`
|
|
);
|
|
|
|
/**
|
|
* Get image dependencies respecting Gitlab Dependency Proxy
|
|
* @param imageName as used in .gitlab-ci.yml file
|
|
* @return package dependency for the image
|
|
*/
|
|
export function getGitlabDep(imageName: string): PackageDependency {
|
|
const match = depProxyRe.exec(imageName);
|
|
if (match?.groups) {
|
|
const dep = { ...getDep(match.groups.depName), replaceString: imageName };
|
|
dep.autoReplaceStringTemplate =
|
|
match.groups.prefix + dep.autoReplaceStringTemplate;
|
|
return dep;
|
|
} else {
|
|
return getDep(imageName);
|
|
}
|
|
}
|