|
|
|
@ -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",
|
|
|
|
|