Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Martinez <jmartinez@gitlab.com>2021-03-01 08:37:56 +0300
committerJaime Martinez <jmartinez@gitlab.com>2021-03-02 01:57:46 +0300
commit258be795aa78afe2252e630508fa049a596251fc (patch)
treee5d69697c866a18784a68258221965f00ef322ad
parent7c1d5db80c552d2031361a7a8498538b286e952d (diff)
Add use-legacy-storage flag
Adds the flag `use-legacy-storage` which will override the `domain-config-source` flag when enabled and will use disk serving along with configuration source. This is a temporary flag that will allow self-managed instances use legacy storage while migrating to Object Storage and making API-based configuration work. Changelog: added
-rw-r--r--internal/config/config.go7
-rw-r--r--internal/config/flags.go27
-rw-r--r--test/acceptance/serving_test.go26
3 files changed, 43 insertions, 17 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index 7e44abbc..85f0aad2 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -48,6 +48,7 @@ type Config struct {
type General struct {
Domain string
DomainConfigurationSource string
+ UseLegacyStorage bool
HTTP2 bool
MaxConns int
MetricsAddress string
@@ -252,6 +253,10 @@ func (config Config) GitlabJWTTokenExpiry() time.Duration {
}
func (config Config) DomainConfigSource() string {
+ if config.General.UseLegacyStorage {
+ return "disk"
+ }
+
return config.General.DomainConfigurationSource
}
@@ -260,6 +265,7 @@ func loadConfig() *Config {
General: General{
Domain: strings.ToLower(*pagesDomain),
DomainConfigurationSource: *domainConfigSource,
+ UseLegacyStorage: *useLegacyStorage,
HTTP2: *useHTTP2,
MaxConns: *maxConns,
MetricsAddress: *metricsAddress,
@@ -389,6 +395,7 @@ func LogConfig(config *Config) {
"internal-gitlab-server": config.GitLab.InternalServer,
"api-secret-key": *gitLabAPISecretKey,
"domain-config-source": config.General.DomainConfigurationSource,
+ "use-legacy-storage": config.General.UseLegacyStorage,
"auth-redirect-uri": config.Authentication.RedirectURI,
"auth-scope": config.Authentication.Scope,
"zip-cache-expiration": config.Zip.ExpirationInterval,
diff --git a/internal/config/flags.go b/internal/config/flags.go
index d2cee32d..c51298e8 100644
--- a/internal/config/flags.go
+++ b/internal/config/flags.go
@@ -40,18 +40,21 @@ var (
gitlabClientHTTPTimeout = flag.Duration("gitlab-client-http-timeout", 10*time.Second, "GitLab API HTTP client connection timeout in seconds (default: 10s)")
gitlabClientJWTExpiry = flag.Duration("gitlab-client-jwt-expiry", 30*time.Second, "JWT Token expiry time in seconds (default: 30s)")
domainConfigSource = flag.String("domain-config-source", "auto", "Domain configuration source 'disk', 'auto' or 'gitlab' (default: 'auto'). DEPRECATED: gitlab-pages will use the API-based configuration starting from 14.0 see https://gitlab.com/gitlab-org/gitlab-pages/-/issues/382")
- clientID = flag.String("auth-client-id", "", "GitLab application Client ID")
- clientSecret = flag.String("auth-client-secret", "", "GitLab application Client Secret")
- redirectURI = flag.String("auth-redirect-uri", "", "GitLab application redirect URI")
- authScope = flag.String("auth-scope", "api", "Scope to be used for authentication (must match GitLab Pages OAuth application settings)")
- maxConns = flag.Int("max-conns", 5000, "Limit on the number of concurrent connections to the HTTP, HTTPS or proxy listeners")
- insecureCiphers = flag.Bool("insecure-ciphers", false, "Use default list of cipher suites, may contain insecure ones like 3DES and RC4")
- tlsMinVersion = flag.String("tls-min-version", "tls1.2", tlsconfig.FlagUsage("min"))
- tlsMaxVersion = flag.String("tls-max-version", "", tlsconfig.FlagUsage("max"))
- zipCacheExpiration = flag.Duration("zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval")
- zipCacheCleanup = flag.Duration("zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval")
- zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval")
- zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout")
+ // TODO: remove this flag https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6009
+ useLegacyStorage = flag.Bool("use-legacy-storage", false, "Temporary flag that enables legacy serving from disk/NFS. API-Based configuration and object storage are preferred https://docs.gitlab.com/ee/administration/pages/ and will be the only available solution starting from 14.4")
+
+ clientID = flag.String("auth-client-id", "", "GitLab application Client ID")
+ clientSecret = flag.String("auth-client-secret", "", "GitLab application Client Secret")
+ redirectURI = flag.String("auth-redirect-uri", "", "GitLab application redirect URI")
+ authScope = flag.String("auth-scope", "api", "Scope to be used for authentication (must match GitLab Pages OAuth application settings)")
+ maxConns = flag.Int("max-conns", 5000, "Limit on the number of concurrent connections to the HTTP, HTTPS or proxy listeners")
+ insecureCiphers = flag.Bool("insecure-ciphers", false, "Use default list of cipher suites, may contain insecure ones like 3DES and RC4")
+ tlsMinVersion = flag.String("tls-min-version", "tls1.2", tlsconfig.FlagUsage("min"))
+ tlsMaxVersion = flag.String("tls-max-version", "", tlsconfig.FlagUsage("max"))
+ zipCacheExpiration = flag.Duration("zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval")
+ zipCacheCleanup = flag.Duration("zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval")
+ zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval")
+ zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout")
disableCrossOriginRequests = flag.Bool("disable-cross-origin-requests", false, "Disable cross-origin requests")
diff --git a/test/acceptance/serving_test.go b/test/acceptance/serving_test.go
index 19476830..07dc0345 100644
--- a/test/acceptance/serving_test.go
+++ b/test/acceptance/serving_test.go
@@ -378,10 +378,11 @@ func TestDomainsSource(t *testing.T) {
skipUnlessEnabled(t)
type args struct {
- configSource string
- domain string
- urlSuffix string
- readyCount int
+ configSource string
+ useLegacyStorage bool
+ domain string
+ urlSuffix string
+ readyCount int
}
type want struct {
statusCode int
@@ -481,6 +482,19 @@ func TestDomainsSource(t *testing.T) {
apiCalled: true,
},
},
+ {
+ name: "use_legacy_storage_overrides_domain_source",
+ args: args{
+ useLegacyStorage: true,
+ domain: "test.domain.com",
+ urlSuffix: "/",
+ },
+ want: want{
+ statusCode: http.StatusOK,
+ content: "main-dir\n",
+ apiCalled: false,
+ },
+ },
}
for _, tt := range tests {
@@ -495,7 +509,9 @@ func TestDomainsSource(t *testing.T) {
gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t)
- pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", tt.args.configSource}
+ pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", tt.args.configSource,
+ // TODO: remove in https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6009
+ fmt.Sprintf("-use-legacy-storage=%t", tt.args.useLegacyStorage)}
teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, []ListenSpec{httpListener}, "", []string{}, pagesArgs...)
defer teardown()