Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
5c2a27a69b
commit
3715ecdb64
|
|
@ -1 +1 @@
|
|||
f32d3d9029112f6740e784a031d4b9b60f49aa48
|
||||
41a9a2963eb4f08f2ba15667d005377f6127fa4d
|
||||
|
|
|
|||
|
|
@ -1,2 +1 @@
|
|||
export const isMultiDomainEnabled = () =>
|
||||
gon?.dot_com === true && gon?.features?.webIdeMultiDomain === true;
|
||||
export const isMultiDomainEnabled = () => gon?.dot_com === true;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
module Admin
|
||||
class OrganizationsController < ApplicationController
|
||||
feature_category :cell
|
||||
feature_category :organization
|
||||
|
||||
before_action :check_feature_flag!
|
||||
before_action only: [:index] do
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ class IdeController < ApplicationController
|
|||
|
||||
def index
|
||||
@fork_info = fork_info(project, params[:branch])
|
||||
push_frontend_feature_flag(:web_ide_multi_domain, @project.group)
|
||||
|
||||
render layout: 'fullscreen'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ class SearchController < ApplicationController
|
|||
return true
|
||||
end
|
||||
|
||||
return true if ::Feature.disabled?(:allow_anonymous_searches, type: :ops)
|
||||
return true unless ::Gitlab::CurrentSettings.anonymous_searches_allowed?
|
||||
|
||||
false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -74,6 +74,13 @@ module ApplicationSettingsHelper
|
|||
|
||||
def global_search_settings_checkboxes(form)
|
||||
[
|
||||
form.gitlab_ui_checkbox_component(
|
||||
:anonymous_searches_allowed,
|
||||
_("Allow unauthenticated users to use search"),
|
||||
checkbox_options: {
|
||||
checked: @application_setting.anonymous_searches_allowed, multiple: false
|
||||
}
|
||||
),
|
||||
form.gitlab_ui_checkbox_component(
|
||||
:global_search_block_anonymous_searches_enabled,
|
||||
_("Restrict global search to authenticated users only"),
|
||||
|
|
|
|||
|
|
@ -42,6 +42,10 @@ module WorkItems
|
|||
handle_widget_quick_actions!(work_item)
|
||||
end
|
||||
|
||||
def params_include_state_and_status_changes?
|
||||
params.include?(:state_event) && widget_params.dig(:status_widget, :status)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def new_type_excludes_widget?(widget, resource_parent)
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
module Issues
|
||||
class CloseService < Issues::BaseService
|
||||
# Closes the supplied issue if the current user is able to do so.
|
||||
def execute(issue, commit: nil, notifications: true, system_note: true, skip_authorization: false)
|
||||
def execute(issue, commit: nil, notifications: true, system_note: true, skip_authorization: false, status: nil)
|
||||
return issue unless can_close?(issue, skip_authorization: skip_authorization)
|
||||
|
||||
close_issue(issue, closed_via: commit, notifications: notifications, system_note: system_note)
|
||||
close_issue(issue, closed_via: commit, notifications: notifications, system_note: system_note, status: status)
|
||||
end
|
||||
|
||||
# Closes the supplied issue without checking if the user is authorized to
|
||||
|
|
@ -14,7 +14,7 @@ module Issues
|
|||
#
|
||||
# The code calling this method is responsible for ensuring that a user is
|
||||
# allowed to close the given issue.
|
||||
def close_issue(issue, closed_via: nil, notifications: true, system_note: true)
|
||||
def close_issue(issue, closed_via: nil, notifications: true, system_note: true, status: nil)
|
||||
if issue.is_a?(ExternalIssue)
|
||||
close_external_issue(issue, closed_via)
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ module Issues
|
|||
|
||||
return issue unless handle_closing_issue!(issue, current_user)
|
||||
|
||||
after_close(issue, closed_via: closed_via, notifications: notifications, system_note: system_note)
|
||||
after_close(issue, status, closed_via: closed_via, notifications: notifications, system_note: system_note)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -34,7 +34,7 @@ module Issues
|
|||
end
|
||||
|
||||
# overriden in EE
|
||||
def after_close(issue, closed_via: nil, notifications: true, system_note: true)
|
||||
def after_close(issue, _status, closed_via: nil, notifications: true, system_note: true)
|
||||
event_service.close_issue(issue, current_user)
|
||||
create_note(issue, closed_via) if system_note
|
||||
|
||||
|
|
@ -45,7 +45,13 @@ module Issues
|
|||
|
||||
closed_via = _("commit %{commit_id}") % { commit_id: closed_via.id } if closed_via.is_a?(Commit)
|
||||
|
||||
notification_service.async.close_issue(issue, current_user, { closed_via: closed_via }) if notifications
|
||||
if notifications
|
||||
user = current_user
|
||||
issue.run_after_commit_or_now do
|
||||
NotificationService.new.async.close_issue(issue, user, { closed_via: closed_via })
|
||||
end
|
||||
end
|
||||
|
||||
todo_service.close_issue(issue, current_user)
|
||||
perform_incident_management_actions(issue)
|
||||
execute_hooks(issue, 'close')
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ module Issues
|
|||
create_issue_duplicate_note(duplicate_issue, canonical_issue)
|
||||
create_issue_canonical_note(canonical_issue, duplicate_issue)
|
||||
|
||||
close_service.new(container: container, current_user: current_user).execute(duplicate_issue)
|
||||
duplicate_issue.update(duplicated_to: canonical_issue)
|
||||
close_service.new(container: container, current_user: current_user).execute(duplicate_issue)
|
||||
|
||||
relate_two_issues(duplicate_issue, canonical_issue)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
module Issues
|
||||
class ReopenService < Issues::BaseService
|
||||
def execute(issue, skip_authorization: false)
|
||||
def execute(issue, skip_authorization: false, status: nil)
|
||||
return issue unless can_reopen?(issue, skip_authorization: skip_authorization)
|
||||
|
||||
after_reopen(issue) if reopen_issue(issue)
|
||||
after_reopen(issue, status) if reopen_issue(issue)
|
||||
|
||||
issue
|
||||
end
|
||||
|
|
@ -13,7 +13,7 @@ module Issues
|
|||
private
|
||||
|
||||
# overriden in EE
|
||||
def after_reopen(issue)
|
||||
def after_reopen(issue, _status)
|
||||
event_service.reopen_issue(issue, current_user)
|
||||
|
||||
if current_user.project_bot?
|
||||
|
|
@ -22,7 +22,8 @@ module Issues
|
|||
end
|
||||
|
||||
create_note(issue, 'reopened')
|
||||
notification_service.async.reopen_issue(issue, current_user)
|
||||
user = current_user
|
||||
issue.run_after_commit_or_now { NotificationService.new.async.reopen_issue(issue, user) }
|
||||
perform_incident_management_actions(issue)
|
||||
execute_hooks(issue, 'reopen')
|
||||
invalidate_cache_counts(issue, users: issue.assignees)
|
||||
|
|
|
|||
|
|
@ -24,11 +24,6 @@ module Namespaces
|
|||
|
||||
# rubocop: disable CodeReuse/ActiveRecord -- Batching over groups.
|
||||
def perform
|
||||
# rubocop: disable Gitlab/FeatureFlagWithoutActor -- This is a global worker.
|
||||
return if Feature.disabled?(:periodical_namespace_descendants_cache_worker)
|
||||
|
||||
# rubocop: enable Gitlab/FeatureFlagWithoutActor
|
||||
|
||||
limiter = Gitlab::Metrics::RuntimeLimiter.new(MAX_RUNTIME)
|
||||
ids_to_cache = Set.new
|
||||
last_id = get_last_id
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: periodical_namespace_descendants_cache_worker
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/509554
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176648
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/510967
|
||||
milestone: '17.8'
|
||||
group: group::optimize
|
||||
type: beta
|
||||
default_enabled: true
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: web_ide_multi_domain
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/520263
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/185623
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/526529
|
||||
milestone: '17.11'
|
||||
group: group::remote development
|
||||
type: gitlab_com_derisk
|
||||
default_enabled: false
|
||||
|
|
@ -192,6 +192,7 @@ class Gitlab::Seeder::Users
|
|||
end
|
||||
|
||||
Gitlab::Seeder.quiet do
|
||||
users = Gitlab::Seeder::Users.new(organization: Organizations::Organization.default_organization)
|
||||
organization = User.admins.first.organizations.first
|
||||
users = Gitlab::Seeder::Users.new(organization: organization)
|
||||
users.seed!
|
||||
end
|
||||
|
|
|
|||
|
|
@ -251,6 +251,7 @@ class Gitlab::Seeder::Projects
|
|||
end
|
||||
|
||||
Gitlab::Seeder.quiet do
|
||||
projects = Gitlab::Seeder::Projects.new(organization: Organizations::Organization.default_organization)
|
||||
organization = User.admins.first.organizations.first
|
||||
projects = Gitlab::Seeder::Projects.new(organization: organization)
|
||||
projects.seed!
|
||||
end
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ Gitlab::Seeder.quiet do
|
|||
title: FFaker::Lorem.sentence(3),
|
||||
file_name: 'file.rb',
|
||||
visibility_level: Gitlab::VisibilityLevel.values.sample,
|
||||
organization: Organizations::Organization.default_organization,
|
||||
organization: User.admins.first.organizations.first,
|
||||
content: 'foo'
|
||||
}).tap do |snippet|
|
||||
snippet.repository.expire_exists_cache
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
|
|||
confirmed_at: DateTime.now,
|
||||
password: ::User.random_password
|
||||
) do |user|
|
||||
user.assign_personal_namespace(Organizations::Organization.default_organization)
|
||||
user.assign_personal_namespace(project.organization)
|
||||
end
|
||||
|
||||
project.group&.add_developer(user)
|
||||
|
|
@ -252,6 +252,7 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
|
|||
name: "Value Stream Management Group #{suffix}",
|
||||
path: "vsmg-#{suffix}"
|
||||
)
|
||||
|
||||
project = FactoryBot.create(
|
||||
:project,
|
||||
:repository,
|
||||
|
|
@ -260,7 +261,6 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
|
|||
creator: admin,
|
||||
namespace: namespace
|
||||
)
|
||||
|
||||
project.create_repository
|
||||
project
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ module Db
|
|||
class AbuseReport
|
||||
def self.seed
|
||||
Gitlab::Seeder.quiet do
|
||||
organization = User.admins.first.organizations.first
|
||||
|
||||
(::AbuseReport.default_per_page + 3).times do |i|
|
||||
username = "#{::Gitlab::Seeder::REPORTED_USER_START}#{::Gitlab::Faker::Internet.unique_username}"
|
||||
reported_user =
|
||||
|
|
@ -14,7 +16,7 @@ module Db
|
|||
confirmed_at: DateTime.now,
|
||||
password: ::User.random_password
|
||||
) do |user|
|
||||
user.assign_personal_namespace(Organizations::Organization.default_organization)
|
||||
user.assign_personal_namespace(organization)
|
||||
end
|
||||
|
||||
label_title = "abuse_report_label_#{FactoryBot.generate(:label_title)}"
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ Sidekiq::Testing.inline! do
|
|||
full_path, _, project_path = full_path.rpartition('/')
|
||||
group = Sidekiq::Worker.skipping_transaction_check do
|
||||
Group.find_by_full_path(full_path) || Groups::NestedCreateService.new(
|
||||
user, group_path: full_path, organization_id: Organizations::Organization.default_organization.id
|
||||
user, group_path: full_path, organization_id: user.organizations.first.id
|
||||
).execute
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Gitlab::Seeder.quiet do
|
|||
user.personal_access_tokens.build(params).tap do |pat|
|
||||
pat.expires_at = 365.days.from_now
|
||||
pat.set_token(token)
|
||||
pat.organization = Organizations::Organization.default_organization
|
||||
pat.organization = user.organizations.first
|
||||
pat.save!
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -101,7 +101,9 @@ Gitlab::Seeder.quiet do
|
|||
|
||||
Sidekiq::Testing.inline! do
|
||||
COMPOSER_PACKAGES.each do |path, versions|
|
||||
project = Gitlab::Seeder::ComposerPackages.new(organization: Organizations::Organization.default_organization)
|
||||
organization = User.admins.first.organizations.first
|
||||
|
||||
project = Gitlab::Seeder::ComposerPackages.new(organization: organization)
|
||||
project.create_real_project!(path)
|
||||
|
||||
versions.each do |version|
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ class Gitlab::Seeder::TriageOps
|
|||
password: SecureRandom.hex.slice(0, 16),
|
||||
user_type: :project_bot
|
||||
) do |user|
|
||||
user.assign_personal_namespace(Organizations::Organization.default_organization)
|
||||
user.assign_personal_namespace(@organization)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -220,7 +220,7 @@ class Gitlab::Seeder::TriageOps
|
|||
name: group_path.titleize,
|
||||
path: group_path,
|
||||
parent: parent,
|
||||
organization_id: organization.id
|
||||
organization_id: @organization.id
|
||||
)
|
||||
group.description = FFaker::Lorem.sentence
|
||||
group.save!
|
||||
|
|
@ -247,7 +247,8 @@ class Gitlab::Seeder::TriageOps
|
|||
path: project_path,
|
||||
description: FFaker::Lorem.sentence,
|
||||
visibility_level: Gitlab::VisibilityLevel::PRIVATE,
|
||||
skip_disk_validation: true
|
||||
skip_disk_validation: true,
|
||||
organization_id: @organization.id
|
||||
}
|
||||
|
||||
project = ::Projects::CreateService.new(User.first, params).execute
|
||||
|
|
@ -260,7 +261,9 @@ end
|
|||
|
||||
if ENV['SEED_TRIAGE_OPS']
|
||||
Gitlab::Seeder.quiet do
|
||||
seeder = Gitlab::Seeder::TriageOps.new(organization: Organizations::Organization.default_organization)
|
||||
organization = User.admins.first.organizations.first
|
||||
|
||||
seeder = Gitlab::Seeder::TriageOps.new(organization: organization)
|
||||
seeder.seed!
|
||||
end
|
||||
else
|
||||
|
|
|
|||
|
|
@ -59,7 +59,9 @@ class Gitlab::Seeder::Timelogs
|
|||
end
|
||||
|
||||
def self.find_or_create_reporter_user(username, password)
|
||||
organization = User.admins.first.organizations.first
|
||||
user = User.find_by_username(username)
|
||||
|
||||
if user.nil?
|
||||
print "\nCreating user '#{username}' with password: '#{password}'"
|
||||
|
||||
|
|
@ -70,7 +72,7 @@ class Gitlab::Seeder::Timelogs
|
|||
confirmed_at: DateTime.now,
|
||||
password: password
|
||||
) do |user|
|
||||
user.assign_personal_namespace(Organizations::Organization.default_organization)
|
||||
user.assign_personal_namespace(organization)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ reasons are:
|
|||
removes these.
|
||||
- Artifact files might be left on disk and not deleted by housekeeping. Run the
|
||||
[Rake task for _orphaned_ artifact files](../raketasks/cleanup.md#remove-orphan-artifact-files)
|
||||
to remove these. This script should always find work to do because it also removes empty directories (see above).
|
||||
to remove these. This script should always find work to do because it also removes empty directories (see the previous reason).
|
||||
- [Artifact housekeeping was changed significantly](#housekeeping-disabled-in-gitlab-150-to-152), and you might need to enable a feature flag to use the updated system.
|
||||
- The [keep latest artifacts from most recent success jobs](../../ci/jobs/job_artifacts.md#keep-artifacts-from-most-recent-successful-jobs)
|
||||
feature is enabled.
|
||||
|
|
@ -149,7 +149,7 @@ for more details.
|
|||
#### Clean up `unknown` artifacts
|
||||
|
||||
The Sidekiq worker that processes all `unknown` artifacts is enabled by default in
|
||||
GitLab 15.3 and later. It analyzes the artifacts returned by the above database query and
|
||||
GitLab 15.3 and later. It analyzes the artifacts returned by the previous database query and
|
||||
determines which should be `locked` or `unlocked`. Artifacts are then deleted
|
||||
by that worker if needed.
|
||||
|
||||
|
|
@ -638,7 +638,7 @@ WARNING: Uploading artifacts as "archive" to coordinator... POST https://gitlab.
|
|||
FATAL: invalid argument
|
||||
```
|
||||
|
||||
If a job artifact fails to upload with the above error when using consolidated object storage, make sure you are [using separate buckets](../object_storage.md#use-separate-buckets) for each data type.
|
||||
If a job artifact fails to upload due to the previous error when using consolidated object storage, make sure you are [using separate buckets](../object_storage.md#use-separate-buckets) for each data type.
|
||||
|
||||
## Job artifacts fail to upload with `FATAL: invalid argument` when using Windows mount
|
||||
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ The incremental logging process uses Redis as temporary storage and follows this
|
|||
1. The runner sends a piece of log to GitLab.
|
||||
1. GitLab appends the data to Redis in the `Gitlab::Redis::TraceChunks` namespace.
|
||||
1. After the data in Redis reaches 128 KB, the data is flushed to a persistent store.
|
||||
1. The above steps repeat until the job is finished.
|
||||
1. The previous steps repeat until the job is finished.
|
||||
1. After the job is finished, GitLab schedules a Sidekiq worker to archive the log.
|
||||
1. The Sidekiq worker archives the log to object storage and cleans up temporary data.
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ To add a SAML provider for your GitLab Dedicated instance:
|
|||
- **Security**
|
||||
1. To start using this provider, select the **Enable this provider** checkbox.
|
||||
1. Select **Save**.
|
||||
1. To add another SAML provider, select **Add SAML provider** again and follow the steps above. You can add up to ten providers.
|
||||
1. To add another SAML provider, select **Add SAML provider** again and follow the previous steps. You can add up to ten providers.
|
||||
1. Scroll up to the top of the page. The **Initiated changes** banner explains that your SAML configuration changes are applied during the next maintenance window. To apply the changes immediately, select **Apply changes now**.
|
||||
|
||||
After the changes are applied, you can sign in to your GitLab Dedicated instance using this SAML provider. To use group sync, [configure the SAML group links](../../../user/group/saml_sso/group_sync.md#configure-saml-group-links).
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
|
|||
Some organizations have policies against opening SSH port 22. In this case,
|
||||
it may be helpful to configure an alternate SSH hostname that allows users
|
||||
to use SSH on port 443. An alternate SSH hostname requires a new virtual IP address
|
||||
compared to the other GitLab HTTP configuration above.
|
||||
compared to the other GitLab HTTP configuration documented previously.
|
||||
|
||||
Configure DNS for an alternate SSH hostname such as `altssh.gitlab.example.com`.
|
||||
|
||||
|
|
|
|||
|
|
@ -619,7 +619,7 @@ processing them, such as before being enqueued.
|
|||
|
||||
This log file follows the same structure as
|
||||
[`sidekiq.log`](#sidekiqlog), so it is structured as JSON if
|
||||
you've configured this for Sidekiq as mentioned above.
|
||||
you've configured this for Sidekiq as mentioned previously.
|
||||
|
||||
## `gitlab-shell.log`
|
||||
|
||||
|
|
@ -863,7 +863,8 @@ This file is located at:
|
|||
- `/home/git/gitlab/log/mail_room_json.log` on self-compiled installations.
|
||||
|
||||
This structured log file records internal activity in the `mail_room` gem.
|
||||
Its name and path are configurable, so the name and path may not match the above.
|
||||
Its name and path are configurable, so the name and path may not match this one
|
||||
documented previously.
|
||||
|
||||
## `web_hooks.log`
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ The response contains the data from the API endpoint, and a `correlation_id` val
|
|||
|
||||
You can then view the database details for this request:
|
||||
|
||||
1. Paste the `x-request-id` value into the `request details` field of the [performance bar](../monitoring/performance/performance_bar.md) and press <kbd>Enter/Return</kbd>. This example uses the `x-request-id` value `01FGN8P881GF2E5J91JYA338Y3`, returned by the above response:
|
||||
1. Paste the `x-request-id` value into the `request details` field of the [performance bar](../monitoring/performance/performance_bar.md) and press <kbd>Enter/Return</kbd>. This example uses the `x-request-id` value `01FGN8P881GF2E5J91JYA338Y3`, returned by the previous response:
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ If Geo is enabled, Git pushes to both primary and secondaries fail.
|
|||
|
||||
### Merge requests, issues, epics
|
||||
|
||||
All write actions except those mentioned above fail. For example, a user cannot update merge requests or issues.
|
||||
All write actions except those mentioned previously fail. For example, a user cannot update merge requests or issues.
|
||||
|
||||
### Incoming email
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ GitLab displays your link in the **Admin** area under **Monitoring > Metrics Das
|
|||
|
||||
## Required Scopes
|
||||
|
||||
When setting up Grafana through the process above, no scope shows in the screen in
|
||||
When setting up Grafana through the previous process, no scope shows in the screen in
|
||||
the **Admin** area under **Applications > GitLab Grafana**. However, the `read_user` scope is
|
||||
required and is provided to the application automatically. Setting any scope other than
|
||||
`read_user` without also including `read_user` leads to this error when you try to sign in using
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ To serve metrics via HTTPS instead of HTTP, enable TLS in the exporter settings:
|
|||
1. Save the file and [reconfigure GitLab](../../restart_gitlab.md#reconfigure-a-linux-package-installation)
|
||||
for the changes to take effect.
|
||||
|
||||
When TLS is enabled, the same `port` and `address` is used as described above.
|
||||
When TLS is enabled, the same `port` and `address` is used as described previously.
|
||||
The metrics server cannot serve both HTTP and HTTPS at the same time.
|
||||
|
||||
## Troubleshooting
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ For an example, see how to [use the consolidated form and Amazon S3](#full-examp
|
|||
|
||||
#### Disable object storage for specific features
|
||||
|
||||
As seen above, object storage can be disabled for specific types by
|
||||
As seen previously, object storage can be disabled for specific types by
|
||||
setting the `enabled` flag to `false`. For example, to disable object
|
||||
storage for CI artifacts:
|
||||
|
||||
|
|
|
|||
|
|
@ -1689,7 +1689,7 @@ flowchart LR
|
|||
linkStyle 2 stroke-width:4px,stroke:green
|
||||
```
|
||||
|
||||
The flow described by the diagram above:
|
||||
The flow described by the previous diagram:
|
||||
|
||||
1. A user runs `docker login registry.gitlab.example` on their client. This reaches the web server (or LB) on port 443.
|
||||
1. Web server connects to the Registry backend pool (by default, using port 5000). Because the user
|
||||
|
|
|
|||
|
|
@ -740,7 +740,7 @@ which can happen if you:
|
|||
- Attempted the [one step import](#one-step-import) and encountered errors.
|
||||
- Attempted the [three-step import](#three-step-import) process and encountered errors.
|
||||
- Stopped the import process on purpose.
|
||||
- Tried to run the import again after any of the above.
|
||||
- Tried to run the import again after any of the previous actions.
|
||||
- Ran the import against the wrong configuration file.
|
||||
|
||||
To resolve this issue, you must delete the existing entries in the tags table.
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ Error response from daemon: Get registry.example.com/v1/users/: x509: certificat
|
|||
```
|
||||
|
||||
The Docker daemon running the command expects a cert signed by a recognized CA,
|
||||
thus the error above.
|
||||
thus the previous error.
|
||||
|
||||
While GitLab doesn't support using self-signed certificates with Container
|
||||
Registry out of the box, it is possible to make it work by
|
||||
|
|
@ -583,7 +583,7 @@ docker login example.s3.amazonaws.com:5050
|
|||
docker push example.s3.amazonaws.com:5050/root/docker-test/docker-image
|
||||
```
|
||||
|
||||
In the example above, we see the following trace on the mitmproxy window:
|
||||
In the previous example, we see the following trace on the mitmproxy window:
|
||||
|
||||
```plaintext
|
||||
PUT https://example.s3.amazonaws.com:4567/v2/root/docker-test/blobs/uploads/(UUID)/(QUERYSTRING)
|
||||
|
|
|
|||
|
|
@ -1176,7 +1176,7 @@ It's possible to run GitLab Pages on multiple servers if you wish to distribute
|
|||
the load. You can do this through standard load balancing practices such as
|
||||
configuring your DNS server to return multiple IPs for your Pages server, or
|
||||
configuring a load balancer to work at the IP level. If you wish to
|
||||
set up GitLab Pages on multiple servers, perform the above procedure for each
|
||||
set up GitLab Pages on multiple servers, perform the previous procedure for each
|
||||
Pages server.
|
||||
|
||||
## Domain source configuration
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ outside world.
|
|||
|
||||
1. Edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true` in
|
||||
order to enable the pages daemon. In `gitlab_pages_options` the
|
||||
`-pages-domain` must match the `host` setting that you set above.
|
||||
`-pages-domain` must match the `host` value that you set previously.
|
||||
The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
|
||||
of the `example.io` domain:
|
||||
|
||||
|
|
|
|||
|
|
@ -426,8 +426,8 @@ To reset broken tokens:
|
|||
|
||||
## Troubleshooting
|
||||
|
||||
The following are solutions to problems you might discover using the Rake tasks documented
|
||||
above.
|
||||
The following are solutions to problems you might discover using the Rake tasks
|
||||
documented previously.
|
||||
|
||||
### Dangling objects
|
||||
|
||||
|
|
|
|||
|
|
@ -174,4 +174,4 @@ to apply to their experimental and beta features:
|
|||
a different direction would provide more value or a better user experience. If open questions must be answered
|
||||
to decide if the feature is worth putting in the product, list and answer those.
|
||||
|
||||
For the exit criteria of **AI features**, in addition to the above, see the UX maturity requirements.
|
||||
For the exit criteria of **AI features**, in addition to the list documented previously, see the UX maturity requirements.
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ You are more than welcome to [request a free trial](https://about.gitlab.com/fre
|
|||
|
||||
## Add a feature to the program
|
||||
|
||||
Create a merge request and add your feature to the [table above](#features-included-in-the-gitlab-early-access-program). Assign `@nick_vh` and `@knockfog-ext` as reviewers. In addition, post a message in the `#developer-relations-early-access-program` Slack channel for details.
|
||||
Create a merge request and add your feature to the [previous table](#features-included-in-the-gitlab-early-access-program).
|
||||
Assign `@nick_vh` and `@knockfog-ext` as reviewers. In addition, post a message in the `#developer-relations-early-access-program` Slack channel for details.
|
||||
|
||||
<!--
|
||||
## Features previously enrolled
|
||||
|
|
|
|||
|
|
@ -111,16 +111,16 @@ release, depending on the severity of the bug.
|
|||
|
||||
The decision on whether backporting a change is performed is done at the discretion of the
|
||||
[current release managers](https://about.gitlab.com/community/release-managers/),
|
||||
based on *all* of the following:
|
||||
based on **all** of the following:
|
||||
|
||||
1. Estimated severity of the bug:
|
||||
Highest possible impact to users based on the current definition of severity.
|
||||
1. Estimated priority of the bug:
|
||||
Immediate impact on all impacted users based on the above estimated severity.
|
||||
Immediate impact on all impacted users based on the previous estimated severity.
|
||||
1. Potentially incurring data loss and/or security breach.
|
||||
1. Potentially affecting one or more strategic accounts due to a proven inability by the user to upgrade to the current stable version.
|
||||
|
||||
If *all* of the above are satisfied, the backport releases can be created for
|
||||
If **all** the items in the previous list are satisfied, the backport releases can be created for
|
||||
the current stable release, and two previous monthly releases. In rare cases a release manager may grant an exception to backport to more than two previous monthly releases.
|
||||
For instance, if we release `13.2.1` with a fix for a severe bug introduced in
|
||||
`13.0.0`, we could backport the fix to a new `13.0.x`, and `13.1.x` patch release.
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ For more information, see [issue 477333](https://gitlab.com/gitlab-org/gitlab/-/
|
|||
- Restricting global search to authenticated users [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/41041) in GitLab 13.4 [with a flag](../../administration/feature_flags.md) named `block_anonymous_global_searches`. Disabled by default.
|
||||
- Allowing search for unauthenticated users [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138975) in GitLab 16.7 [with a flag](../../administration/feature_flags.md) named `allow_anonymous_searches`. Enabled by default.
|
||||
- Restricting global search to authenticated users [generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186727) in GitLab 17.11. Feature flag `block_anonymous_global_searches` removed.
|
||||
- Allowing search for unauthenticated users [generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/190090) in GitLab 18.0. Feature flag `allow_anonymous_searches` removed.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -78,9 +79,15 @@ By default, requests to `/search` and global search are available for unauthenti
|
|||
|
||||
To restrict `/search` to authenticated users only, do one of the following:
|
||||
|
||||
- [Restrict public visibility](../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels)
|
||||
of the project or group.
|
||||
- Disable the [feature flag](../../administration/feature_flags.md) `allow_anonymous_searches`.
|
||||
- [Restrict visibility levels](../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels)
|
||||
for the project or group.
|
||||
- Restrict access in the **Admin** area:
|
||||
|
||||
1. On the left sidebar, at the bottom, select **Admin**.
|
||||
1. Select **Settings > Search**.
|
||||
1. Expand **Advanced search**.
|
||||
1. Clear the **Allow unauthenticated users to use search** checkbox.
|
||||
1. Select **Save changes**.
|
||||
|
||||
To restrict global search to authenticated users only:
|
||||
|
||||
|
|
|
|||
|
|
@ -108,12 +108,28 @@ To configure the `remote_development` module in the agent project:
|
|||
|
||||
For a full list of configuration options, see the workspace [configuration reference](settings.md#configuration-reference).
|
||||
|
||||
{{< alert type="note" >}}
|
||||
|
||||
The GitLab agent is configured in one project, but you can use it in other project workspaces.
|
||||
A separate agent is not required for each project.
|
||||
|
||||
The configured agent is not visible until you
|
||||
[allow the agent in your group](#allow-the-gitlab-agent-in-your-group).
|
||||
|
||||
{{< /alert >}}
|
||||
|
||||
## Allow the GitLab agent in your group
|
||||
|
||||
When you allow an agent in a group, the group and its subgroups can use that agent.
|
||||
Carefully consider the group where you allow the GitLab agent.
|
||||
When you allow an agent in a group, the group, its subgroups, and all projects in those groups can
|
||||
use that agent.
|
||||
|
||||
To allow your GitLab agent in a group and its subgroups:
|
||||
{{< alert type="note" >}}
|
||||
|
||||
Only one agent is required. You can create workspaces from all projects in a group with the same agent.
|
||||
|
||||
{{< /alert >}}
|
||||
|
||||
To allow your GitLab agent in a group and make it available to all projects in that group:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your group.
|
||||
1. Select **Settings > Workspaces**.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ module Gitlab
|
|||
class BackfillDefaultOrganizationOwnersAgain < BatchedMigrationJob
|
||||
operation_name :backfill_default_organization_owners_again # This is used as the key on collecting metrics
|
||||
scope_to ->(relation) { relation.where(admin: true) }
|
||||
feature_category :cell
|
||||
feature_category :organization
|
||||
|
||||
module Organizations
|
||||
class OrganizationUser < ApplicationRecord
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ module Gitlab
|
|||
class BackfillDefaultOrganizationUsers < BatchedMigrationJob
|
||||
operation_name :backfill_default_organization_users # This is used as the key on collecting metrics
|
||||
scope_to ->(relation) { relation.where(admin: false) } # true handled in BackfillDefaultOrganizationOwnersAgain
|
||||
feature_category :cell
|
||||
feature_category :organization
|
||||
|
||||
DEFAULT_ACCESS_LEVEL = 10
|
||||
DEFAULT_ORGANIZATION_ID = 1
|
||||
|
|
|
|||
|
|
@ -6624,6 +6624,9 @@ msgstr ""
|
|||
msgid "Allow top-level group owners to create Service accounts."
|
||||
msgstr ""
|
||||
|
||||
msgid "Allow unauthenticated users to use search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Allow use of licensed EE features"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -252,9 +252,9 @@ RSpec.describe SearchController, feature_category: :global_search do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when allow_anonymous_searches is disabled' do
|
||||
context 'when anonymous_searches_allowed is disabled' do
|
||||
before do
|
||||
stub_feature_flags(allow_anonymous_searches: false)
|
||||
stub_application_setting(anonymous_searches_allowed: false)
|
||||
end
|
||||
|
||||
context 'for unauthenticated user' do
|
||||
|
|
@ -754,7 +754,7 @@ RSpec.describe SearchController, feature_category: :global_search do
|
|||
describe 'redirecting' do
|
||||
using RSpec::Parameterized::TableSyntax
|
||||
|
||||
where(:restricted_visibility_levels, :allow_anonymous_searches, :block_anonymous_global_searches, :redirect) do
|
||||
where(:restricted_visibility_levels, :anonymous_searches_allowed, :block_anonymous_global_searches, :redirect) do
|
||||
[Gitlab::VisibilityLevel::PUBLIC] | true | false | true
|
||||
[Gitlab::VisibilityLevel::PRIVATE] | true | false | false
|
||||
nil | true | false | false
|
||||
|
|
@ -766,7 +766,7 @@ RSpec.describe SearchController, feature_category: :global_search do
|
|||
with_them do
|
||||
before do
|
||||
stub_application_setting(restricted_visibility_levels: restricted_visibility_levels)
|
||||
stub_feature_flags(allow_anonymous_searches: allow_anonymous_searches)
|
||||
stub_application_setting(anonymous_searches_allowed: anonymous_searches_allowed)
|
||||
stub_application_setting(global_search_block_anonymous_searches_enabled: block_anonymous_global_searches)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationAssociationCounter, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationAssociationCounter, feature_category: :organization do
|
||||
let_it_be(:other_organization) { create(:organization) }
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
let_it_be(:owner) { create(:organization_user, :owner, organization: organization) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationUsersFinder, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationUsersFinder, feature_category: :organization do
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
let_it_be(:organization_owner) { create(:organization_owner, organization: organization) }
|
||||
let_it_be(:organization_user) { create(:organization_user, organization: organization) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::UserOrganizationsFinder, '#execute', feature_category: :cell do
|
||||
RSpec.describe Organizations::UserOrganizationsFinder, '#execute', feature_category: :organization do
|
||||
let_it_be(:admin) { create(:user, :admin) }
|
||||
let_it_be(:another_user) { create(:user) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :controller, feature_category: :cell do
|
||||
RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :controller, feature_category: :organization do
|
||||
include JavaScriptFixturesHelpers
|
||||
|
||||
let_it_be(:current_user) { create(:user) }
|
||||
|
|
@ -27,7 +27,7 @@ RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :
|
|||
end
|
||||
end
|
||||
|
||||
RSpec.describe 'Organizations (GraphQL fixtures)', feature_category: :cell do
|
||||
RSpec.describe 'Organizations (GraphQL fixtures)', feature_category: :organization do
|
||||
describe GraphQL::Query, type: :request do
|
||||
include GraphqlHelpers
|
||||
include JavaScriptFixturesHelpers
|
||||
|
|
|
|||
|
|
@ -13,22 +13,14 @@ describe('isMultiDomainEnabled', () => {
|
|||
});
|
||||
|
||||
it.each`
|
||||
dot_com | features | expected
|
||||
${true} | ${true} | ${true}
|
||||
${true} | ${false} | ${false}
|
||||
${false} | ${true} | ${false}
|
||||
${false} | ${false} | ${false}
|
||||
`(
|
||||
'returns $expected when gon.dot_com is $dot_com and gon.features.webIdeMultiDomain is $features',
|
||||
({ dot_com, features, expected }) => {
|
||||
window.gon = {
|
||||
dot_com,
|
||||
features: {
|
||||
webIdeMultiDomain: features,
|
||||
},
|
||||
};
|
||||
dot_com | expected
|
||||
${true} | ${true}
|
||||
${false} | ${false}
|
||||
`('returns $expected when gon.dot_com is $dot_com', ({ dot_com, expected }) => {
|
||||
window.gon = {
|
||||
dot_com,
|
||||
};
|
||||
|
||||
expect(isMultiDomainEnabled()).toBe(expected);
|
||||
},
|
||||
);
|
||||
expect(isMultiDomainEnabled()).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe GitlabSchema.types['Organization'], feature_category: :cell do
|
||||
RSpec.describe GitlabSchema.types['Organization'], feature_category: :organization do
|
||||
let_it_be(:expected_fields) do
|
||||
%w[avatar_url description description_html groups id name organization_users path projects web_url]
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Types::Organizations::OrganizationUserAccessLevelEnum, feature_category: :cell do
|
||||
RSpec.describe Types::Organizations::OrganizationUserAccessLevelEnum, feature_category: :organization do
|
||||
specify { expect(described_class.graphql_name).to eq('OrganizationUserAccessLevel') }
|
||||
|
||||
it 'exposes all the existing access levels' do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe GitlabSchema.types['OrganizationUserAccess'], feature_category: :cell do
|
||||
RSpec.describe GitlabSchema.types['OrganizationUserAccess'], feature_category: :organization do
|
||||
specify { expect(described_class.graphql_name).to eq('OrganizationUserAccess') }
|
||||
specify { expect(described_class).to require_graphql_authorizations(nil) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe GitlabSchema.types['OrganizationUserBadge'], feature_category: :cell do
|
||||
RSpec.describe GitlabSchema.types['OrganizationUserBadge'], feature_category: :organization do
|
||||
let(:expected_fields) { %w[text variant] }
|
||||
|
||||
specify { expect(described_class.graphql_name).to eq('OrganizationUserBadge') }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe GitlabSchema.types['OrganizationUser'], feature_category: :cell do
|
||||
RSpec.describe GitlabSchema.types['OrganizationUser'], feature_category: :organization do
|
||||
let(:expected_fields) { %w[access_level badges id is_last_owner user user_permissions] }
|
||||
|
||||
specify { expect(described_class.graphql_name).to eq('OrganizationUser') }
|
||||
|
|
|
|||
|
|
@ -402,11 +402,12 @@ RSpec.describe ApplicationSettingsHelper, feature_category: :shared do
|
|||
it 'returns correctly checked checkboxes' do
|
||||
helper.gitlab_ui_form_for(application_setting, url: search_admin_application_settings_path) do |form|
|
||||
result = helper.global_search_settings_checkboxes(form)
|
||||
expect(result[0]).to have_checked_field('Restrict global search to authenticated users only', with: 1)
|
||||
expect(result[1]).to have_checked_field('Show issues in global search results', with: 1)
|
||||
expect(result[2]).not_to have_checked_field('Show merge requests in global search results', with: 1)
|
||||
expect(result[3]).to have_checked_field('Show snippets in global search results', with: 1)
|
||||
expect(result[4]).not_to have_checked_field('Show users in global search results', with: 1)
|
||||
expect(result[0]).to have_checked_field('Allow unauthenticated users to use search', with: 1)
|
||||
expect(result[1]).to have_checked_field('Restrict global search to authenticated users only', with: 1)
|
||||
expect(result[2]).to have_checked_field('Show issues in global search results', with: 1)
|
||||
expect(result[3]).not_to have_checked_field('Show merge requests in global search results', with: 1)
|
||||
expect(result[4]).to have_checked_field('Show snippets in global search results', with: 1)
|
||||
expect(result[5]).not_to have_checked_field('Show users in global search results', with: 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationHelper, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationHelper, feature_category: :organization do
|
||||
include Devise::Test::ControllerHelpers
|
||||
|
||||
let_it_be(:user) { build_stubbed(:user, organization_groups_projects_sort: 'name_asc') }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe API::Entities::Organizations::Organization, feature_category: :cell do
|
||||
RSpec.describe API::Entities::Organizations::Organization, feature_category: :organization do
|
||||
let(:avatar_url) { 'https://example.com/uploads/-/system/organizations/organization_detail/avatar/1/avatar.png' }
|
||||
let(:organization) { build_stubbed(:organization) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationOwnersAgain, schema: 20231220225325, feature_category: :cell do
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationOwnersAgain, schema: 20231220225325, feature_category: :organization do
|
||||
let(:organization_users) { table(:organization_users) }
|
||||
let(:users) { table(:users) }
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ require 'spec_helper'
|
|||
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationUsers,
|
||||
schema: 20240213210124,
|
||||
feature_category: :cell do
|
||||
feature_category: :organization do
|
||||
let(:organization_users) { table(:organization_users) }
|
||||
let(:users) { table(:users) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyJob, migration: :gitlab_ci, feature_category: :cell do
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyJob, migration: :gitlab_ci, feature_category: :organization do
|
||||
let(:example_job_class) do
|
||||
Class.new(described_class) do
|
||||
operation_name :backfill_test_batch_table_project_id
|
||||
feature_category :cell
|
||||
feature_category :organization
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyPartitionJob, migration: :gitlab_ci, feature_category: :cell do
|
||||
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyPartitionJob, migration: :gitlab_ci, feature_category: :organization do
|
||||
let(:example_job_class) do
|
||||
Class.new(described_class) do
|
||||
operation_name :backfill_test_batch_table_project_id
|
||||
feature_category :cell
|
||||
feature_category :organization
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Current::Organization, feature_category: :cell do
|
||||
RSpec.describe Gitlab::Current::Organization, feature_category: :organization do
|
||||
let_it_be(:other_organization) { create(:organization) }
|
||||
let_it_be(:organization) { create(:organization, name: 'Current Organization') }
|
||||
let_it_be(:default_organization) { create(:organization, :default) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe 'new tables missing sharding_key', feature_category: :cell do
|
||||
RSpec.describe 'new tables missing sharding_key', feature_category: :organization do
|
||||
include ShardingKeySpecHelpers
|
||||
|
||||
# Specific tables can be temporarily exempt from this requirement. You must add an issue link in a comment next to
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::DatabaseImporters::DefaultOrganizationImporter, feature_category: :cell do
|
||||
RSpec.describe Gitlab::DatabaseImporters::DefaultOrganizationImporter, feature_category: :organization do
|
||||
describe '#create_default_organization' do
|
||||
let(:default_id) { Organizations::Organization::DEFAULT_ORGANIZATION_ID }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Organizations::FallbackOrganizationTracker, :request_store, feature_category: :cell do
|
||||
RSpec.describe Gitlab::Organizations::FallbackOrganizationTracker, :request_store, feature_category: :organization do
|
||||
shared_examples 'tracker that is enabled' do
|
||||
before do
|
||||
described_class.enable
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe QueueBackfillDefaultOrganizationUsers, feature_category: :cell do
|
||||
RSpec.describe QueueBackfillDefaultOrganizationUsers, feature_category: :organization do
|
||||
let!(:batched_migration) { described_class::MIGRATION }
|
||||
|
||||
it 'schedules a new batched migration' do
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe SetDefaultOrganizationVisibilityToPublic, feature_category: :cell do
|
||||
RSpec.describe SetDefaultOrganizationVisibilityToPublic, feature_category: :organization do
|
||||
let(:organizations) { table(:organizations) }
|
||||
let(:default_organization) do
|
||||
organizations.create!(
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe FixInconsistentOrganizationId, migration: :gitlab_main, feature_category: :cell do
|
||||
RSpec.describe FixInconsistentOrganizationId, migration: :gitlab_main, feature_category: :organization do
|
||||
let(:organization_2) { table(:organizations).create!(path: 'organization_2') }
|
||||
let(:organization_3) { table(:organizations).create!(path: 'organization_3') }
|
||||
let(:organization_4) { table(:organizations).create!(path: 'organization_4') }
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe UpdateNamespacesOrganizationId, migration: :gitlab_main, feature_category: :cell do
|
||||
RSpec.describe UpdateNamespacesOrganizationId, migration: :gitlab_main, feature_category: :organization do
|
||||
let(:namespaces) { table(:namespaces) }
|
||||
|
||||
let!(:group_with_organization) { namespaces.create!(name: 'my_org', path: 'my-org-1', organization_id: 10) }
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe UpdateImportFailuresOrganizationId, migration: :gitlab_main, feature_category: :cell do
|
||||
RSpec.describe UpdateImportFailuresOrganizationId, migration: :gitlab_main, feature_category: :organization do
|
||||
let(:import_failures) { table(:import_failures) }
|
||||
let(:projects) { table(:projects) }
|
||||
let(:organizations) { table(:organizations) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Members::Enumerable, feature_category: :cell do
|
||||
RSpec.describe Members::Enumerable, feature_category: :groups_and_projects do
|
||||
using RSpec::Parameterized::TableSyntax
|
||||
|
||||
before_all do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Current, feature_category: :cell do
|
||||
RSpec.describe Current, feature_category: :organization do
|
||||
let_it_be(:current_organization) { create(:organization) }
|
||||
|
||||
after do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe GroupMember, feature_category: :cell do
|
||||
RSpec.describe GroupMember, feature_category: :groups_and_projects do
|
||||
describe 'default values' do
|
||||
subject(:goup_member) { build(:group_member) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationDetail, type: :model, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationDetail, type: :model, feature_category: :organization do
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:organization).inverse_of(:organization_detail) }
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationSetting, type: :model, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationSetting, type: :model, feature_category: :organization do
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
let_it_be(:organization_setting) { create(:organization_setting, organization: organization) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::Organization, type: :model, feature_category: :cell do
|
||||
RSpec.describe Organizations::Organization, type: :model, feature_category: :organization do
|
||||
let_it_be_with_refind(:organization) { create(:organization) }
|
||||
|
||||
describe 'associations' do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationUserAlias, type: :model, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationUserAlias, type: :model, feature_category: :organization do
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:organization).inverse_of(:organization_user_aliases).required }
|
||||
it { is_expected.to belong_to(:user).inverse_of(:organization_user_aliases).required }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationUser, type: :model, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationUser, type: :model, feature_category: :organization do
|
||||
using RSpec::Parameterized::TableSyntax
|
||||
|
||||
describe 'associations' do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationPolicy, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationPolicy, feature_category: :organization do
|
||||
let_it_be_with_refind(:private_organization) { create(:organization, :private) }
|
||||
let_it_be_with_refind(:organization) { private_organization }
|
||||
let_it_be(:public_organization) { create(:organization, :public) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationUserPolicy, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationUserPolicy, feature_category: :organization do
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
let_it_be_with_refind(:current_user) { create :user }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Admin::OrganizationsController, type: :request, feature_category: :cell do
|
||||
RSpec.describe Admin::OrganizationsController, type: :request, feature_category: :organization do
|
||||
describe 'GET #index' do
|
||||
subject(:gitlab_request) { get admin_organizations_path }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Mutations::Organizations::Create, feature_category: :cell do
|
||||
RSpec.describe Mutations::Organizations::Create, feature_category: :organization do
|
||||
include GraphqlHelpers
|
||||
include WorkhorseHelpers
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Mutations::Organizations::OrganizationUsers::Update, feature_category: :cell do
|
||||
RSpec.describe Mutations::Organizations::OrganizationUsers::Update, feature_category: :organization do
|
||||
include GraphqlHelpers
|
||||
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Mutations::Organizations::Update, feature_category: :cell do
|
||||
RSpec.describe Mutations::Organizations::Update, feature_category: :organization do
|
||||
include GraphqlHelpers
|
||||
include WorkhorseHelpers
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe 'getting organization information', feature_category: :cell do
|
||||
RSpec.describe 'getting organization information', feature_category: :organization do
|
||||
include GraphqlHelpers
|
||||
using RSpec::Parameterized::TableSyntax
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe 'getting organizations information', feature_category: :cell do
|
||||
RSpec.describe 'getting organizations information', feature_category: :organization do
|
||||
include GraphqlHelpers
|
||||
|
||||
let_it_be(:user) { create(:user) }
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ RSpec.describe Admin::GroupsController, "routing" do
|
|||
end
|
||||
end
|
||||
|
||||
RSpec.describe Admin::OrganizationsController, "routing", feature_category: :cell do
|
||||
RSpec.describe Admin::OrganizationsController, "routing", feature_category: :organization do
|
||||
it "to #index" do
|
||||
expect(get("/admin/organizations")).to route_to('admin/organizations#index')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::GroupsController, :routing, feature_category: :cell do
|
||||
RSpec.describe Organizations::GroupsController, :routing, feature_category: :organization do
|
||||
let_it_be(:organization) { build(:organization) }
|
||||
let_it_be(:group) { build(:group, organization: organization) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationsController, :routing, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationsController, :routing, feature_category: :organization do
|
||||
let_it_be(:organization) { build(:organization) }
|
||||
|
||||
it 'routes to #show' do
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::GroupsController, :routing, feature_category: :cell do
|
||||
RSpec.describe Organizations::GroupsController, :routing, feature_category: :organization do
|
||||
let_it_be(:organization) { build(:organization) }
|
||||
let_it_be(:project) { create(:project, organization: organization) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::SettingsController, :routing, feature_category: :cell do
|
||||
RSpec.describe Organizations::SettingsController, :routing, feature_category: :organization do
|
||||
let_it_be(:organization) { build(:organization) }
|
||||
|
||||
it 'routes to settings#general' do
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ require 'rubocop_spec_helper'
|
|||
require 'rspec-parameterized'
|
||||
require_relative '../../../../rubocop/cop/gitlab/avoid_current_organization'
|
||||
|
||||
RSpec.describe RuboCop::Cop::Gitlab::AvoidCurrentOrganization, feature_category: :cell do
|
||||
RSpec.describe RuboCop::Cop::Gitlab::AvoidCurrentOrganization, feature_category: :organization do
|
||||
describe 'bad examples' do
|
||||
shared_examples 'reference offense' do
|
||||
it 'registers an offense' do
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
|
|||
.and_return(false)
|
||||
|
||||
expect(service).to receive(:close_issue)
|
||||
.with(external_issue, closed_via: nil, notifications: true, system_note: true)
|
||||
.with(external_issue, closed_via: nil, notifications: true, system_note: true, status: nil)
|
||||
|
||||
service.execute(external_issue)
|
||||
end
|
||||
|
|
@ -65,7 +65,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
|
|||
.and_return(true)
|
||||
|
||||
expect(service).to receive(:close_issue)
|
||||
.with(issue, closed_via: nil, notifications: true, system_note: true)
|
||||
.with(issue, closed_via: nil, notifications: true, system_note: true, status: nil)
|
||||
|
||||
service.execute(issue)
|
||||
end
|
||||
|
|
@ -261,7 +261,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
|
|||
|
||||
it 'verifies the number of queries' do
|
||||
recorded = ActiveRecord::QueryRecorder.new { close_issue }
|
||||
expected_queries = 33
|
||||
expected_queries = 36
|
||||
|
||||
expect(recorded.count).to be <= expected_queries
|
||||
expect(recorded.cached_count).to eq(0)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::CreateService, feature_category: :cell do
|
||||
RSpec.describe Organizations::CreateService, feature_category: :organization do
|
||||
describe '#execute' do
|
||||
let_it_be(:user) { create(:user) }
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::OrganizationUsers::UpdateService, feature_category: :cell do
|
||||
RSpec.describe Organizations::OrganizationUsers::UpdateService, feature_category: :organization do
|
||||
describe '#execute' do
|
||||
let_it_be(:organization) { create(:organization) }
|
||||
let_it_be_with_reload(:organization_user) { create(:organization_user, organization: organization) }
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Organizations::UpdateService, feature_category: :cell do
|
||||
RSpec.describe Organizations::UpdateService, feature_category: :organization do
|
||||
describe '#execute' do
|
||||
let_it_be(:user) { create(:user) }
|
||||
let_it_be_with_reload(:organization) { create(:organization) }
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue