diff --git a/lib/modules/manager/gitlabci-include/common.spec.ts b/lib/modules/manager/gitlabci-include/common.spec.ts
deleted file mode 100644
index da66940cf4ad2a1e02ef9c405a06c683288867cb..0000000000000000000000000000000000000000
--- a/lib/modules/manager/gitlabci-include/common.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Fixtures } from '../../../../test/fixtures';
-import { parseSingleYaml } from '../../../util/yaml';
-import type { GitlabPipeline } from '../gitlabci/types';
-import { replaceReferenceTags } from '../gitlabci/utils';
-import {
-  filterIncludeFromGitlabPipeline,
-  isGitlabIncludeLocal,
-  isGitlabIncludeProject,
-  isNonEmptyObject,
-} from './common';
-
-const yamlFileMultiConfig = Fixtures.get('gitlab-ci.1.yaml');
-// TODO: use schema (#9610)
-const pipeline = parseSingleYaml<GitlabPipeline>(
-  replaceReferenceTags(yamlFileMultiConfig),
-);
-const includeLocal = { local: 'something' };
-const includeProject = { project: 'something' };
-
-describe('modules/manager/gitlabci-include/common', () => {
-  describe('filterIncludeFromGitlabPipeline()', () => {
-    it('returns GitlabPipeline without top level include key', () => {
-      expect(pipeline).toHaveProperty('include');
-      const filtered_pipeline = filterIncludeFromGitlabPipeline(pipeline);
-      expect(filtered_pipeline).not.toHaveProperty('include');
-      expect(filtered_pipeline).toEqual({
-        script: [null, null],
-      });
-    });
-  });
-
-  describe('isGitlabIncludeLocal()', () => {
-    it('returns true if GitlabInclude is GitlabIncludeLocal', () => {
-      expect(isGitlabIncludeLocal(includeLocal)).toBe(true);
-    });
-
-    it('returns false if GitlabInclude is not GitlabIncludeLocal', () => {
-      expect(isGitlabIncludeLocal(includeProject)).toBe(false);
-    });
-  });
-
-  describe('isGitlabIncludeProject()', () => {
-    it('returns true if GitlabInclude is GitlabIncludeProject', () => {
-      expect(isGitlabIncludeProject(includeProject)).toBe(true);
-    });
-
-    it('returns false if GitlabInclude is not GitlabIncludeProject', () => {
-      expect(isGitlabIncludeProject(includeLocal)).toBe(false);
-    });
-  });
-
-  describe('isNonEmptyObject()', () => {
-    it('returns true if not empty', () => {
-      expect(isNonEmptyObject({ attribute1: 1 })).toBe(true);
-    });
-
-    it('returns false if empty', () => {
-      expect(isNonEmptyObject({})).toBe(false);
-    });
-  });
-});
diff --git a/lib/modules/manager/gitlabci-include/common.ts b/lib/modules/manager/gitlabci-include/common.ts
deleted file mode 100644
index 7aefb628e62d00320ab6a13382cb764e292ed396..0000000000000000000000000000000000000000
--- a/lib/modules/manager/gitlabci-include/common.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import is from '@sindresorhus/is';
-import type {
-  GitlabInclude,
-  GitlabIncludeLocal,
-  GitlabIncludeProject,
-  GitlabPipeline,
-} from '../gitlabci/types';
-
-export function isNonEmptyObject(obj: any): boolean {
-  return is.object(obj) && Object.keys(obj).length !== 0;
-}
-
-export function filterIncludeFromGitlabPipeline(
-  pipeline: GitlabPipeline,
-): GitlabPipeline {
-  const pipeline_without_include: GitlabPipeline = {};
-  for (const key of Object.keys(pipeline).filter((key) => key !== 'include')) {
-    const pipeline_key = key as keyof typeof pipeline;
-    pipeline_without_include[pipeline_key] = pipeline[pipeline_key];
-  }
-  return pipeline_without_include;
-}
-
-export function isGitlabIncludeProject(
-  include: GitlabInclude,
-): include is GitlabIncludeProject {
-  return !is.undefined((include as GitlabIncludeProject).project);
-}
-
-export function isGitlabIncludeLocal(
-  include: GitlabInclude,
-): include is GitlabIncludeLocal {
-  return !is.undefined((include as GitlabIncludeLocal).local);
-}
diff --git a/lib/modules/manager/gitlabci-include/extract.ts b/lib/modules/manager/gitlabci-include/extract.ts
index 78c84dd0e9dabd1fd07d13f5d882235b72192eaa..2cc369e78c513ff00c227f80306c29e4e974b0d6 100644
--- a/lib/modules/manager/gitlabci-include/extract.ts
+++ b/lib/modules/manager/gitlabci-include/extract.ts
@@ -4,6 +4,11 @@ import { logger } from '../../../logger';
 import { regEx } from '../../../util/regex';
 import { parseSingleYaml } from '../../../util/yaml';
 import { GitlabTagsDatasource } from '../../datasource/gitlab-tags';
+import {
+  filterIncludeFromGitlabPipeline,
+  isGitlabIncludeProject,
+  isNonEmptyObject,
+} from '../gitlabci/common';
 import type {
   GitlabInclude,
   GitlabIncludeProject,
@@ -11,11 +16,6 @@ import type {
 } from '../gitlabci/types';
 import { replaceReferenceTags } from '../gitlabci/utils';
 import type { PackageDependency, PackageFileContent } from '../types';
-import {
-  filterIncludeFromGitlabPipeline,
-  isGitlabIncludeProject,
-  isNonEmptyObject,
-} from './common';
 
 function extractDepFromIncludeFile(
   includeObj: GitlabIncludeProject,
diff --git a/lib/modules/manager/gitlabci/common.spec.ts b/lib/modules/manager/gitlabci/common.spec.ts
index d40f202d265f111ad034d1fc95c72bf0255d6479..5000b3ccb8458764dc034df27419e76f0db7e5bf 100644
--- a/lib/modules/manager/gitlabci/common.spec.ts
+++ b/lib/modules/manager/gitlabci/common.spec.ts
@@ -1,9 +1,46 @@
-import { isGitlabIncludeLocal } from './common';
+import { codeBlock } from 'common-tags';
+import { parseSingleYaml } from '../../../util/yaml';
+import type { GitlabPipeline } from '../gitlabci/types';
+import { replaceReferenceTags } from '../gitlabci/utils';
+import {
+  filterIncludeFromGitlabPipeline,
+  isGitlabIncludeLocal,
+  isGitlabIncludeProject,
+  isNonEmptyObject,
+} from './common';
 
+// TODO: use schema (#9610)
+const pipeline = parseSingleYaml<GitlabPipeline>(
+  replaceReferenceTags(codeBlock`
+    include:
+    - project: mikebryant/include-source-example
+      file: /template.yaml
+      ref: 1.0.0
+    -   project: mikebryant/include-source-example2
+        file: /template.yaml
+        ref: master
+    - {"project":"mikebryant/include-source-example3", "file": "/template.yaml",}
+    - {}
+
+    script:
+    - !reference [.setup, script]
+    - !reference [arbitrary job name with space and no starting dot, nested1, nested2, nested3]`),
+);
 const includeLocal = { local: 'something' };
 const includeProject = { project: 'something' };
 
 describe('modules/manager/gitlabci/common', () => {
+  describe('filterIncludeFromGitlabPipeline()', () => {
+    it('returns GitlabPipeline without top level include key', () => {
+      expect(pipeline).toHaveProperty('include');
+      const filtered_pipeline = filterIncludeFromGitlabPipeline(pipeline);
+      expect(filtered_pipeline).not.toHaveProperty('include');
+      expect(filtered_pipeline).toEqual({
+        script: [null, null],
+      });
+    });
+  });
+
   describe('isGitlabIncludeLocal()', () => {
     it('returns true if GitlabInclude is GitlabIncludeLocal', () => {
       expect(isGitlabIncludeLocal(includeLocal)).toBe(true);
@@ -13,4 +50,24 @@ describe('modules/manager/gitlabci/common', () => {
       expect(isGitlabIncludeLocal(includeProject)).toBe(false);
     });
   });
+
+  describe('isGitlabIncludeProject()', () => {
+    it('returns true if GitlabInclude is GitlabIncludeProject', () => {
+      expect(isGitlabIncludeProject(includeProject)).toBe(true);
+    });
+
+    it('returns false if GitlabInclude is not GitlabIncludeProject', () => {
+      expect(isGitlabIncludeProject(includeLocal)).toBe(false);
+    });
+  });
+
+  describe('isNonEmptyObject()', () => {
+    it('returns true if not empty', () => {
+      expect(isNonEmptyObject({ attribute1: 1 })).toBe(true);
+    });
+
+    it('returns false if empty', () => {
+      expect(isNonEmptyObject({})).toBe(false);
+    });
+  });
 });
diff --git a/lib/modules/manager/gitlabci/common.ts b/lib/modules/manager/gitlabci/common.ts
index 4c7b4c4b92368d4fd637684be7df19cb6a11e91a..7aefb628e62d00320ab6a13382cb764e292ed396 100644
--- a/lib/modules/manager/gitlabci/common.ts
+++ b/lib/modules/manager/gitlabci/common.ts
@@ -1,5 +1,31 @@
 import is from '@sindresorhus/is';
-import type { GitlabInclude, GitlabIncludeLocal } from '../gitlabci/types';
+import type {
+  GitlabInclude,
+  GitlabIncludeLocal,
+  GitlabIncludeProject,
+  GitlabPipeline,
+} from '../gitlabci/types';
+
+export function isNonEmptyObject(obj: any): boolean {
+  return is.object(obj) && Object.keys(obj).length !== 0;
+}
+
+export function filterIncludeFromGitlabPipeline(
+  pipeline: GitlabPipeline,
+): GitlabPipeline {
+  const pipeline_without_include: GitlabPipeline = {};
+  for (const key of Object.keys(pipeline).filter((key) => key !== 'include')) {
+    const pipeline_key = key as keyof typeof pipeline;
+    pipeline_without_include[pipeline_key] = pipeline[pipeline_key];
+  }
+  return pipeline_without_include;
+}
+
+export function isGitlabIncludeProject(
+  include: GitlabInclude,
+): include is GitlabIncludeProject {
+  return !is.undefined((include as GitlabIncludeProject).project);
+}
 
 export function isGitlabIncludeLocal(
   include: GitlabInclude,