diff --git a/lib/datasource/gitlab-tags/index.ts b/lib/datasource/gitlab-tags/index.ts
index 2098701568b8e71de4f439c750ae52a53dfaafe0..b7c75fafcad5297834d416a32c083689559cb96e 100644
--- a/lib/datasource/gitlab-tags/index.ts
+++ b/lib/datasource/gitlab-tags/index.ts
@@ -1,15 +1,15 @@
 import * as packageCache from '../../util/cache/package';
 import { GitlabHttp } from '../../util/http/gitlab';
-import { regEx } from '../../util/regex';
 import { joinUrlParts } from '../../util/url';
 import type { GetReleasesConfig, ReleaseResult } from '../types';
 import type { GitlabTag } from './types';
+import { defaultRegistryUrl, getDepHost, getSourceUrl } from './util';
 
 export const id = 'gitlab-tags';
 const gitlabApi = new GitlabHttp(id);
 
 export const customRegistrySupport = true;
-export const defaultRegistryUrls = ['https://gitlab.com'];
+export const defaultRegistryUrls = [defaultRegistryUrl];
 export const registryStrategy = 'first';
 
 const cacheNamespace = 'datasource-gitlab';
@@ -23,7 +23,7 @@ export async function getReleases({
   registryUrl,
   lookupName: repo,
 }: GetReleasesConfig): Promise<ReleaseResult | null> {
-  const depHost = registryUrl.replace(regEx(/\/api\/v4$/), '');
+  const depHost = getDepHost(registryUrl);
 
   const cachedResult = await packageCache.get<ReleaseResult>(
     cacheNamespace,
@@ -51,7 +51,7 @@ export async function getReleases({
   ).body;
 
   const dependency: ReleaseResult = {
-    sourceUrl: joinUrlParts(depHost, repo),
+    sourceUrl: getSourceUrl(repo, registryUrl),
     releases: null,
   };
   dependency.releases = gitlabTags.map(({ name, commit }) => ({
diff --git a/lib/datasource/gitlab-tags/util.ts b/lib/datasource/gitlab-tags/util.ts
new file mode 100644
index 0000000000000000000000000000000000000000..789424210cec7aad4993d5ec39e839457f02e924
--- /dev/null
+++ b/lib/datasource/gitlab-tags/util.ts
@@ -0,0 +1,13 @@
+import { regEx } from '../../util/regex';
+import { joinUrlParts } from '../../util/url';
+
+export const defaultRegistryUrl = 'https://gitlab.com';
+
+export function getDepHost(registryUrl: string = defaultRegistryUrl): string {
+  return registryUrl.replace(regEx(/\/api\/v4$/), '');
+}
+
+export function getSourceUrl(lookupName: string, registryUrl?: string): string {
+  const depHost = getDepHost(registryUrl);
+  return joinUrlParts(depHost, lookupName);
+}