Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
17c8111494
commit
2824b15286
23 changed files with 227 additions and 345 deletions
|
@ -4,9 +4,9 @@ module Projects::AlertManagementHelper
|
|||
def alert_management_data(current_user, project)
|
||||
{
|
||||
'project-path' => project.full_path,
|
||||
'enable-alert-management-path' => project_settings_operations_path(project),
|
||||
'enable-alert-management-path' => edit_project_service_path(project, AlertsService),
|
||||
'empty-alert-svg-path' => image_path('illustrations/alert-management-empty-state.svg'),
|
||||
'user-can-enable-alert-management' => 'false',
|
||||
'user-can-enable-alert-management' => can?(current_user, :admin_project, project).to_s,
|
||||
'alert-management-enabled' => Feature.enabled?(:alert_management_minimal, project).to_s
|
||||
}
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ module Clusters
|
|||
class Knative < ApplicationRecord
|
||||
VERSION = '0.9.0'
|
||||
REPOSITORY = 'https://charts.gitlab.io'
|
||||
METRICS_CONFIG = 'https://gitlab.com/gitlab-org/charts/knative/-/blob/v0.9.0/vendor/istio-metrics.yml'
|
||||
METRICS_CONFIG = 'https://gitlab.com/gitlab-org/charts/knative/-/raw/v0.9.0/vendor/istio-metrics.yml'
|
||||
FETCH_IP_ADDRESS_DELAY = 30.seconds
|
||||
API_GROUPS_PATH = 'config/knative/api_groups.yml'
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Drop support for License-Management CI template
|
||||
merge_request: 30645
|
||||
author:
|
||||
type: removed
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Record usage ping finish time
|
||||
merge_request: 31222
|
||||
author:
|
||||
type: performance
|
5
changelogs/unreleased/fix-istio-url-should-be-raw.yml
Normal file
5
changelogs/unreleased/fix-istio-url-should-be-raw.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix Istio broken Istio metrics installation
|
||||
merge_request: 31382
|
||||
author:
|
||||
type: fixed
|
|
@ -701,7 +701,6 @@ Settings.rack_attack.git_basic_auth['ip_whitelist'] ||= %w{127.0.0.1}
|
|||
Settings.rack_attack.git_basic_auth['maxretry'] ||= 10
|
||||
Settings.rack_attack.git_basic_auth['findtime'] ||= 1.minute
|
||||
Settings.rack_attack.git_basic_auth['bantime'] ||= 1.hour
|
||||
Settings.rack_attack['admin_area_protected_paths_enabled'] ||= false
|
||||
|
||||
#
|
||||
# Gitaly
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
# 1. Rename this file to rack_attack.rb
|
||||
# 2. Review the paths_to_be_protected and add any other path you need protecting
|
||||
#
|
||||
# If you change this file in a Merge Request, please also create a Merge Request on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests
|
||||
|
||||
paths_to_be_protected = [
|
||||
"#{Rails.application.config.relative_url_root}/users/password",
|
||||
"#{Rails.application.config.relative_url_root}/users/sign_in",
|
||||
"#{Rails.application.config.relative_url_root}/api/#{API::API.version}/session.json",
|
||||
"#{Rails.application.config.relative_url_root}/api/#{API::API.version}/session",
|
||||
"#{Rails.application.config.relative_url_root}/users",
|
||||
"#{Rails.application.config.relative_url_root}/users/confirmation",
|
||||
"#{Rails.application.config.relative_url_root}/unsubscribes/",
|
||||
"#{Rails.application.config.relative_url_root}/import/github/personal_access_token"
|
||||
|
||||
]
|
||||
|
||||
# Create one big regular expression that matches strings starting with any of
|
||||
# the paths_to_be_protected.
|
||||
paths_regex = Regexp.union(paths_to_be_protected.map { |path| /\A#{Regexp.escape(path)}/ })
|
||||
rack_attack_enabled = Gitlab.config.rack_attack.git_basic_auth['enabled']
|
||||
|
||||
unless Rails.env.test? || !rack_attack_enabled
|
||||
Rack::Attack.throttle('protected paths', limit: 10, period: 60.seconds) do |req|
|
||||
if req.post? && req.path =~ paths_regex
|
||||
req.ip
|
||||
end
|
||||
end
|
||||
end
|
|
@ -8,17 +8,9 @@ module Gitlab::Throttle
|
|||
|
||||
# Returns true if we should use the Admin Area protected paths throttle
|
||||
def self.protected_paths_enabled?
|
||||
return false if should_use_omnibus_protected_paths?
|
||||
|
||||
self.settings.throttle_protected_paths_enabled?
|
||||
end
|
||||
|
||||
# To be removed in 13.0: https://gitlab.com/gitlab-org/gitlab/issues/29952
|
||||
def self.should_use_omnibus_protected_paths?
|
||||
!Settings.rack_attack.admin_area_protected_paths_enabled &&
|
||||
self.omnibus_protected_paths_present?
|
||||
end
|
||||
|
||||
def self.omnibus_protected_paths_present?
|
||||
Rack::Attack.throttles.key?('protected paths')
|
||||
end
|
||||
|
|
|
@ -65,8 +65,9 @@ for many organizations. With automatic backup of the GitLab repositories,
|
|||
configuration, and the database, if you don't have strict availability
|
||||
requirements, this is the ideal solution.
|
||||
|
||||
For this default reference architecture, use the standard
|
||||
[installation instructions](../../install/README.md) to install GitLab.
|
||||
### Setup instructions
|
||||
|
||||
- For this default reference architecture, use the standard [installation instructions](../../install/README.md) to install GitLab.
|
||||
|
||||
NOTE: **Note:**
|
||||
You can also optionally configure GitLab to use an
|
||||
|
@ -80,18 +81,18 @@ added performance and reliability at a reduced complexity cost.
|
|||
> - **High Availability:** False
|
||||
> - **Test RPS rates:** API: 40 RPS, Web: 4 RPS, Git: 4 RPS
|
||||
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|----------------------------|
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| PostgreSQL | 1 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| Redis ([3](#footnotes)) | 1 | 1 vCPU, 3.75GB Memory | n1-standard-1 | m5.large |
|
||||
| Gitaly ([5](#footnotes)) ([7](#footnotes)) | X ([2](#footnotes)) | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| GitLab Rails ([1](#footnotes)) | 2 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|-----------------------|----------------|
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| PostgreSQL | 1 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| Redis ([3](#footnotes)) | 1 | 1 vCPU, 3.75GB Memory | n1-standard-1 | m5.large | D2s v3 |
|
||||
| Gitaly ([5](#footnotes)) ([7](#footnotes)) | X ([2](#footnotes)) | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| GitLab Rails ([1](#footnotes)) | 2 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge | F8s v2 |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
|
||||
To set up GitLab for up to 2000 users:
|
||||
### Setup instructions
|
||||
|
||||
1. [Configure the external load balancing node](../high_availability/load_balancer.md)
|
||||
that will handle the load balancing of the two GitLab application services nodes.
|
||||
|
@ -121,20 +122,20 @@ following the [2,000-user reference architecture](#up-to-2000-users).
|
|||
> - **High Availability:** True
|
||||
> - **Test RPS rates:** API: 60 RPS, Web: 6 RPS, Git: 6 RPS
|
||||
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|----------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge |
|
||||
| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis ([3](#footnotes)) | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| Consul + Sentinel ([3](#footnotes)) | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|-----------------------|------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge | F8s v2 |
|
||||
| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis ([3](#footnotes)) | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| Consul + Sentinel ([3](#footnotes)) | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
|
||||
## Up to 5,000 users
|
||||
|
||||
|
@ -142,20 +143,20 @@ following the [2,000-user reference architecture](#up-to-2000-users).
|
|||
> - **High Availability:** True
|
||||
> - **Test RPS rates:** API: 100 RPS, Web: 10 RPS, Git: 10 RPS
|
||||
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|----------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 16 vCPU, 14.4GB Memory | n1-highcpu-16 | c5.4xlarge |
|
||||
| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 8 vCPU, 30GB Memory | n1-standard-8 | m5.2xlarge |
|
||||
| Redis ([3](#footnotes)) | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| Consul + Sentinel ([3](#footnotes)) | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|---------------|-----------------------|------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 16 vCPU, 14.4GB Memory | n1-highcpu-16 | c5.4xlarge | F16s v2 |
|
||||
| PostgreSQL | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 8 vCPU, 30GB Memory | n1-standard-8 | m5.2xlarge | D8s v3 |
|
||||
| Redis ([3](#footnotes)) | 3 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| Consul + Sentinel ([3](#footnotes)) | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Sidekiq | 4 | 2 vCPU, 7.5GB Memory | n1-standard-2 | m5.large | D2s v3 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| Monitoring node | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
|
||||
## Up to 10,000 users
|
||||
|
||||
|
@ -163,23 +164,23 @@ following the [2,000-user reference architecture](#up-to-2000-users).
|
|||
> - **High Availability:** True
|
||||
> - **Test RPS rates:** API: 200 RPS, Web: 20 RPS, Git: 20 RPS
|
||||
|
||||
| Service | Nodes | GCP Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|-------------------------------------|----------------|----------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge |
|
||||
| PostgreSQL | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 16 vCPU, 60GB Memory | n1-standard-16 | m5.4xlarge |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|----------------|-----------------------|------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 3 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge | F32s v2 |
|
||||
| PostgreSQL | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 16 vCPU, 60GB Memory | n1-standard-16 | m5.4xlarge | D16s v3 |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
|
||||
## Up to 25,000 users
|
||||
|
||||
|
@ -187,23 +188,23 @@ following the [2,000-user reference architecture](#up-to-2000-users).
|
|||
> - **High Availability:** True
|
||||
> - **Test RPS rates:** API: 500 RPS, Web: 50 RPS, Git: 50 RPS
|
||||
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|----------------|----------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 5 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge |
|
||||
| PostgreSQL | 3 | 8 vCPU, 30GB Memory | n1-standard-8 | m5.2xlarge |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 32 vCPU, 120GB Memory | n1-standard-32 | m5.8xlarge |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|----------------|-----------------------|------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 5 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge | F32s v2 |
|
||||
| PostgreSQL | 3 | 8 vCPU, 30GB Memory | n1-standard-8 | m5.2xlarge | D8s v3 |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 32 vCPU, 120GB Memory | n1-standard-32 | m5.8xlarge | D32s v3 |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
|
||||
## Up to 50,000 users
|
||||
|
||||
|
@ -211,23 +212,23 @@ following the [2,000-user reference architecture](#up-to-2000-users).
|
|||
> - **High Availability:** True
|
||||
> - **Test RPS rates:** API: 1000 RPS, Web: 100 RPS, Git: 100 RPS
|
||||
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP type | AWS type ([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|----------------|----------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 12 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge |
|
||||
| PostgreSQL | 3 | 16 vCPU, 60GB Memory | n1-standard-16 | m5.4xlarge |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 64 vCPU, 240GB Memory | n1-standard-64 | m5.16xlarge |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge |
|
||||
| Service | Nodes | Configuration ([8](#footnotes)) | GCP | AWS ([9](#footnotes)) | Azure([9](#footnotes)) |
|
||||
|--------------------------------------------------------------|-------|---------------------------------|----------------|-----------------------|------------------------|
|
||||
| GitLab Rails ([1](#footnotes)) | 12 | 32 vCPU, 28.8GB Memory | n1-highcpu-32 | c5.9xlarge | F32s v2 |
|
||||
| PostgreSQL | 3 | 16 vCPU, 60GB Memory | n1-standard-16 | m5.4xlarge | D16s v3 |
|
||||
| PgBouncer | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Gitaly ([2](#footnotes)) ([5](#footnotes)) ([7](#footnotes)) | X | 64 vCPU, 240GB Memory | n1-standard-64 | m5.16xlarge | D64s v3 |
|
||||
| Redis ([3](#footnotes)) - Cache | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis ([3](#footnotes)) - Queues / Shared State | 3 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| Redis Sentinel ([3](#footnotes)) - Cache | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Redis Sentinel ([3](#footnotes)) - Queues / Shared State | 3 | 1 vCPU, 1.7GB Memory | g1-small | t2.small | B1MS |
|
||||
| Consul | 3 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Sidekiq | 4 | 4 vCPU, 15GB Memory | n1-standard-4 | m5.xlarge | D4s v3 |
|
||||
| NFS Server ([5](#footnotes)) ([7](#footnotes)) | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| Object Storage ([4](#footnotes)) | - | - | - | - | - |
|
||||
| Monitoring node | 1 | 4 vCPU, 3.6GB Memory | n1-highcpu-4 | c5.xlarge | F4s v2 |
|
||||
| External load balancing node ([6](#footnotes)) | 1 | 2 vCPU, 1.8GB Memory | n1-highcpu-2 | c5.large | F2s v2 |
|
||||
| Internal load balancing node ([6](#footnotes)) | 1 | 8 vCPU, 7.2GB Memory | n1-highcpu-8 | c5.2xlarge | F8s v2 |
|
||||
|
||||
## Availability complexity
|
||||
|
||||
|
@ -378,5 +379,5 @@ column.
|
|||
[Sysbench](https://github.com/akopytov/sysbench) benchmark of the CPU can be found
|
||||
[here](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks).
|
||||
|
||||
1. AWS-equivalent configurations are rough suggestions and may change in the
|
||||
future. They have not yet been tested and validated.
|
||||
1. AWS-equivalent and Azure-equivalent configurations are rough suggestions
|
||||
and may change in the future. They have not yet been tested and validated.
|
||||
|
|
|
@ -36,27 +36,20 @@ will be enabled:
|
|||
|
||||
### Protected paths throttle
|
||||
|
||||
NOTE: **Note:** Omnibus GitLab protected paths throttle is deprecated and is scheduled for removal in
|
||||
GitLab 13.0. Please refer to [Migrate settings from GitLab 12.3 and earlier](../user/admin_area/settings/protected_paths.md#migrate-settings-from-gitlab-123-and-earlier).
|
||||
|
||||
GitLab responds with HTTP status code `429` to POST requests at protected paths
|
||||
that exceed 10 requests per minute per IP address.
|
||||
|
||||
By default, protected paths are:
|
||||
|
||||
```ruby
|
||||
default['gitlab']['gitlab-rails']['rack_attack_protected_paths'] = [
|
||||
'/users/password',
|
||||
'/users/sign_in',
|
||||
'/api/#{API::API.version}/session.json',
|
||||
'/api/#{API::API.version}/session',
|
||||
'/users',
|
||||
'/users/confirmation',
|
||||
'/unsubscribes/',
|
||||
'/import/github/personal_access_token',
|
||||
'/admin/session'
|
||||
]
|
||||
```
|
||||
- `/users/password`
|
||||
- `/users/sign_in`
|
||||
- `/api/#{API::API.version}/session.json`
|
||||
- `/api/#{API::API.version}/session`
|
||||
- `/users`
|
||||
- `/users/confirmation`
|
||||
- `/unsubscribes/`
|
||||
- `/import/github/personal_access_token`
|
||||
- `/admin/session`
|
||||
|
||||
This header is included in responses to blocked requests:
|
||||
|
||||
|
@ -141,9 +134,6 @@ taken in order to enable protection for your GitLab instance:
|
|||
config.middleware.use Rack::Attack
|
||||
```
|
||||
|
||||
1. Copy `config/initializers/rack_attack.rb.example` to `config/initializers/rack_attack.rb`
|
||||
1. Open `config/initializers/rack_attack.rb`, review the
|
||||
`paths_to_be_protected`, and add any other path you need protecting
|
||||
1. Restart GitLab:
|
||||
|
||||
```shell
|
||||
|
|
|
@ -54,24 +54,3 @@ customized on **Admin > Network > Protected Paths**, along with these options:
|
|||
![protected-paths](img/protected_paths.png)
|
||||
|
||||
Requests over the rate limit are logged into `auth.log`.
|
||||
|
||||
## Migrate settings from GitLab 12.3 and earlier
|
||||
|
||||
Omnibus GitLab protected paths throttle is deprecated and is scheduled for removal in
|
||||
GitLab 13.0. Please see the [GitLab issue](https://gitlab.com/gitlab-org/gitlab/issues/29952) and the [Omnibus GitLab issue](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4688) for more information.
|
||||
|
||||
NOTE: **Note:** If Omnibus settings are present, applications settings will be automatically ignored to avoid generating multiple requests blocks.
|
||||
|
||||
To migrate from Omnibus GitLab 12.3 and earlier settings:
|
||||
|
||||
1. Customize and enable your protected paths settings by following [Configure using GitLab UI](#configure-using-gitlab-ui) section.
|
||||
|
||||
1. SSH into your frontend nodes and add to `/etc/gitlab/gitlab.rb`:
|
||||
|
||||
```ruby
|
||||
gitlab_rails['rack_attack_admin_area_protected_paths_enabled'] = true
|
||||
```
|
||||
|
||||
1. [Reconfigure GitLab](../../../administration/restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes to take effect.
|
||||
|
||||
That's it. Protected paths throttle are now managed by GitLab admin settings.
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25455) to [GitLab Core](https://about.gitlab.com/pricing/) 12.9.
|
||||
|
||||
GitLab makes it easy to view the logs of running pods in [connected Kubernetes clusters](index.md).
|
||||
By displaying the logs directly in GitLab in the **Log Explorer**, developers can avoid having to manage console tools or jump to a different interface.
|
||||
By displaying the logs directly in GitLab in the **Log Explorer**, developers can avoid
|
||||
managing console tools or jumping to a different interface.
|
||||
|
||||
NOTE: **Kubernetes + GitLab**
|
||||
Everything you need to build, test, deploy, and run your app at scale.
|
||||
Everything you need to build, test, deploy, and run your application at scale.
|
||||
[Learn more](https://about.gitlab.com/solutions/kubernetes/).
|
||||
|
||||
## Overview
|
||||
|
@ -22,7 +23,8 @@ To learn more, see [APM - Log Explorer](https://www.youtube.com/watch?v=hWclZHA7
|
|||
|
||||
## Requirements
|
||||
|
||||
[Deploying to a Kubernetes environment](../deploy_boards.md#enabling-deploy-boards) is required in order to be able to use Logs.
|
||||
[Deploying to a Kubernetes environment](../deploy_boards.md#enabling-deploy-boards)
|
||||
is required to use Logs.
|
||||
|
||||
## Usage
|
||||
|
||||
|
@ -43,9 +45,12 @@ the **Log Explorer**.
|
|||
|
||||
Logs can be displayed by clicking on a specific pod from [Deploy Boards](../deploy_boards.md):
|
||||
|
||||
1. Go to **{cloud-gear}** **Operations > Environments** and find the environment which contains the desired pod, like `production`.
|
||||
1. On the **Environments** page, you should see the status of the environment's pods with [Deploy Boards](../deploy_boards.md).
|
||||
1. When mousing over the list of pods, a tooltip will appear with the exact pod name and status.
|
||||
1. Go to **{cloud-gear}** **Operations > Environments** and find the environment
|
||||
which contains the desired pod, like `production`.
|
||||
1. On the **Environments** page, you should see the status of the environment's
|
||||
pods with [Deploy Boards](../deploy_boards.md).
|
||||
1. When mousing over the list of pods, a tooltip will appear with the exact pod name
|
||||
and status.
|
||||
![Deploy Boards pod list](img/pod_logs_deploy_board.png)
|
||||
1. Click on the desired pod to display the **Log Explorer**.
|
||||
|
||||
|
@ -55,21 +60,25 @@ The **Log Explorer** lets you filter the logs by:
|
|||
|
||||
- Pods.
|
||||
- [From GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/5769), environments.
|
||||
- [From GitLab 12.7](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/21656), [full text search](#full-text-search).
|
||||
- [From GitLab 12.7](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/21656),
|
||||
[full text search](#full-text-search).
|
||||
- [From GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/197879), dates.
|
||||
|
||||
Loading more than 500 log lines is possible from [GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/198050) onwards.
|
||||
Loading more than 500 log lines is possible from
|
||||
[GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/198050) onward.
|
||||
|
||||
Support for pods with multiple containers is coming [in a future release](https://gitlab.com/gitlab-org/gitlab/issues/13404).
|
||||
Support for pods with multiple containers is coming
|
||||
[in a future release](https://gitlab.com/gitlab-org/gitlab/issues/13404).
|
||||
|
||||
Support for historical data is coming [in a future release](https://gitlab.com/gitlab-org/gitlab/issues/196191).
|
||||
Support for historical data is coming
|
||||
[in a future release](https://gitlab.com/gitlab-org/gitlab/issues/196191).
|
||||
|
||||
### Filter by date
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/197879) in GitLab 12.8.
|
||||
|
||||
When you enable [Elastic Stack](../../clusters/applications.md#elastic-stack) on your cluster,
|
||||
you can filter logs displayed in the **Log Explorer** by date.
|
||||
When you enable [Elastic Stack](../../clusters/applications.md#elastic-stack)
|
||||
on your cluster, you can filter logs displayed in the **Log Explorer** by date.
|
||||
|
||||
Click **Show last** in the **Log Explorer** to see the available options.
|
||||
|
||||
|
@ -80,7 +89,8 @@ Click **Show last** in the **Log Explorer** to see the available options.
|
|||
When you enable [Elastic Stack](../../clusters/applications.md#elastic-stack) on your cluster,
|
||||
you can search the content of your logs through a search bar.
|
||||
|
||||
The search is passed on to Elasticsearch using the [simple_query_string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)
|
||||
The search is passed on to Elasticsearch using the
|
||||
[simple_query_string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)
|
||||
Elasticsearch function, which supports the following operators:
|
||||
|
||||
| Operator | Description |
|
||||
|
|
|
@ -159,5 +159,5 @@ include:
|
|||
- template: Security/DAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml
|
||||
- template: Security/Container-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml
|
||||
- template: Security/Dependency-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/Dependency-Scanning.gitlab-ci.yml
|
||||
- template: Security/License-Management.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/License-Management.gitlab-ci.yml
|
||||
- template: Security/License-Scanning.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/License-Scanning.gitlab-ci.yml
|
||||
- template: Security/SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
# Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/14624
|
||||
# Please, use License-Scanning.gitlab-ci.yml template instead
|
||||
|
||||
variables:
|
||||
LICENSE_MANAGEMENT_SETUP_CMD: '' # If needed, specify a command to setup your environment with a custom package manager.
|
||||
LICENSE_MANAGEMENT_VERSION: 3
|
||||
|
||||
license_management:
|
||||
stage: test
|
||||
image:
|
||||
name: "registry.gitlab.com/gitlab-org/security-products/license-management:$LICENSE_MANAGEMENT_VERSION"
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
SETUP_CMD: $LICENSE_MANAGEMENT_SETUP_CMD
|
||||
allow_failure: true
|
||||
allow_failure: false
|
||||
script:
|
||||
- echo "This template is deprecated, please use License-Scanning.gitlab-ci.yml template instead."
|
||||
- /run.sh analyze .
|
||||
artifacts:
|
||||
reports:
|
||||
license_management: gl-license-management-report.json
|
||||
dependencies: []
|
||||
- |
|
||||
echo "Sorry for failing your pipeline!
|
||||
As of GitLab 13.0, we have removed the License-Management.gitlab.ci.yml template (deprecated since GitLab 12.8).
|
||||
Please replace it with the License-Scanning.gitlab-ci.yml template instead.
|
||||
For more details visit
|
||||
https://docs.gitlab.com/ee/user/compliance/license_compliance/#migration-from-license_management-to-license_scanning"
|
||||
- exit 1
|
||||
only:
|
||||
refs:
|
||||
- branches
|
||||
variables:
|
||||
- $GITLAB_FEATURES =~ /\blicense_management\b/
|
||||
except:
|
||||
refs:
|
||||
- master
|
||||
variables:
|
||||
- $LICENSE_MANAGEMENT_DISABLED
|
||||
|
|
|
@ -35,6 +35,7 @@ module Gitlab
|
|||
.merge(components_usage_data)
|
||||
.merge(cycle_analytics_usage_data)
|
||||
.merge(object_store_usage_data)
|
||||
.merge(recording_ce_finish_data)
|
||||
end
|
||||
|
||||
def to_json(force_refresh: false)
|
||||
|
@ -43,16 +44,22 @@ module Gitlab
|
|||
|
||||
def license_usage_data
|
||||
{
|
||||
recorded_at: Time.now, # should be calculated very first
|
||||
uuid: alt_usage_data { Gitlab::CurrentSettings.uuid },
|
||||
hostname: alt_usage_data { Gitlab.config.gitlab.host },
|
||||
version: alt_usage_data { Gitlab::VERSION },
|
||||
installation_type: alt_usage_data { installation_type },
|
||||
active_user_count: count(User.active),
|
||||
recorded_at: Time.now,
|
||||
edition: 'CE'
|
||||
}
|
||||
end
|
||||
|
||||
def recording_ce_finish_data
|
||||
{
|
||||
recording_ce_finished_at: Time.now
|
||||
}
|
||||
end
|
||||
|
||||
# rubocop: disable Metrics/AbcSize
|
||||
# rubocop: disable CodeReuse/ActiveRecord
|
||||
def system_usage_data
|
||||
|
|
4
qa/qa.rb
4
qa/qa.rb
|
@ -417,6 +417,10 @@ module QA
|
|||
module WebIDE
|
||||
autoload :Alert, 'qa/page/component/web_ide/alert'
|
||||
end
|
||||
|
||||
module Project
|
||||
autoload :Templates, 'qa/page/component/project/templates'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
15
qa/qa/page/component/project/templates.rb
Normal file
15
qa/qa/page/component/project/templates.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page::Component
|
||||
module Project
|
||||
module Templates
|
||||
def use_template_for_project(project_name)
|
||||
within find_element(:template_option_row, text: project_name) do
|
||||
click_element :use_template_button
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,6 +5,7 @@ module QA
|
|||
module Project
|
||||
class New < Page::Base
|
||||
include Page::Component::Select2
|
||||
include Page::Component::Project::Templates
|
||||
|
||||
view 'app/views/projects/new.html.haml' do
|
||||
element :project_create_from_template_tab
|
||||
|
@ -26,6 +27,11 @@ module QA
|
|||
element :import_github, "icon('github', text: 'GitHub')" # rubocop:disable QA/ElementWithPattern
|
||||
end
|
||||
|
||||
view 'app/views/projects/project_templates/_built_in_templates.html.haml' do
|
||||
element :use_template_button
|
||||
element :template_option_row
|
||||
end
|
||||
|
||||
def choose_test_namespace
|
||||
choose_namespace(Runtime::Namespace.path)
|
||||
end
|
||||
|
|
|
@ -20,6 +20,7 @@ module QA
|
|||
attribute :standalone
|
||||
attribute :runners_token
|
||||
attribute :visibility
|
||||
attribute :template_name
|
||||
|
||||
attribute :group do
|
||||
Group.fabricate!
|
||||
|
@ -52,6 +53,7 @@ module QA
|
|||
@initialize_with_readme = false
|
||||
@auto_devops_enabled = false
|
||||
@visibility = :public
|
||||
@template_name = nil
|
||||
end
|
||||
|
||||
def name=(raw_name)
|
||||
|
@ -64,6 +66,13 @@ module QA
|
|||
Page::Group::Show.perform(&:go_to_new_project)
|
||||
end
|
||||
|
||||
if @template_name
|
||||
Page::Project::New.perform do |new_page|
|
||||
new_page.click_create_from_template_tab
|
||||
new_page.use_template_for_project(@template_name)
|
||||
end
|
||||
end
|
||||
|
||||
Page::Project::New.perform do |new_page|
|
||||
new_page.choose_test_namespace
|
||||
new_page.choose_name(@name)
|
||||
|
@ -127,6 +136,7 @@ module QA
|
|||
end
|
||||
|
||||
post_body[:repository_storage] = repository_storage if repository_storage
|
||||
post_body[:template_name] = @template_name if @template_name
|
||||
|
||||
post_body
|
||||
end
|
||||
|
|
|
@ -10,34 +10,44 @@ describe Projects::AlertManagementHelper do
|
|||
let_it_be(:project_path) { project.full_path }
|
||||
|
||||
describe '#alert_management_data' do
|
||||
let(:user_can_enable_alert_management) { false }
|
||||
let(:setting_path) { project_settings_operations_path(project) }
|
||||
let(:user_can_enable_alert_management) { true }
|
||||
let(:setting_path) { edit_project_service_path(project, AlertsService) }
|
||||
|
||||
before do
|
||||
allow(helper)
|
||||
.to receive(:can?)
|
||||
.with(current_user, :admin_operations, project)
|
||||
.with(current_user, :admin_project, project)
|
||||
.and_return(user_can_enable_alert_management)
|
||||
end
|
||||
|
||||
context 'without alert_managements_setting' do
|
||||
it 'returns index page configuration' do
|
||||
expect(alert_management_data(current_user, project)).to eq(
|
||||
expect(helper.alert_management_data(current_user, project)).to match(
|
||||
'project-path' => project_path,
|
||||
'enable-alert-management-path' => setting_path,
|
||||
'empty-alert-svg-path' => '/images/illustrations/alert-management-empty-state.svg',
|
||||
'user-can-enable-alert-management' => 'false',
|
||||
'empty-alert-svg-path' => match_asset_path('/assets/illustrations/alert-management-empty-state.svg'),
|
||||
'user-can-enable-alert-management' => 'true',
|
||||
'alert-management-enabled' => 'true'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user does not have requisite enablement permissions' do
|
||||
let(:user_can_enable_alert_management) { false }
|
||||
|
||||
it 'shows error tracking enablement as disabled' do
|
||||
expect(helper.alert_management_data(current_user, project)).to include(
|
||||
'user-can-enable-alert-management' => 'false'
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#alert_management_detail_data' do
|
||||
let(:alert_id) { 1 }
|
||||
|
||||
it 'returns detail page configuration' do
|
||||
expect(alert_management_detail_data(project_path, alert_id)).to eq(
|
||||
expect(helper.alert_management_detail_data(project_path, alert_id)).to eq(
|
||||
'alert-id' => alert_id,
|
||||
'project-path' => project_path
|
||||
)
|
||||
|
|
|
@ -6,82 +6,10 @@ describe Gitlab::Throttle do
|
|||
describe '.protected_paths_enabled?' do
|
||||
subject { described_class.protected_paths_enabled? }
|
||||
|
||||
context 'when omnibus protected paths throttle should be used' do
|
||||
before do
|
||||
expect(described_class).to receive(:should_use_omnibus_protected_paths?).and_return(true)
|
||||
end
|
||||
it 'returns Application Settings throttle_protected_paths_enabled?' do
|
||||
expect(Gitlab::CurrentSettings.current_application_settings).to receive(:throttle_protected_paths_enabled?)
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
|
||||
context 'when omnibus protected paths throttle should not be used' do
|
||||
before do
|
||||
expect(described_class).to receive(:should_use_omnibus_protected_paths?).and_return(false)
|
||||
end
|
||||
|
||||
it 'returns Application Settings throttle_protected_paths_enabled?' do
|
||||
expect(Gitlab::CurrentSettings.current_application_settings).to receive(:throttle_protected_paths_enabled?)
|
||||
|
||||
subject
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.should_use_omnibus_protected_paths?' do
|
||||
subject { described_class.should_use_omnibus_protected_paths? }
|
||||
|
||||
context 'when rack_attack.admin_area_protected_paths_enabled config is unspecified' do
|
||||
context 'when the omnibus protected paths throttle has been recently used (it has data)' do
|
||||
before do
|
||||
expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(true)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
end
|
||||
|
||||
context 'when the omnibus protected paths throttle has not been recently used' do
|
||||
before do
|
||||
expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(false)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when rack_attack.admin_area_protected_paths_enabled config is false' do
|
||||
before do
|
||||
stub_config(rack_attack: {
|
||||
admin_area_protected_paths_enabled: false
|
||||
})
|
||||
end
|
||||
|
||||
context 'when the omnibus protected paths throttle has been recently used (it has data)' do
|
||||
before do
|
||||
expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(true)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
end
|
||||
|
||||
context 'when the omnibus protected paths throttle has not been recently used' do
|
||||
before do
|
||||
expect(described_class).to receive(:omnibus_protected_paths_present?).and_return(false)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when rack_attack.admin_area_protected_paths_enabled config is true' do
|
||||
before do
|
||||
stub_config(rack_attack: {
|
||||
admin_area_protected_paths_enabled: true
|
||||
})
|
||||
|
||||
expect(described_class).not_to receive(:omnibus_protected_paths_present?)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
subject
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -151,6 +151,14 @@ describe Gitlab::UsageData, :aggregate_failures do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.recording_ce_finished_at' do
|
||||
subject { described_class.recording_ce_finish_data }
|
||||
|
||||
it 'gathers time ce recording finishes at' do
|
||||
expect(subject[:recording_ce_finished_at]).to be_a(Time)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not relying on database records' do
|
||||
describe '#features_usage_data_ce' do
|
||||
subject { described_class.features_usage_data_ce }
|
||||
|
|
|
@ -262,20 +262,6 @@ describe 'Rack Attack global throttles' do
|
|||
|
||||
expect_rejection { post protected_path_that_does_not_require_authentication, params: post_params }
|
||||
end
|
||||
|
||||
context 'when Omnibus throttle should be used' do
|
||||
before do
|
||||
allow(Gitlab::Throttle)
|
||||
.to receive(:should_use_omnibus_protected_paths?).and_return(true)
|
||||
end
|
||||
|
||||
it 'allows requests over the rate limit' do
|
||||
(1 + requests_per_period).times do
|
||||
post protected_path_that_does_not_require_authentication, params: post_params
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -311,28 +297,6 @@ describe 'Rack Attack global throttles' do
|
|||
|
||||
it_behaves_like 'rate-limited token-authenticated requests'
|
||||
end
|
||||
|
||||
context 'when Omnibus throttle should be used' do
|
||||
let(:request_args) { [api(api_partial_url, personal_access_token: token)] }
|
||||
let(:other_user_request_args) { [api(api_partial_url, personal_access_token: other_user_token)] }
|
||||
|
||||
before do
|
||||
settings_to_set[:"#{throttle_setting_prefix}_requests_per_period"] = requests_per_period
|
||||
settings_to_set[:"#{throttle_setting_prefix}_period_in_seconds"] = period_in_seconds
|
||||
settings_to_set[:"#{throttle_setting_prefix}_enabled"] = true
|
||||
stub_application_setting(settings_to_set)
|
||||
|
||||
allow(Gitlab::Throttle)
|
||||
.to receive(:should_use_omnibus_protected_paths?).and_return(true)
|
||||
end
|
||||
|
||||
it 'allows requests over the rate limit' do
|
||||
(1 + requests_per_period).times do
|
||||
post(*request_args)
|
||||
expect(response).not_to have_gitlab_http_status(:too_many_requests)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'web requests authenticated with regular login' do
|
||||
|
@ -352,27 +316,6 @@ describe 'Rack Attack global throttles' do
|
|||
end
|
||||
|
||||
it_behaves_like 'rate-limited web authenticated requests'
|
||||
|
||||
context 'when Omnibus throttle should be used' do
|
||||
before do
|
||||
settings_to_set[:"#{throttle_setting_prefix}_requests_per_period"] = requests_per_period
|
||||
settings_to_set[:"#{throttle_setting_prefix}_period_in_seconds"] = period_in_seconds
|
||||
settings_to_set[:"#{throttle_setting_prefix}_enabled"] = true
|
||||
stub_application_setting(settings_to_set)
|
||||
|
||||
allow(Gitlab::Throttle)
|
||||
.to receive(:should_use_omnibus_protected_paths?).and_return(true)
|
||||
|
||||
login_as(user)
|
||||
end
|
||||
|
||||
it 'allows requests over the rate limit' do
|
||||
(1 + requests_per_period).times do
|
||||
post url_that_requires_authentication
|
||||
expect(response).not_to have_gitlab_http_status(:too_many_requests)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue