From 116205d081a5b14c4146949e2a53267f15ed5a8a Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Thu, 15 Feb 2024 21:39:50 +0100 Subject: [PATCH] Add support for action artifact serve direct (#29120) Fixes #29093 --- routers/api/actions/artifacts.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/routers/api/actions/artifacts.go b/routers/api/actions/artifacts.go index 3363c4c0e81b0..9fbd3f045d759 100644 --- a/routers/api/actions/artifacts.go +++ b/routers/api/actions/artifacts.go @@ -63,6 +63,7 @@ package actions import ( "crypto/md5" + "errors" "fmt" "net/http" "strconv" @@ -426,7 +427,19 @@ func (ar artifactRoutes) getDownloadArtifactURL(ctx *ArtifactContext) { var items []downloadArtifactResponseItem for _, artifact := range artifacts { - downloadURL := ar.buildArtifactURL(runID, strconv.FormatInt(artifact.ID, 10), "download") + var downloadURL string + if setting.Actions.ArtifactStorage.MinioConfig.ServeDirect { + u, err := ar.fs.URL(artifact.StoragePath, artifact.ArtifactName) + if err != nil && !errors.Is(err, storage.ErrURLNotSupported) { + log.Error("Error getting serve direct url: %v", err) + } + if u != nil { + downloadURL = u.String() + } + } + if downloadURL == "" { + downloadURL = ar.buildArtifactURL(runID, strconv.FormatInt(artifact.ID, 10), "download") + } item := downloadArtifactResponseItem{ Path: util.PathJoinRel(itemPath, artifact.ArtifactPath), ItemType: "file",