Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
1e4a2eca1f
commit
4148df7b73
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Admin::ClustersController < Clusters::ClustersController
|
||||
class Admin::ClustersController < ::Clusters::ClustersController
|
||||
include EnforcesAdminAuthentication
|
||||
before_action :ensure_feature_enabled!
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ class Clusters::BaseController < ApplicationController
|
|||
include RoutableActions
|
||||
|
||||
skip_before_action :authenticate_user!
|
||||
before_action :clusterable
|
||||
before_action :authorize_admin_cluster!, except: [:show, :index, :new, :authorize_aws_role, :update]
|
||||
|
||||
helper_method :clusterable
|
||||
|
|
@ -41,6 +42,11 @@ class Clusters::BaseController < ApplicationController
|
|||
access_denied! unless can?(current_user, :read_prometheus, clusterable)
|
||||
end
|
||||
|
||||
# For Group/Clusters and Project/Clusters, the clusterable object (group or project)
|
||||
# is fetched through `find_routable!`, which calls a `render_404` if the user does not have access to the object
|
||||
# The `clusterable` method will need to be in its own before_action call before the `authorize_*` calls
|
||||
# so that the call stack will not proceed to the `authorize_*` calls
|
||||
# and instead just render a not found page after the `clusterable` call
|
||||
def clusterable
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Clusters::ClustersController < Clusters::BaseController
|
||||
class Clusters::ClustersController < ::Clusters::BaseController
|
||||
include RoutableActions
|
||||
|
||||
before_action :cluster, only: [:cluster_status, :show, :update, :destroy, :clear_cache]
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Groups::ClustersController < Clusters::ClustersController
|
||||
class Groups::ClustersController < ::Clusters::ClustersController
|
||||
include ControllerWithCrossProjectAccessCheck
|
||||
|
||||
before_action :ensure_feature_enabled!
|
||||
prepend_before_action :group
|
||||
requires_cross_project_access
|
||||
|
||||
layout 'group'
|
||||
|
|
@ -12,7 +11,7 @@ class Groups::ClustersController < Clusters::ClustersController
|
|||
private
|
||||
|
||||
def clusterable
|
||||
@clusterable ||= ClusterablePresenter.fabricate(group, current_user: current_user)
|
||||
@clusterable ||= group && ClusterablePresenter.fabricate(group, current_user: current_user)
|
||||
end
|
||||
|
||||
def group
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Projects::ClustersController < Clusters::ClustersController
|
||||
prepend_before_action :project
|
||||
class Projects::ClustersController < ::Clusters::ClustersController
|
||||
before_action :repository
|
||||
|
||||
before_action do
|
||||
|
|
@ -13,7 +12,7 @@ class Projects::ClustersController < Clusters::ClustersController
|
|||
private
|
||||
|
||||
def clusterable
|
||||
@clusterable ||= ClusterablePresenter.fabricate(project, current_user: current_user)
|
||||
@clusterable ||= project && ClusterablePresenter.fabricate(project, current_user: current_user)
|
||||
end
|
||||
|
||||
def project
|
||||
|
|
|
|||
|
|
@ -13,3 +13,6 @@ schema_inconsistencies:
|
|||
- type: missing_indexes
|
||||
object_name: index_users_for_auditors
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138110
|
||||
- type: missing_indexes
|
||||
object_name: index_users_on_id_and_last_activity_on_for_active_human_service
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139230
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddOptionsToElasticReindexingTasks < Gitlab::Database::Migration[2.2]
|
||||
milestone '16.7'
|
||||
|
||||
def change
|
||||
add_column :elastic_reindexing_tasks, :options, :jsonb, null: false, default: {}
|
||||
end
|
||||
end
|
||||
|
|
@ -16,7 +16,6 @@ class QueueDeleteInvalidProtectedBranchMergeAccessLevels < Gitlab::Database::Mig
|
|||
:protected_branch_merge_access_levels,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231016173129',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ class QueueDeleteInvalidProtectedBranchPushAccessLevels < Gitlab::Database::Migr
|
|||
:protected_branch_push_access_levels,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231016194927',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ class QueueDeleteInvalidProtectedTagCreateAccessLevels < Gitlab::Database::Migra
|
|||
:protected_tag_create_access_levels,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231016194943',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ class QueueBackfillPackagesTagsProjectId < Gitlab::Database::Migration[2.2]
|
|||
:packages_tags,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231030071209',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ class QueueBackfillMergeRequestDiffsProjectId < Gitlab::Database::Migration[2.2]
|
|||
:merge_request_diffs,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231114043522',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ class Requeue2BackfillHasRemediationsOfVulnerabilityReads < Gitlab::Database::Mi
|
|||
:vulnerability_reads,
|
||||
:vulnerability_id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231201204712',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class DropIndexUsersOnIdAndLastActivity < Gitlab::Database::Migration[2.2]
|
||||
milestone '16.7'
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
TABLE_NAME = :users
|
||||
INDEX_NAME = :index_users_on_id_and_last_activity_on_for_active_human_service
|
||||
|
||||
def up
|
||||
return unless should_run?
|
||||
|
||||
remove_concurrent_index_by_name TABLE_NAME, INDEX_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
return unless should_run?
|
||||
|
||||
add_concurrent_index :users, [:id, :last_activity_on],
|
||||
name: INDEX_NAME,
|
||||
where: "state = 'active' AND user_type IN (0, 4)"
|
||||
end
|
||||
|
||||
def should_run?
|
||||
Gitlab.com_except_jh?
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
4777e51867476bd6c7b2a259866cf3453ef784f409ace94efd799de959288748
|
||||
|
|
@ -0,0 +1 @@
|
|||
a4c1bb4cdab6a0e9723849ec7dadf9fc8286cbd05c0b160c513fdbf727f6e0b6
|
||||
|
|
@ -16345,6 +16345,7 @@ CREATE TABLE elastic_reindexing_tasks (
|
|||
max_slices_running smallint DEFAULT 60 NOT NULL,
|
||||
slice_multiplier smallint DEFAULT 2 NOT NULL,
|
||||
targets text[],
|
||||
options jsonb DEFAULT '{}'::jsonb NOT NULL,
|
||||
CONSTRAINT check_7f64acda8e CHECK ((char_length(error_message) <= 255))
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -672,49 +672,37 @@ The following process has been configured to make dependencies more evident whil
|
|||
Example:
|
||||
|
||||
```ruby
|
||||
class QueueBackfillRoutesNamespaceId < Gitlab::Database::Migration[2.1]
|
||||
MIGRATION = 'BackfillRouteNamespaceId'
|
||||
....
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
# db/post_migrate/20231113120650_queue_backfill_routes_namespace_id.rb
|
||||
class QueueBackfillRoutesNamespaceId < Gitlab::Database::Migration[2.1]
|
||||
MIGRATION = 'BackfillRouteNamespaceId'
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
...
|
||||
queued_migration_version: '20231113120650',
|
||||
...
|
||||
)
|
||||
end
|
||||
...
|
||||
end
|
||||
```
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
...
|
||||
...
|
||||
|
||||
```ruby
|
||||
class NewQueueBackfillRoutesNamespaceId < Gitlab::Database::Migration[2.1]
|
||||
MIGRATION = 'NewBackfillRouteNamespaceId'
|
||||
DELAY_INTERVAL = 2.minutes
|
||||
BATCH_SIZE = 1000
|
||||
SUB_BATCH_SIZE = 100
|
||||
DEPENDENT_BATCHED_BACKGROUND_MIGRATIONS = ["20231113120650"]
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
...
|
||||
)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
```ruby
|
||||
# This depends on the finalization of QueueBackfillRoutesNamespaceId BBM
|
||||
class AddNotNullToRoutesNamespaceId < Gitlab::Database::Migration[2.1]
|
||||
DEPENDENT_BATCHED_BACKGROUND_MIGRATIONS = ["20231113120650"]
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:routes,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20241213120651',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
def up
|
||||
add_not_null_constraint :routes, :namespace_id
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :routes, :id, [])
|
||||
end
|
||||
end
|
||||
```
|
||||
def down
|
||||
remove_not_null_constraint :routes, :namespace_id
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### Notes
|
||||
|
||||
|
|
@ -1062,7 +1050,6 @@ background migration.
|
|||
:routes,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231113120650',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -242,8 +242,7 @@ scheduled after the background migration has completed, which could be several r
|
|||
MIGRATION,
|
||||
:merge_request_diffs,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '20231114043522'
|
||||
job_interval: DELAY_INTERVAL
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -80,6 +80,33 @@ There is a [known bug](https://gitlab.com/gitlab-org/gitlab/-/issues/341571)
|
|||
where the Jira integration sometimes does not work for a project that has been imported.
|
||||
As a workaround, disable the integration and then re-enable it.
|
||||
|
||||
### `certificate verify failed` when testing or using the Jira issue integration
|
||||
|
||||
When testing the Jira integration settings, you might see the following error:
|
||||
|
||||
```plaintext
|
||||
Connection failed. Check your integration settings. SSL_connect returned=1 errno=0 peeraddr=<jira.example.com> state=error: certificate verify failed (unable to get local issuer certificate)
|
||||
```
|
||||
|
||||
This error might also appear in the [`integrations_json.log`](../../administration/logs/index.md#integrations_jsonlog) file:
|
||||
|
||||
```json
|
||||
{
|
||||
"severity":"ERROR",
|
||||
"integration_class":"Integrations::Jira",
|
||||
"message":"Error sending message",
|
||||
"exception.class":"OpenSSL::SSL::SSLError",
|
||||
"exception.message":"SSL_connect returned=1 errno=0 peeraddr=x.x.x.x:443 state=error: certificate verify failed (unable to get local issuer certificate)",
|
||||
}
|
||||
```
|
||||
|
||||
The error occurs because the Jira certificate isn't publicly trusted, or the certificate chain is incomplete. Until this is resolved, GitLab won't connect to Jira.
|
||||
|
||||
There can be other variations of this error message that are listed on the [common SSL errors](https://docs.gitlab.com/omnibus/settings/ssl/ssl_troubleshooting.html#common-ssl-errors) page.
|
||||
|
||||
To resolve this, refer to the
|
||||
[common SSL errors](https://docs.gitlab.com/omnibus/settings/ssl/ssl_troubleshooting.html#common-ssl-errors) page.
|
||||
|
||||
### Change all Jira projects to instance-level or group-level values
|
||||
|
||||
WARNING:
|
||||
|
|
|
|||
|
|
@ -6,18 +6,39 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
# Merge conflicts **(FREE ALL)**
|
||||
|
||||
_Merge conflicts_ happen when the two branches in a merge request (the source and target) each have different
|
||||
Merge conflicts happen when the two branches in a merge request (the source and target) each have different
|
||||
changes, and you must decide which change to accept. In a merge request, Git compares
|
||||
the two versions of the files line by line. In most cases, GitLab can merge changes
|
||||
together. However, if two branches both change the same lines, GitLab blocks the merge,
|
||||
and you must choose which change you want to keep.
|
||||
and you must choose which change you want to keep:
|
||||
|
||||
A merge request cannot merge until you either:
|
||||

|
||||
|
||||
A merge request with conflicts cannot merge until you either:
|
||||
|
||||
- Create a merge commit.
|
||||
- Resolve the conflict through a rebase.
|
||||
|
||||

|
||||
GitLab resolves conflicts by creating a merge commit in the source branch, but
|
||||
does not merge it into the target branch. You can then review and test the
|
||||
merge commit. Verify it contains no unintended changes and doesn't break your build.
|
||||
|
||||
## Understand the conflict block
|
||||
|
||||
When Git detects a conflict that requires a decision on your part, it marks the
|
||||
beginning and end of the conflict block with conflict markers:
|
||||
|
||||
- `<<<<<<< HEAD` marks the beginning of the conflict block.
|
||||
- Your changes are shown.
|
||||
- `=======` marks the end of your changes.
|
||||
- The latest changes in the target branch are shown.
|
||||
- `>>>>>>>` marks the end of the conflict.
|
||||
|
||||
When you resolve a conflict, you delete:
|
||||
|
||||
1. The version of the conflicted lines you don't want to keep.
|
||||
1. The three conflict markers: the beginning, the end, and the `=======` line between
|
||||
the two versions.
|
||||
|
||||
## Conflicts you can resolve in the user interface
|
||||
|
||||
|
|
@ -38,23 +59,23 @@ criteria, you must resolve the conflict manually.
|
|||
GitLab does not detect conflicts when both branches rename a file to different names.
|
||||
For example, these changes don't create a conflict:
|
||||
|
||||
1. On branch `a`, doing `git mv example.txt example1.txt`
|
||||
1. On branch `b`, doing `git mv example1.txt example3.txt`.
|
||||
1. Branch `one` renames `example.txt` to `example1.txt`
|
||||
1. Branch `two` renames `example.txt` to `example_old.txt`.
|
||||
|
||||
When these branches merge, both `example1.txt` and `example3.txt` are present.
|
||||
When these branches merge, both `example1.txt` and `example_old` are present.
|
||||
|
||||
## Methods of resolving conflicts
|
||||
|
||||
GitLab shows [conflicts available for resolution](#conflicts-you-can-resolve-in-the-user-interface)
|
||||
in the user interface, and you can also resolve conflicts locally through the command line:
|
||||
|
||||
- [Interactive mode](#resolve-conflicts-in-interactive-mode): UI method best for
|
||||
- **Interactive mode**: UI method best for
|
||||
conflicts that only require you to select which version of a line to keep, without edits.
|
||||
- [Inline editor](#resolve-conflicts-in-the-inline-editor): UI method best for more complex conflicts that require you to
|
||||
- **Inline editor**: UI method best for more complex conflicts that require you to
|
||||
edit lines and manually blend changes together.
|
||||
- [Command line](#resolve-conflicts-from-the-command-line): provides complete control over the most complex conflicts.
|
||||
- **Command line**: provides complete control over the most complex conflicts.
|
||||
|
||||
## Resolve conflicts in interactive mode
|
||||
### In interactive mode
|
||||
|
||||
To resolve less-complex conflicts from the GitLab user interface:
|
||||
|
||||
|
|
@ -62,14 +83,15 @@ To resolve less-complex conflicts from the GitLab user interface:
|
|||
1. Select **Code > Merge requests** and find the merge request.
|
||||
1. Select **Overview**, and scroll to the merge request reports section.
|
||||
1. Find the merge conflicts message, and select **Resolve conflicts**.
|
||||
GitLab shows a list of files with merge conflicts. The conflicts are
|
||||
GitLab shows a list of files with merge conflicts. The lines that conflict are
|
||||
highlighted:
|
||||
|
||||

|
||||

|
||||
|
||||
1. For each conflict, select **Use ours** or **Use theirs** to mark the version
|
||||
of the conflicted lines you want to keep. This decision is known as
|
||||
"resolving the conflict."
|
||||
1. Enter a **Commit message**.
|
||||
1. When you've resolved all of the conflicts, enter a **Commit message**.
|
||||
1. Select **Commit to source branch**.
|
||||
|
||||
Resolving conflicts merges the target branch of the merge request into the
|
||||
|
|
@ -77,27 +99,35 @@ source branch, using the version of the text you chose. If the source branch is
|
|||
`feature` and the target branch is `main`, these actions are similar to running
|
||||
`git switch feature; git merge main` locally.
|
||||
|
||||
## Resolve conflicts in the inline editor
|
||||
### In the inline editor
|
||||
|
||||
Some merge conflicts are more complex, requiring you to manually modify lines to
|
||||
resolve their conflicts. Use the merge conflict resolution editor to resolve complex
|
||||
conflicts in the GitLab interface:
|
||||
Some merge conflicts are more complex, and you must manually modify lines to
|
||||
resolve their conflicts. The merge conflict resolution editor helps you resolve
|
||||
these complex conflicts in the GitLab interface:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your project.
|
||||
1. Select **Code > Merge requests** and find the merge request.
|
||||
1. Select **Merge requests** and find the merge request.
|
||||
1. Select **Overview**, and scroll to the merge request reports section.
|
||||
1. Find the merge conflicts message, and select **Resolve conflicts**.
|
||||
GitLab shows a list of files with merge conflicts.
|
||||
1. Select **Edit inline** to open the editor:
|
||||

|
||||
1. Find the file to edit manually, and scroll to the conflict block.
|
||||
1. In the header for that file, select **Edit inline** to open the editor. In this
|
||||
example, the conflict block begins at line 1350 and ends at line 1356:
|
||||
|
||||

|
||||
|
||||
1. After you resolve the conflict, enter a **Commit message**.
|
||||
1. Select **Commit to source branch**.
|
||||
|
||||
## Resolve conflicts from the command line
|
||||
### From the command line
|
||||
|
||||
While most conflicts can be resolved through the GitLab user interface, some are too complex.
|
||||
Complex conflicts are best fixed locally, from the command line, to give you the
|
||||
most control over each change:
|
||||
most control over each change.
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must have permission to force push to branches.
|
||||
|
||||
1. Open the terminal and check out your feature branch. For example, `my-feature-branch`:
|
||||
|
||||
|
|
@ -114,12 +144,7 @@ most control over each change:
|
|||
```
|
||||
|
||||
1. Open the conflicting file in your preferred code editor.
|
||||
1. Find the conflict block:
|
||||
- It begins with the marker: `<<<<<<< HEAD`.
|
||||
- Next, it displays your changes.
|
||||
- The marker `=======` indicates the end of your changes.
|
||||
- Next, it displays the latest changes in the target branch.
|
||||
- The marker `>>>>>>>` indicates the end of the conflict.
|
||||
1. Find the conflict block.
|
||||
1. Edit the file:
|
||||
1. Choose which version (before or after `=======`) you want to keep.
|
||||
1. Delete the version you don't want to keep.
|
||||
|
|
@ -153,25 +178,7 @@ most control over each change:
|
|||
1. [Force-push](../../../topics/git/git_rebase.md#force-pushing) the changes to your
|
||||
remote branch.
|
||||
|
||||
## Merge commit strategy
|
||||
|
||||
GitLab resolves conflicts by creating a merge commit in the source branch, but
|
||||
does not merge it into the target branch. You can then review and test the
|
||||
merge commit. Verify it contains no unintended changes and doesn't break your build.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Introduction to Git rebase and force-push](../../../topics/git/git_rebase.md)
|
||||
- [Git applications for visualizing the Git workflow](https://git-scm.com/downloads/guis)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that might go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 71 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 49 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.7 KiB |
|
|
@ -19,7 +19,6 @@ class <%= migration_class_name %> < Gitlab::Database::Migration[<%= Gitlab::Data
|
|||
:<%= table_name %>,
|
||||
:<%= column_name %>,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '<%= migration_number %>',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -38,10 +38,6 @@ module Gitlab
|
|||
# batch_class_name - The name of the class that will be called to find the range of each next batch
|
||||
# batch_size - The maximum number of rows per job
|
||||
# sub_batch_size - The maximum number of rows processed per "iteration" within the job
|
||||
# queued_migration_version - Version of the migration that queues the BBM, this is used to establish dependecies
|
||||
#
|
||||
# queued_migration_version is made optional temporarily to allow prior migrations to not fail,
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/426417 will make it mandatory.
|
||||
#
|
||||
# *Returns the created BatchedMigration record*
|
||||
#
|
||||
|
|
@ -67,7 +63,6 @@ module Gitlab
|
|||
batch_column_name,
|
||||
*job_arguments,
|
||||
job_interval:,
|
||||
queued_migration_version: nil,
|
||||
batch_min_value: BATCH_MIN_VALUE,
|
||||
batch_max_value: nil,
|
||||
batch_class_name: BATCH_CLASS_NAME,
|
||||
|
|
@ -80,6 +75,8 @@ module Gitlab
|
|||
Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas.require_dml_mode!
|
||||
|
||||
gitlab_schema ||= gitlab_schema_from_context
|
||||
# Version of the migration that queued the BBM, this is used to establish dependencies
|
||||
queued_migration_version = version
|
||||
|
||||
Gitlab::Database::BackgroundMigration::BatchedMigration.reset_column_information
|
||||
|
||||
|
|
@ -120,7 +117,7 @@ module Gitlab
|
|||
"(given #{job_arguments.count}, expected #{migration.job_class.job_arguments_count})"
|
||||
end
|
||||
|
||||
assign_attribtues_safely(
|
||||
assign_attributes_safely(
|
||||
migration,
|
||||
max_batch_size,
|
||||
batch_table_name,
|
||||
|
|
@ -246,7 +243,7 @@ module Gitlab
|
|||
# about columns introduced later on because this model is not
|
||||
# isolated in migrations, which is why we need to check for existence
|
||||
# of these columns first.
|
||||
def assign_attribtues_safely(migration, max_batch_size, batch_table_name, gitlab_schema, queued_migration_version)
|
||||
def assign_attributes_safely(migration, max_batch_size, batch_table_name, gitlab_schema, queued_migration_version)
|
||||
# We keep track of the estimated number of tuples in 'total_tuple_count' to reason later
|
||||
# about the overall progress of a migration.
|
||||
safe_attributes_value = {
|
||||
|
|
|
|||
|
|
@ -121,5 +121,24 @@ RSpec.describe 'User Cluster', :js, feature_category: :environment_management do
|
|||
expect(page).to have_content('Kubernetes cluster integration was successfully removed.')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when signed in user is an admin in admin_mode' do
|
||||
let(:admin) { create(:admin) }
|
||||
|
||||
before do
|
||||
# signs out the user with `maintainer` role in the project
|
||||
gitlab_sign_out
|
||||
|
||||
gitlab_sign_in(admin)
|
||||
gitlab_enable_admin_mode_sign_in(admin)
|
||||
|
||||
visit group_clusters_path(group)
|
||||
end
|
||||
|
||||
it 'can visit the clusters index page', :aggregate_failures do
|
||||
expect(page).to have_title("Kubernetes Clusters · #{group.name} · GitLab")
|
||||
expect(page).to have_content('Connect a cluster')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -111,4 +111,23 @@ RSpec.describe 'User Cluster', :js, feature_category: :deployment_management do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when signed in user is an admin in admin_mode' do
|
||||
let(:admin) { create(:admin) }
|
||||
|
||||
before do
|
||||
# signs out the user with `maintainer` role in the project
|
||||
gitlab_sign_out
|
||||
|
||||
gitlab_sign_in(admin)
|
||||
gitlab_enable_admin_mode_sign_in(admin)
|
||||
|
||||
visit project_clusters_path(project)
|
||||
end
|
||||
|
||||
it 'can visit the clusters index page', :aggregate_failures do
|
||||
expect(page).to have_title("Kubernetes Clusters · #{project.full_name} · GitLab")
|
||||
expect(page).to have_content('Connect a cluster')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ class QueueMyBatchedMigration < Gitlab::Database::Migration[2.2]
|
|||
:projects,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
queued_migration_version: '<migration_version>',
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -71,8 +71,11 @@ RSpec.describe Gitlab::Database::Migrations::BatchedBackgroundMigrationHelpers,
|
|||
end
|
||||
|
||||
context "when the migration doesn't exist already" do
|
||||
let(:version) { '20231204101122' }
|
||||
|
||||
before do
|
||||
allow(Gitlab::Database::PgClass).to receive(:for_table).with(:projects).and_return(pgclass_info)
|
||||
allow(migration).to receive(:version).and_return(version)
|
||||
end
|
||||
|
||||
subject(:enqueue_batched_background_migration) do
|
||||
|
|
@ -81,7 +84,6 @@ RSpec.describe Gitlab::Database::Migrations::BatchedBackgroundMigrationHelpers,
|
|||
:projects,
|
||||
:id,
|
||||
job_interval: 5.minutes,
|
||||
queued_migration_version: format("%.14d", 123),
|
||||
batch_min_value: 5,
|
||||
batch_max_value: 1000,
|
||||
batch_class_name: 'MyBatchClass',
|
||||
|
|
@ -115,7 +117,7 @@ RSpec.describe Gitlab::Database::Migrations::BatchedBackgroundMigrationHelpers,
|
|||
status_name: :active,
|
||||
total_tuple_count: pgclass_info.cardinality_estimate,
|
||||
gitlab_schema: 'gitlab_ci',
|
||||
queued_migration_version: format("%.14d", 123)
|
||||
queued_migration_version: version
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue