Files
renovate/lib/modules/manager/gitlabci/utils.ts
T
David Schneider 3eec5b7d88 fix(manager/gitlabci): strip Gitlab Dependecy Proxy variable from depName (#14734)
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>
2022-04-25 06:42:29 +02:00

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);
}
}