mirror of https://github.com/go-gitea/gitea.git
Support storage base path as prefix (#27827)
This PR adds a prefix path for all minio storage and override base path will override the path. The previous behavior is undefined officially, so it will be marked as breaking.pull/27844/head^2
parent
a4b242ae7a
commit
d519a39302
|
@ -7,6 +7,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StorageType is a type of Storage
|
// StorageType is a type of Storage
|
||||||
|
@ -249,14 +250,24 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType,
|
||||||
return nil, fmt.Errorf("map minio config failed: %v", err)
|
return nil, fmt.Errorf("map minio config failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if storage.MinioConfig.BasePath == "" {
|
var defaultPath string
|
||||||
storage.MinioConfig.BasePath = name + "/"
|
if storage.MinioConfig.BasePath != "" {
|
||||||
|
if tp == targetSecIsStorage || tp == targetSecIsDefault {
|
||||||
|
defaultPath = strings.TrimSuffix(storage.MinioConfig.BasePath, "/") + "/" + name + "/"
|
||||||
|
} else {
|
||||||
|
defaultPath = storage.MinioConfig.BasePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if defaultPath == "" {
|
||||||
|
defaultPath = name + "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
if overrideSec != nil {
|
if overrideSec != nil {
|
||||||
storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect)
|
storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect)
|
||||||
storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", storage.MinioConfig.BasePath)
|
storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", defaultPath)
|
||||||
storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket)
|
storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket)
|
||||||
|
} else {
|
||||||
|
storage.MinioConfig.BasePath = defaultPath
|
||||||
}
|
}
|
||||||
return &storage, nil
|
return &storage, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -412,3 +412,56 @@ MINIO_USE_SSL = true
|
||||||
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
||||||
assert.EqualValues(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
assert.EqualValues(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_getStorageConfiguration28(t *testing.T) {
|
||||||
|
cfg, err := NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadRepoArchiveFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", RepoArchive.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
||||||
|
|
||||||
|
cfg, err = NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
|
||||||
|
[lfs]
|
||||||
|
MINIO_BASE_PATH = /lfs
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadLFSFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
|
||||||
|
|
||||||
|
cfg, err = NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
|
||||||
|
[storage.lfs]
|
||||||
|
MINIO_BASE_PATH = /lfs
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadLFSFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue