Skip to content

Commit 67a6f6e

Browse files
committed
fix: support other channels on generic_package
1 parent 0880850 commit 67a6f6e

File tree

3 files changed

+121
-24
lines changed

3 files changed

+121
-24
lines changed

lib/publish.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ import resolveConfig from "./resolve-config.js";
1111
import getRepoId from "./get-repo-id.js";
1212
import getAssets from "./glob-assets.js";
1313
import { RELEASE_NAME } from "./definitions/constants.js";
14+
import semver from "semver";
1415

1516
const isUrlScheme = (value) => /^(https|http|ftp):\/\//.test(value);
1617

1718
export default async (pluginConfig, context) => {
1819
const {
1920
cwd,
2021
options: { repositoryUrl },
21-
nextRelease: { gitTag, gitHead, notes, version },
22+
nextRelease: { gitTag, gitHead, notes, version, channel },
2223
logger,
2324
} = context;
2425
const { gitlabToken, gitlabUrl, gitlabApiUrl, assets, milestones, proxy } = resolveConfig(pluginConfig, context);
2526
const assetsList = [];
2627
const repoId = getRepoId(context, gitlabUrl, repositoryUrl);
2728
const encodedRepoId = encodeURIComponent(repoId);
2829
const encodedGitTag = encodeURIComponent(gitTag);
29-
const encodedVersion = encodeURIComponent(version);
3030
const apiOptions = { headers: { "PRIVATE-TOKEN": gitlabToken } };
3131

3232
debug("repoId: %o", repoId);
@@ -88,11 +88,14 @@ export default async (pluginConfig, context) => {
8888

8989
if (target === "generic_package") {
9090
// Upload generic packages
91-
const encodedLabel = encodeURIComponent(label);
91+
const { major, minor, patch } = semver.parse(version);
92+
const encodedVersion = `${major}.${minor}.${patch}`;
93+
const encodedLabel = encodeURIComponent(label ?? version);
94+
const encodedChannel = encodeURIComponent(channel ?? "release");
9295
// https://docs.gitlab.com/ee/user/packages/generic_packages/#publish-a-package-file
9396
uploadEndpoint = urlJoin(
9497
gitlabApiUrl,
95-
`/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}?${
98+
`/projects/${encodedRepoId}/packages/generic/${encodedChannel}/${encodedVersion}/${encodedLabel}?${
9699
status ? `status=${status}&` : ""
97100
}select=package_file`
98101
);
@@ -109,7 +112,7 @@ export default async (pluginConfig, context) => {
109112
// https://docs.gitlab.com/ee/user/packages/generic_packages/#download-package-file
110113
const url = urlJoin(
111114
gitlabApiUrl,
112-
`/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`
115+
`/projects/${encodedRepoId}/packages/generic/${encodedChannel}/${encodedVersion}/${encodedLabel}`
113116
);
114117

115118
assetsList.push({ label, alt: "release", url, type: "package", filepath });

package-lock.json

Lines changed: 112 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"hpagent": "^1.0.0",
3030
"lodash-es": "^4.17.21",
3131
"parse-url": "^8.0.0",
32+
"semver": "^7.3.2",
3233
"url-join": "^4.0.0"
3334
},
3435
"devDependencies": {

0 commit comments

Comments
 (0)