mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 05:25:15 +01:00 
			
		
		
		
	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.
This commit is contained in:
		
							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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user