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:
parent
cd5e6d4578
commit
57ef9f0220
@ -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,
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user