@ticatec/omniflow-gitlab 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -0
  3. package/README_CN.md +95 -0
  4. package/dist/artifacts/GitLabContainerPublisher.d.ts +17 -0
  5. package/dist/artifacts/GitLabContainerPublisher.d.ts.map +1 -0
  6. package/dist/artifacts/GitLabContainerPublisher.js +44 -0
  7. package/dist/artifacts/GitLabContainerPublisher.js.map +1 -0
  8. package/dist/artifacts/GitLabGenericPublisher.d.ts +27 -0
  9. package/dist/artifacts/GitLabGenericPublisher.d.ts.map +1 -0
  10. package/dist/artifacts/GitLabGenericPublisher.js +176 -0
  11. package/dist/artifacts/GitLabGenericPublisher.js.map +1 -0
  12. package/dist/artifacts/GitLabMavenPublisher.d.ts +24 -0
  13. package/dist/artifacts/GitLabMavenPublisher.d.ts.map +1 -0
  14. package/dist/artifacts/GitLabMavenPublisher.js +185 -0
  15. package/dist/artifacts/GitLabMavenPublisher.js.map +1 -0
  16. package/dist/artifacts/GitLabNpmPublisher.d.ts +20 -0
  17. package/dist/artifacts/GitLabNpmPublisher.d.ts.map +1 -0
  18. package/dist/artifacts/GitLabNpmPublisher.js +68 -0
  19. package/dist/artifacts/GitLabNpmPublisher.js.map +1 -0
  20. package/dist/client/GitLabClient.d.ts +59 -0
  21. package/dist/client/GitLabClient.d.ts.map +1 -0
  22. package/dist/client/GitLabClient.js +169 -0
  23. package/dist/client/GitLabClient.js.map +1 -0
  24. package/dist/index.d.ts +29 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +41 -0
  27. package/dist/index.js.map +1 -0
  28. package/package.json +58 -0
  29. package/src/artifacts/GitLabContainerPublisher.ts +50 -0
  30. package/src/artifacts/GitLabGenericPublisher.ts +221 -0
  31. package/src/artifacts/GitLabMavenPublisher.ts +224 -0
  32. package/src/artifacts/GitLabNpmPublisher.ts +90 -0
  33. package/src/client/GitLabClient.ts +200 -0
  34. package/src/index.ts +58 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ticatec
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # @ticatec/omniflow-gitlab
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
5
+
6
+ [中文文档](./README_CN.md)
7
+
8
+ All-in-one GitLab artifact provider for OmniFlow. Provides full-stack artifact publishing (Docker/OCI, NPM, Maven, and Generic archive packages) under a single unified credential model.
9
+
10
+ ---
11
+
12
+ ## Features
13
+
14
+ - **Container Registry**: Push Docker/OCI container images directly to GitLab's built-in Container Registry (`GitLabContainerPublisher`).
15
+ - **NPM Package Registry**: Publish scoped npm packages to GitLab Package Registry (`GitLabNpmPublisher`).
16
+ - **Maven Package Registry**: Publish Java JAR and POM packages via direct HTTP PUT or Maven deploy (`GitLabMavenPublisher`).
17
+ - **Generic Package Registry**: Publish frontend distribution archives, binaries, or release assets (`GitLabGenericPublisher`). Also implements `download()`, which `deploy.web` uses to fetch an archive by name and version.
18
+ - **Unified Client & Credentials**: Same Personal Access Token (PAT), Project Deploy Token, or CI Job Token powers all package registries.
19
+
20
+ ---
21
+
22
+ ## How to Register
23
+
24
+ ### 1. One-Click Registration (Recommended)
25
+
26
+ ```typescript
27
+ import { defaultArtifactPublisherRegistry } from '@ticatec/omniflow-artifact'
28
+ import { registerGitLab } from '@ticatec/omniflow-gitlab'
29
+
30
+ // Register all GitLab drivers (Container + NPM + Maven + Generic)
31
+ registerGitLab({
32
+ artifactRegistry: defaultArtifactPublisherRegistry
33
+ })
34
+ ```
35
+
36
+ ### 2. Granular Registration
37
+
38
+ ```typescript
39
+ import { registerArtifactPublisher } from '@ticatec/omniflow-artifact'
40
+ import {
41
+ GitLabContainerPublisher,
42
+ GitLabNpmPublisher,
43
+ GitLabMavenPublisher,
44
+ GitLabGenericPublisher
45
+ } from '@ticatec/omniflow-gitlab'
46
+
47
+ registerArtifactPublisher(new GitLabContainerPublisher())
48
+ registerArtifactPublisher(new GitLabNpmPublisher())
49
+ registerArtifactPublisher(new GitLabMavenPublisher())
50
+ registerArtifactPublisher(new GitLabGenericPublisher())
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Configuration Example (`omniflow.yaml`)
56
+
57
+ ```yaml
58
+ omniflow:
59
+ registries:
60
+ # 1. GitLab Container Registry
61
+ docker:
62
+ gitlab:
63
+ server: registry.gitlab.com
64
+ namespace: my-group/my-project
65
+ username: deploy-token-user
66
+ password: ${GITLAB_DEPLOY_TOKEN}
67
+
68
+ # 2. GitLab NPM Registry
69
+ npm:
70
+ gitlab:
71
+ server: https://gitlab.com
72
+ namespace: my-group/my-project
73
+ token: ${GITLAB_TOKEN}
74
+
75
+ # 3. GitLab Maven Registry
76
+ maven:
77
+ gitlab:
78
+ server: https://gitlab.com
79
+ namespace: my-group/my-project
80
+ token: ${GITLAB_TOKEN}
81
+
82
+ # 4. GitLab Generic Packages Registry
83
+ generic:
84
+ gitlab:
85
+ server: https://gitlab.com
86
+ namespace: my-group/my-project
87
+ token: ${GITLAB_TOKEN}
88
+ ```
89
+
90
+ ---
91
+
92
+ ## License
93
+
94
+ MIT License.
package/README_CN.md ADDED
@@ -0,0 +1,95 @@
1
+ # @ticatec/omniflow-gitlab
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
5
+
6
+ [English Documentation](./README.md)
7
+
8
+ OmniFlow 的 GitLab 一体化制品库驱动插件。在统一凭证(Personal Access Token / Project Deploy Token / CI Job Token)体系下,提供全栈制品发布能力(Docker/OCI 镜像、NPM、Maven、Generic 通用归档包)。
9
+
10
+ ---
11
+
12
+ ## 特性
13
+
14
+ - **容器镜像仓库 (Container Registry)**:将 Docker/OCI 镜像推送到 GitLab 内置容器镜像仓库 (`GitLabContainerPublisher`)。
15
+ - **NPM 制品库 (NPM Registry)**:自动生成 `.npmrc` 并发布 scoped npm 包到 GitLab Package Registry (`GitLabNpmPublisher`)。
16
+ - **Maven 制品库 (Maven Registry)**:直接通过 HTTP PUT 或 Maven 构建将 Java JAR 和 POM 包发布到 GitLab (`GitLabMavenPublisher`)。
17
+ - **Generic 通用包发布 (Generic Packages)**:发布前端构建产物压缩包、二进制文件或 Release 归档文件 (`GitLabGenericPublisher`);同时实现 `download()`,`deploy.web` 用它按名称和版本取回归档。
18
+ - **统一客户端与凭证体系**:同一套 Personal Access Token (PAT)、Deploy Token 或 CI Job Token 即可覆盖全品类制品库。
19
+
20
+ ---
21
+
22
+ ## 如何注册
23
+
24
+ ### 1. 一键全量注册(推荐)
25
+
26
+ ```typescript
27
+ import { defaultArtifactPublisherRegistry } from '@ticatec/omniflow-artifact'
28
+ import { registerGitLab } from '@ticatec/omniflow-gitlab'
29
+
30
+ // 注册所有 GitLab 驱动(容器镜像 + NPM + Maven + 通用包)
31
+ registerGitLab({
32
+ artifactRegistry: defaultArtifactPublisherRegistry
33
+ })
34
+ ```
35
+
36
+ ### 2. 按需单项注册
37
+
38
+ ```typescript
39
+ import { registerArtifactPublisher } from '@ticatec/omniflow-artifact'
40
+ import {
41
+ GitLabContainerPublisher,
42
+ GitLabNpmPublisher,
43
+ GitLabMavenPublisher,
44
+ GitLabGenericPublisher
45
+ } from '@ticatec/omniflow-gitlab'
46
+
47
+ // 仅注册需要的制品发布器
48
+ registerArtifactPublisher(new GitLabContainerPublisher())
49
+ registerArtifactPublisher(new GitLabNpmPublisher())
50
+ registerArtifactPublisher(new GitLabMavenPublisher())
51
+ registerArtifactPublisher(new GitLabGenericPublisher())
52
+ ```
53
+
54
+ ---
55
+
56
+ ## 配置示例 (`omniflow.yaml`)
57
+
58
+ ```yaml
59
+ omniflow:
60
+ registries:
61
+ # 1. GitLab 容器镜像仓库
62
+ docker:
63
+ gitlab:
64
+ server: registry.gitlab.com
65
+ namespace: my-group/my-project
66
+ username: deploy-token-user
67
+ password: ${GITLAB_DEPLOY_TOKEN}
68
+
69
+ # 2. GitLab NPM 制品库
70
+ npm:
71
+ gitlab:
72
+ server: https://gitlab.com
73
+ namespace: my-group/my-project
74
+ token: ${GITLAB_TOKEN}
75
+
76
+ # 3. GitLab Maven 制品库
77
+ maven:
78
+ gitlab:
79
+ server: https://gitlab.com
80
+ namespace: my-group/my-project
81
+ token: ${GITLAB_TOKEN}
82
+
83
+ # 4. GitLab Generic 通用制品包
84
+ generic:
85
+ gitlab:
86
+ server: https://gitlab.com
87
+ namespace: my-group/my-project
88
+ token: ${GITLAB_TOKEN}
89
+ ```
90
+
91
+ ---
92
+
93
+ ## 许可证
94
+
95
+ MIT License.
@@ -0,0 +1,17 @@
1
+ import { BaseDockerPublisher } from '@ticatec/omniflow-artifact';
2
+ import type { RegistryConfig } from '@ticatec/omniflow-artifact';
3
+ /**
4
+ * GitLab Container Registry Publisher.
5
+ *
6
+ * Supports both gitlab.com Container Registry (registry.gitlab.com)
7
+ * and self-hosted GitLab container registries.
8
+ */
9
+ export declare class GitLabContainerPublisher extends BaseDockerPublisher {
10
+ readonly id = "gitlab-container";
11
+ readonly name = "GitLab Container Registry";
12
+ readonly platform = "gitlab";
13
+ readonly priority = 20;
14
+ detect(registry: RegistryConfig): boolean;
15
+ buildRepositoryUrl(registry: RegistryConfig, imageName: string): string;
16
+ }
17
+ //# sourceMappingURL=GitLabContainerPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabContainerPublisher.d.ts","sourceRoot":"","sources":["../../src/artifacts/GitLabContainerPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAGhE;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,QAAQ,CAAC,EAAE,sBAAqB;IAChC,QAAQ,CAAC,IAAI,+BAA8B;IAC3C,QAAQ,CAAC,QAAQ,YAAW;IAC5B,SAAkB,QAAQ,MAAK;IAEtB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAmBzC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAcjF"}
@@ -0,0 +1,44 @@
1
+ import { BaseDockerPublisher } from '@ticatec/omniflow-artifact';
2
+ import { isGitLabHost } from '../client/GitLabClient.js';
3
+ /**
4
+ * GitLab Container Registry Publisher.
5
+ *
6
+ * Supports both gitlab.com Container Registry (registry.gitlab.com)
7
+ * and self-hosted GitLab container registries.
8
+ */
9
+ export class GitLabContainerPublisher extends BaseDockerPublisher {
10
+ id = 'gitlab-container';
11
+ name = 'GitLab Container Registry';
12
+ platform = 'gitlab';
13
+ priority = 20;
14
+ detect(registry) {
15
+ if (registry.type !== 'docker' && registry.type !== 'container') {
16
+ return false;
17
+ }
18
+ const regName = (registry.name || '').toLowerCase();
19
+ if (regName === 'gitlab' || regName.startsWith('gitlab-')) {
20
+ return true;
21
+ }
22
+ const server = (registry.server || '').toLowerCase();
23
+ try {
24
+ const parsed = new URL(server.includes('://') ? server : `https://${server}`);
25
+ return isGitLabHost(parsed.hostname);
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ buildRepositoryUrl(registry, imageName) {
32
+ const host = this.normalizeServerHost(registry.server);
33
+ const cleanImage = imageName.replace(/^\/+/, '');
34
+ const ns = (registry.namespace || '').replace(/\/+$/, '');
35
+ if (ns) {
36
+ if (cleanImage.startsWith(`${ns}/`)) {
37
+ return `${host}/${cleanImage}`;
38
+ }
39
+ return `${host}/${ns}/${cleanImage}`;
40
+ }
41
+ return `${host}/${cleanImage}`;
42
+ }
43
+ }
44
+ //# sourceMappingURL=GitLabContainerPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabContainerPublisher.js","sourceRoot":"","sources":["../../src/artifacts/GitLabContainerPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD;;;;;GAKG;AACH,MAAM,OAAO,wBAAyB,SAAQ,mBAAmB;IACtD,EAAE,GAAG,kBAAkB,CAAA;IACvB,IAAI,GAAG,2BAA2B,CAAA;IAClC,QAAQ,GAAG,QAAQ,CAAA;IACV,QAAQ,GAAG,EAAE,CAAA;IAEtB,MAAM,CAAC,QAAwB;QACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChE,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QACnD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAA;YAC7E,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAEQ,kBAAkB,CAAC,QAAwB,EAAE,SAAiB;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAEhD,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACzD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,GAAG,IAAI,IAAI,UAAU,EAAE,CAAA;YAChC,CAAC;YACD,OAAO,GAAG,IAAI,IAAI,EAAE,IAAI,UAAU,EAAE,CAAA;QACtC,CAAC;QAED,OAAO,GAAG,IAAI,IAAI,UAAU,EAAE,CAAA;IAChC,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { BasePublisher } from '@ticatec/omniflow-artifact';
2
+ import type { ArtifactPayload, DownloadOptions, DownloadResult, PublishOptions, RegistryConfig } from '@ticatec/omniflow-artifact';
3
+ /**
4
+ * GitLab Generic Package Registry Publisher.
5
+ *
6
+ * Publishes arbitrary binary artifacts, tarballs (tar.gz), or zip files
7
+ * to GitLab's built-in Generic package registry.
8
+ * Endpoint format: PUT https://<gitlab_host>/api/v4/projects/<projectId>/packages/generic/<packageName>/<version>/<filename>
9
+ */
10
+ export declare class GitLabGenericPublisher extends BasePublisher {
11
+ readonly id = "gitlab-generic";
12
+ readonly name = "GitLab Generic Package Registry";
13
+ readonly platform = "gitlab";
14
+ readonly artifactType = "generic";
15
+ readonly priority = 20;
16
+ detect(registry: RegistryConfig): boolean;
17
+ buildTargetRef(artifact: ArtifactPayload, _registry: RegistryConfig): string;
18
+ exists(artifact: ArtifactPayload, registry: RegistryConfig): Promise<boolean>;
19
+ download(artifact: ArtifactPayload, registry: RegistryConfig, dest: string, options?: DownloadOptions): Promise<DownloadResult>;
20
+ login(registry: RegistryConfig, _options?: PublishOptions): Promise<void>;
21
+ protected doPublish(artifact: ArtifactPayload, registry: RegistryConfig, options?: PublishOptions): Promise<{
22
+ ref: string;
23
+ digest?: string;
24
+ metadata?: Record<string, unknown>;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=GitLabGenericPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabGenericPublisher.d.ts","sourceRoot":"","sources":["../../src/artifacts/GitLabGenericPublisher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAGlI;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,EAAE,oBAAmB;IAC9B,QAAQ,CAAC,IAAI,qCAAoC;IACjD,QAAQ,CAAC,QAAQ,YAAW;IAC5B,QAAQ,CAAC,YAAY,aAAY;IACjC,SAAkB,QAAQ,MAAK;IAEtB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAmBzC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM;IAMtE,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C7E,QAAQ,CACrB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC;IAiCpB,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;cAO/D,SAAS,CACvB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QACT,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,CAAC;CA2EH"}
@@ -0,0 +1,176 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import crypto from 'crypto';
4
+ import { BasePublisher } from '@ticatec/omniflow-artifact';
5
+ import { GitLabClient, isGitLabHost } from '../client/GitLabClient.js';
6
+ /**
7
+ * GitLab Generic Package Registry Publisher.
8
+ *
9
+ * Publishes arbitrary binary artifacts, tarballs (tar.gz), or zip files
10
+ * to GitLab's built-in Generic package registry.
11
+ * Endpoint format: PUT https://<gitlab_host>/api/v4/projects/<projectId>/packages/generic/<packageName>/<version>/<filename>
12
+ */
13
+ export class GitLabGenericPublisher extends BasePublisher {
14
+ id = 'gitlab-generic';
15
+ name = 'GitLab Generic Package Registry';
16
+ platform = 'gitlab';
17
+ artifactType = 'generic';
18
+ priority = 20;
19
+ detect(registry) {
20
+ if (registry.type !== 'generic' && registry.type !== 'archive') {
21
+ return false;
22
+ }
23
+ const regName = (registry.name || '').toLowerCase();
24
+ if (regName === 'gitlab' || regName.startsWith('gitlab-')) {
25
+ return true;
26
+ }
27
+ const server = (registry.server || '').toLowerCase();
28
+ try {
29
+ const parsed = new URL(server.includes('://') ? server : `https://${server}`);
30
+ return isGitLabHost(parsed.hostname);
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ buildTargetRef(artifact, _registry) {
37
+ const version = artifact.tags && artifact.tags.length > 0 ? artifact.tags[0] : 'latest';
38
+ const filename = path.basename(artifact.source);
39
+ return `${artifact.name}/${version}/${filename}`;
40
+ }
41
+ async exists(artifact, registry) {
42
+ const creds = this.resolveCredentials(registry);
43
+ const token = creds.token || creds.password;
44
+ const reg = registry;
45
+ const projectId = reg.namespace?.trim() ||
46
+ reg.options?.projectId?.trim() ||
47
+ reg.metadata?.projectId?.trim();
48
+ if (!projectId)
49
+ return false;
50
+ const client = new GitLabClient({
51
+ baseUrl: registry.server,
52
+ token,
53
+ username: creds.username,
54
+ password: creds.password
55
+ });
56
+ const version = artifact.tags && artifact.tags.length > 0 ? artifact.tags[0] : 'latest';
57
+ const packageName = artifact.name;
58
+ const filename = path.basename(artifact.source);
59
+ const baseUrl = client.getPackageApiUrl(projectId, 'generic');
60
+ const cleanBaseUrl = baseUrl.replace(/\/+$/, '');
61
+ const targetUrl = `${cleanBaseUrl}/${encodeURIComponent(packageName)}/${encodeURIComponent(version)}/${encodeURIComponent(filename)}`;
62
+ try {
63
+ const res = await client.request(targetUrl, { method: 'HEAD' });
64
+ if (res.ok || res.status === 200 || res.status === 204) {
65
+ return true;
66
+ }
67
+ if (res.status === 404) {
68
+ return false;
69
+ }
70
+ const errText = await client.extractErrorMessage(res);
71
+ throw new Error(`Failed to check artifact existence in GitLab Generic registry (${res.status}): ${errText}`);
72
+ }
73
+ catch (err) {
74
+ if (err?.message?.includes('Failed to check artifact existence in GitLab')) {
75
+ throw err;
76
+ }
77
+ throw new Error(`Failed to check artifact existence in GitLab Generic registry: ${client.maskSecrets(err?.message || String(err))}`);
78
+ }
79
+ }
80
+ async download(artifact, registry, dest, options) {
81
+ const creds = this.resolveCredentials(registry);
82
+ const reg = registry;
83
+ const projectId = reg.namespace?.trim() ||
84
+ reg.options?.projectId?.trim() ||
85
+ reg.metadata?.projectId?.trim();
86
+ if (!projectId) {
87
+ throw new Error(`GitLab Generic registry requires a valid project ID (specify via registry.namespace)`);
88
+ }
89
+ const client = new GitLabClient({
90
+ baseUrl: registry.server,
91
+ token: creds.token || creds.password,
92
+ username: creds.username,
93
+ password: creds.password,
94
+ timeoutMs: options?.timeoutMs
95
+ });
96
+ const version = artifact.tags?.[0] || 'latest';
97
+ const filename = path.basename(artifact.source);
98
+ const baseUrl = client.getPackageApiUrl(projectId, 'generic').replace(/\/+$/, '');
99
+ const targetUrl = `${baseUrl}/${encodeURIComponent(artifact.name)}/${encodeURIComponent(version)}/${encodeURIComponent(filename)}`;
100
+ const masked = client.maskSecrets(targetUrl);
101
+ this.log(` 📥 Downloading ${artifact.name} ${version} from GitLab: ${masked}`);
102
+ const res = await client.request(targetUrl, { method: 'GET' });
103
+ if (!res.ok) {
104
+ throw await this.downloadError(res, `${artifact.name} ${version} (${filename})`, masked);
105
+ }
106
+ return this.saveResponse(res, dest, masked);
107
+ }
108
+ async login(registry, _options) {
109
+ const creds = this.resolveCredentials(registry);
110
+ if (!creds.token && !creds.password) {
111
+ this.log(` ℹ No auth token configured for GitLab Generic registry ${registry.server}`);
112
+ }
113
+ }
114
+ async doPublish(artifact, registry, options) {
115
+ const creds = this.resolveCredentials(registry);
116
+ const token = creds.token || creds.password;
117
+ const reg = registry;
118
+ const projectId = reg.namespace?.trim() ||
119
+ reg.options?.projectId?.trim() ||
120
+ reg.metadata?.projectId?.trim();
121
+ if (!projectId) {
122
+ throw new Error(`GitLab Generic registry requires a valid project ID (specify via registry.namespace)`);
123
+ }
124
+ const client = new GitLabClient({
125
+ baseUrl: registry.server,
126
+ token,
127
+ username: creds.username,
128
+ password: creds.password
129
+ });
130
+ const version = artifact.tags && artifact.tags.length > 0 ? artifact.tags[0] : 'latest';
131
+ const packageName = artifact.name;
132
+ let filePath = artifact.source;
133
+ const stat = await fs.stat(filePath).catch(() => null);
134
+ if (!stat || !stat.isFile()) {
135
+ throw new Error(`Generic artifact source must be an existing file: ${filePath}`);
136
+ }
137
+ const filename = path.basename(filePath);
138
+ const fileBuffer = await fs.readFile(filePath);
139
+ const digest = `sha256:${crypto.createHash('sha256').update(fileBuffer).digest('hex')}`;
140
+ const baseUrl = client.getPackageApiUrl(projectId, 'generic');
141
+ const cleanBaseUrl = baseUrl.replace(/\/+$/, '');
142
+ const targetUrl = `${cleanBaseUrl}/${encodeURIComponent(packageName)}/${encodeURIComponent(version)}/${encodeURIComponent(filename)}`;
143
+ this.log(` 📤 Uploading Generic package file to GitLab: ${targetUrl}`);
144
+ if (options?.dryRun) {
145
+ this.log(` [dryRun] Would PUT ${filename} (${fileBuffer.length} bytes) to ${targetUrl}`);
146
+ return {
147
+ ref: `${packageName}/${version}/${filename}`,
148
+ digest,
149
+ metadata: { targetUrl, size: fileBuffer.length }
150
+ };
151
+ }
152
+ const res = await client.request(targetUrl, {
153
+ method: 'PUT',
154
+ headers: {
155
+ 'Content-Type': 'application/octet-stream'
156
+ },
157
+ body: fileBuffer
158
+ });
159
+ if (!res.ok && res.status !== 201 && res.status !== 200) {
160
+ const errText = await client.extractErrorMessage(res);
161
+ throw new Error(`Failed to upload generic package to GitLab (${res.status}): ${errText}`);
162
+ }
163
+ return {
164
+ ref: `${packageName}/${version}/${filename}`,
165
+ digest,
166
+ metadata: {
167
+ packageName,
168
+ version,
169
+ filename,
170
+ targetUrl,
171
+ size: fileBuffer.length
172
+ }
173
+ };
174
+ }
175
+ }
176
+ //# sourceMappingURL=GitLabGenericPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabGenericPublisher.js","sourceRoot":"","sources":["../../src/artifacts/GitLabGenericPublisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { BasePublisher } from '@ticatec/omniflow-artifact';
2
+ import type { ArtifactPayload, PublishOptions, RegistryConfig } from '@ticatec/omniflow-artifact';
3
+ /**
4
+ * GitLab Maven Package Registry Publisher.
5
+ *
6
+ * Endpoint format: PUT https://<gitlab_host>/api/v4/projects/<projectId>/packages/maven/{groupId}/{artifactId}/{version}/{filename}
7
+ */
8
+ export declare class GitLabMavenPublisher extends BasePublisher {
9
+ readonly id = "gitlab-maven";
10
+ readonly name = "GitLab Maven Repository";
11
+ readonly platform = "gitlab";
12
+ readonly artifactType = "maven";
13
+ readonly priority = 20;
14
+ detect(registry: RegistryConfig): boolean;
15
+ buildTargetRef(artifact: ArtifactPayload, _registry: RegistryConfig): string;
16
+ exists(artifact: ArtifactPayload, registry: RegistryConfig): Promise<boolean>;
17
+ login(registry: RegistryConfig, _options?: PublishOptions): Promise<void>;
18
+ protected doPublish(artifact: ArtifactPayload, registry: RegistryConfig, options?: PublishOptions): Promise<{
19
+ ref: string;
20
+ digest?: string;
21
+ metadata?: Record<string, unknown>;
22
+ }>;
23
+ }
24
+ //# sourceMappingURL=GitLabMavenPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitLabMavenPublisher.d.ts","sourceRoot":"","sources":["../../src/artifacts/GitLabMavenPublisher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAuE,MAAM,4BAA4B,CAAA;AAC/H,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAGjG;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,QAAQ,CAAC,EAAE,kBAAiB;IAC5B,QAAQ,CAAC,IAAI,6BAA4B;IACzC,QAAQ,CAAC,QAAQ,YAAW;IAC5B,QAAQ,CAAC,YAAY,WAAU;IAC/B,SAAkB,QAAQ,MAAK;IAEtB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAmBzC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM;IAOtE,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAwDtF,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;cAO/D,SAAS,CACvB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QACT,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,CAAC;CA2GH"}