@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.
- package/LICENSE +21 -0
- package/README.md +94 -0
- package/README_CN.md +95 -0
- package/dist/artifacts/GitLabContainerPublisher.d.ts +17 -0
- package/dist/artifacts/GitLabContainerPublisher.d.ts.map +1 -0
- package/dist/artifacts/GitLabContainerPublisher.js +44 -0
- package/dist/artifacts/GitLabContainerPublisher.js.map +1 -0
- package/dist/artifacts/GitLabGenericPublisher.d.ts +27 -0
- package/dist/artifacts/GitLabGenericPublisher.d.ts.map +1 -0
- package/dist/artifacts/GitLabGenericPublisher.js +176 -0
- package/dist/artifacts/GitLabGenericPublisher.js.map +1 -0
- package/dist/artifacts/GitLabMavenPublisher.d.ts +24 -0
- package/dist/artifacts/GitLabMavenPublisher.d.ts.map +1 -0
- package/dist/artifacts/GitLabMavenPublisher.js +185 -0
- package/dist/artifacts/GitLabMavenPublisher.js.map +1 -0
- package/dist/artifacts/GitLabNpmPublisher.d.ts +20 -0
- package/dist/artifacts/GitLabNpmPublisher.d.ts.map +1 -0
- package/dist/artifacts/GitLabNpmPublisher.js +68 -0
- package/dist/artifacts/GitLabNpmPublisher.js.map +1 -0
- package/dist/client/GitLabClient.d.ts +59 -0
- package/dist/client/GitLabClient.d.ts.map +1 -0
- package/dist/client/GitLabClient.js +169 -0
- package/dist/client/GitLabClient.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
- package/src/artifacts/GitLabContainerPublisher.ts +50 -0
- package/src/artifacts/GitLabGenericPublisher.ts +221 -0
- package/src/artifacts/GitLabMavenPublisher.ts +224 -0
- package/src/artifacts/GitLabNpmPublisher.ts +90 -0
- package/src/client/GitLabClient.ts +200 -0
- 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
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](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
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](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"}
|