1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-11 14:39:28 +02:00

refactor: improve gitlab cli a bit (#2810)

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
This commit is contained in:
Carlos Alexandro Becker 2022-01-10 10:58:05 -03:00 committed by GitHub
parent cd5e6d4578
commit 57ef9f0220
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 29 deletions

View File

@ -378,24 +378,30 @@ func (c *gitlabClient) Upload(
}
var baseLinkURL string
var linkURL string
if ctx.Config.GitLabURLs.UsePackageRegistry {
log.WithField("file", file.Name()).Debug("uploading file as generic package")
_, _, err := c.client.GenericPackages.PublishPackageFile(
if _, _, err := c.client.GenericPackages.PublishPackageFile(
projectID,
ctx.Config.ProjectName,
ctx.Version,
artifact.Name,
file,
nil,
); err != nil {
return err
}
baseLinkURL, err = c.client.GenericPackages.FormatPackageURL(
projectID,
ctx.Config.ProjectName,
ctx.Version,
artifact.Name,
)
if err != nil {
return err
}
baseLinkURL, err = c.client.GenericPackages.FormatPackageURL(
projectID, ctx.Config.ProjectName, ctx.Version, artifact.Name)
if err != nil {
return err
}
linkURL = c.client.BaseURL().String() + baseLinkURL
} else {
log.WithField("file", file.Name()).Debug("uploading file as attachment")
projectFile, _, err := c.client.Projects.UploadFile(
@ -406,7 +412,19 @@ func (c *gitlabClient) Upload(
if err != nil {
return err
}
baseLinkURL = projectFile.URL
gitlabBaseURL, err := tmpl.New(ctx).Apply(ctx.Config.GitLabURLs.Download)
if err != nil {
return fmt.Errorf("templating GitLab Download URL: %w", err)
}
// search for project details based on projectID
projectDetails, _, err := c.client.Projects.GetProject(projectID, nil)
if err != nil {
return err
}
linkURL = gitlabBaseURL + "/" + projectDetails.PathWithNamespace + baseLinkURL
}
log.WithFields(log.Fields{
@ -414,24 +432,8 @@ func (c *gitlabClient) Upload(
"url": baseLinkURL,
}).Debug("uploaded file")
// search for project details based on projectID
projectDetails, _, err := c.client.Projects.GetProject(projectID, nil)
if err != nil {
return err
}
name := artifact.Name
filename := "/" + name
var linkURL string
if ctx.Config.GitLabURLs.UsePackageRegistry {
linkURL = c.client.BaseURL().String() + baseLinkURL
} else {
gitlabBaseURL, err := tmpl.New(ctx).Apply(ctx.Config.GitLabURLs.Download)
if err != nil {
return fmt.Errorf("templating GitLab Download URL: %w", err)
}
linkURL = gitlabBaseURL + "/" + projectDetails.PathWithNamespace + baseLinkURL
}
releaseLink, _, err := c.client.ReleaseLinks.CreateReleaseLink(
projectID,
releaseID,

View File

@ -158,10 +158,11 @@ func TestGitLabURLsAPITemplate(t *testing.T) {
func TestGitLabURLsDownloadTemplate(t *testing.T) {
tests := []struct {
name string
downloadURL string
wantURL string
wantErr bool
name string
usePackageRegistry bool
downloadURL string
wantURL string
wantErr bool
}{
{
name: "empty_download_url",
@ -187,6 +188,11 @@ func TestGitLabURLsDownloadTemplate(t *testing.T) {
downloadURL: "https://gitlab.mycompany.com",
wantURL: "https://gitlab.mycompany.com/",
},
{
name: "url_registry",
wantURL: "/api/v4/projects/test%2Ftest/packages/generic/projectname/v1%2E0%2E0/test",
usePackageRegistry: true,
},
}
for _, tt := range tests {
@ -208,11 +214,13 @@ func TestGitLabURLsDownloadTemplate(t *testing.T) {
err = json.Unmarshal(b, &reqBody)
require.NoError(t, err)
require.Equal(t, tt.wantURL, reqBody["url"])
url := reqBody["url"].(string)
require.Truef(t, strings.HasSuffix(url, tt.wantURL), "expected %q to end with %q", url, tt.wantURL)
}))
defer srv.Close()
ctx := context.New(config.Project{
ProjectName: "projectname",
Env: []string{
"GORELEASER_TEST_GITLAB_URLS_DOWNLOAD=https://gitlab.mycompany.com",
},
@ -223,11 +231,14 @@ func TestGitLabURLsDownloadTemplate(t *testing.T) {
},
},
GitLabURLs: config.GitLabURLs{
API: srv.URL,
Download: tt.downloadURL,
API: srv.URL,
Download: tt.downloadURL,
UsePackageRegistry: tt.usePackageRegistry,
},
})
ctx.Version = "v1.0.0"
tmpFile, err := os.CreateTemp(t.TempDir(), "")
require.NoError(t, err)