Skip to content

Commit e346b22

Browse files
mfotiJonasSchubert
authored andcommitted
fix(generic-packages): use upload enpoint url as asset url
BREAKING CHANGE: asset url no longer is gitlab returned one, but as documented in gitlab docs
1 parent 8b215f6 commit e346b22

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

lib/publish.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ export default async (pluginConfig, context) => {
8989
if (target === "generic_package") {
9090
// Upload generic packages
9191
const encodedLabel = encodeURIComponent(label);
92+
// https://docs.gitlab.com/ee/user/packages/generic_packages/#publish-a-package-file
9293
uploadEndpoint = urlJoin(
9394
gitlabApiUrl,
9495
`/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}?${
@@ -105,11 +106,15 @@ export default async (pluginConfig, context) => {
105106
throw error;
106107
}
107108

108-
const { url } = response.file;
109+
// https://docs.gitlab.com/ee/user/packages/generic_packages/#download-package-file
110+
const url = urlJoin(
111+
gitlabApiUrl,
112+
`/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`
113+
);
109114

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

112-
logger.log("Uploaded file: %s", url);
117+
logger.log("Uploaded file: %s (%s)", url, response.file.url);
113118
} else {
114119
// Handle normal assets
115120
uploadEndpoint = urlJoin(gitlabApiUrl, `/projects/${encodedRepoId}/uploads`);

test/publish.test.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ test.serial("Publish a release with assets", async (t) => {
8383
t.true(gitlab.isDone());
8484
});
8585

86-
test.serial("Publish a release with generics and relative URL", async (t) => {
86+
test.serial("Publish a release with generics", async (t) => {
8787
const cwd = "test/fixtures/files";
8888
const owner = "test_user";
8989
const repo = "test_repo";
@@ -97,6 +97,7 @@ test.serial("Publish a release with generics and relative URL", async (t) => {
9797
const generic = { path: "file.css", label: "Style package", target: "generic_package", status: "hidden" };
9898
const assets = [generic];
9999
const encodedLabel = encodeURIComponent(generic.label);
100+
const expectedUrl = `https://gitlab.com/api/v4/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`;
100101
const gitlab = authenticate(env)
101102
.post(`/projects/${encodedRepoId}/releases`, {
102103
tag_name: nextRelease.gitTag,
@@ -105,7 +106,7 @@ test.serial("Publish a release with generics and relative URL", async (t) => {
105106
links: [
106107
{
107108
name: "Style package",
108-
url: `https://gitlab.com/${owner}/${repo}${uploaded.file.url}`,
109+
url: expectedUrl,
109110
link_type: "package",
110111
},
111112
],
@@ -122,7 +123,7 @@ test.serial("Publish a release with generics and relative URL", async (t) => {
122123
const result = await publish({ assets }, { env, cwd, options, nextRelease, logger: t.context.logger });
123124

124125
t.is(result.url, `https://gitlab.com/${owner}/${repo}/-/releases/${encodedGitTag}`);
125-
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s", uploaded.file.url]);
126+
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s (%s)", expectedUrl, uploaded.file.url]);
126127
t.deepEqual(t.context.log.args[1], ["Published GitLab release: %s", nextRelease.gitTag]);
127128
t.true(gitlabUpload.isDone());
128129
t.true(gitlab.isDone());
@@ -142,6 +143,7 @@ test.serial("Publish a release with generics and external storage provider (http
142143
const generic = { path: "file.css", label: "Style package", target: "generic_package", status: "hidden" };
143144
const assets = [generic];
144145
const encodedLabel = encodeURIComponent(generic.label);
146+
const expectedUrl = `https://gitlab.com/api/v4/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`;
145147
const gitlab = authenticate(env)
146148
.post(`/projects/${encodedRepoId}/releases`, {
147149
tag_name: nextRelease.gitTag,
@@ -150,7 +152,7 @@ test.serial("Publish a release with generics and external storage provider (http
150152
links: [
151153
{
152154
name: "Style package",
153-
url: uploaded.file.url,
155+
url: expectedUrl,
154156
link_type: "package",
155157
},
156158
],
@@ -167,7 +169,7 @@ test.serial("Publish a release with generics and external storage provider (http
167169
const result = await publish({ assets }, { env, cwd, options, nextRelease, logger: t.context.logger });
168170

169171
t.is(result.url, `https://gitlab.com/${owner}/${repo}/-/releases/${encodedGitTag}`);
170-
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s", uploaded.file.url]);
172+
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s (%s)", expectedUrl, uploaded.file.url]);
171173
t.deepEqual(t.context.log.args[1], ["Published GitLab release: %s", nextRelease.gitTag]);
172174
t.true(gitlabUpload.isDone());
173175
t.true(gitlab.isDone());
@@ -187,6 +189,7 @@ test.serial("Publish a release with generics and external storage provider (http
187189
const generic = { path: "file.css", label: "Style package", target: "generic_package", status: "hidden" };
188190
const assets = [generic];
189191
const encodedLabel = encodeURIComponent(generic.label);
192+
const expectedUrl = `https://gitlab.com/api/v4/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`;
190193
const gitlab = authenticate(env)
191194
.post(`/projects/${encodedRepoId}/releases`, {
192195
tag_name: nextRelease.gitTag,
@@ -195,7 +198,7 @@ test.serial("Publish a release with generics and external storage provider (http
195198
links: [
196199
{
197200
name: "Style package",
198-
url: uploaded.file.url,
201+
url: expectedUrl,
199202
link_type: "package",
200203
},
201204
],
@@ -212,7 +215,7 @@ test.serial("Publish a release with generics and external storage provider (http
212215
const result = await publish({ assets }, { env, cwd, options, nextRelease, logger: t.context.logger });
213216

214217
t.is(result.url, `https://gitlab.com/${owner}/${repo}/-/releases/${encodedGitTag}`);
215-
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s", uploaded.file.url]);
218+
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s (%s)", expectedUrl, uploaded.file.url]);
216219
t.deepEqual(t.context.log.args[1], ["Published GitLab release: %s", nextRelease.gitTag]);
217220
t.true(gitlabUpload.isDone());
218221
t.true(gitlab.isDone());
@@ -232,6 +235,7 @@ test.serial("Publish a release with generics and external storage provider (ftp)
232235
const generic = { path: "file.css", label: "Style package", target: "generic_package", status: "hidden" };
233236
const assets = [generic];
234237
const encodedLabel = encodeURIComponent(generic.label);
238+
const expectedUrl = `https://gitlab.com/api/v4/projects/${encodedRepoId}/packages/generic/release/${encodedVersion}/${encodedLabel}`;
235239
const gitlab = authenticate(env)
236240
.post(`/projects/${encodedRepoId}/releases`, {
237241
tag_name: nextRelease.gitTag,
@@ -240,7 +244,7 @@ test.serial("Publish a release with generics and external storage provider (ftp)
240244
links: [
241245
{
242246
name: "Style package",
243-
url: uploaded.file.url,
247+
url: expectedUrl,
244248
link_type: "package",
245249
},
246250
],
@@ -257,7 +261,7 @@ test.serial("Publish a release with generics and external storage provider (ftp)
257261
const result = await publish({ assets }, { env, cwd, options, nextRelease, logger: t.context.logger });
258262

259263
t.is(result.url, `https://gitlab.com/${owner}/${repo}/-/releases/${encodedGitTag}`);
260-
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s", uploaded.file.url]);
264+
t.deepEqual(t.context.log.args[0], ["Uploaded file: %s (%s)", expectedUrl, uploaded.file.url]);
261265
t.deepEqual(t.context.log.args[1], ["Published GitLab release: %s", nextRelease.gitTag]);
262266
t.true(gitlabUpload.isDone());
263267
t.true(gitlab.isDone());

0 commit comments

Comments
 (0)