Skip to content
Snippets Groups Projects
Select Git revision
  • 36e2b328bba5f7b1a21c3e51dfb98887600e5668
  • main default protected
  • next
  • renovate/main-ghcr.io-renovatebot-base-image-10.x
  • renovate/main-ghcr.io-containerbase-devcontainer-13.x
  • revert-31645-feat/rename-gradle-wrapper-validation-action
  • renovate/main-redis-5.x
  • fix/36615b-branch-reuse-no-cache
  • chore/punycode
  • fix/36615-branch-reuse-bug
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • 41.32.1
  • 41.32.0
  • 41.31.1
  • 41.31.0
  • 41.30.5
  • 41.30.4
  • 41.30.3
  • 41.30.2
  • 41.30.1
  • 41.30.0
  • 41.29.1
  • 41.29.0
  • 41.28.2
  • 41.28.1
  • 41.28.0
  • 41.27.1
  • 41.27.0
  • 41.26.2
  • 41.26.1
  • 41.26.0
41 results

utils.ts

Blame
  • utils.ts 1.25 KiB
    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,
      registryAliases?: Record<string, string>
    ): PackageDependency {
      const match = depProxyRe.exec(imageName);
      if (match?.groups) {
        const dep = { ...getDep(match.groups.depName), replaceString: imageName };
        // TODO: types (#22198)
        dep.autoReplaceStringTemplate = `${match.groups.prefix}${dep.autoReplaceStringTemplate}`;
        return dep;
      }
      return getDep(imageName, true, registryAliases);
    }