Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
41fa0ffbf2
commit
c487f26d13
|
|
@ -382,6 +382,7 @@ jest predictive:
|
|||
- "detect-tests"
|
||||
script:
|
||||
- if [[ -s "$RSPEC_CHANGED_FILES_PATH" ]] || [[ -s "$RSPEC_MATCHING_JS_FILES_PATH" ]]; then run_timed_command "yarn jest:ci:predictive-without-fixtures"; fi
|
||||
parallel: 4
|
||||
|
||||
jest-with-fixtures predictive:
|
||||
extends:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@ export default {
|
|||
this.$emit('hidden', ...args);
|
||||
this.menuVisible = false;
|
||||
},
|
||||
strategy: 'fixed',
|
||||
popperOptions: {
|
||||
strategy: 'fixed',
|
||||
},
|
||||
maxWidth: '400px',
|
||||
},
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -701,7 +701,7 @@ export default {
|
|||
:class="{ 'is-modal': isModal }"
|
||||
>
|
||||
<work-item-attributes-wrapper
|
||||
:class="{ 'gl-top-3': isDrawer }"
|
||||
:class="{ 'gl-top-11': isDrawer }"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item="workItem"
|
||||
:group-path="groupPath"
|
||||
|
|
|
|||
|
|
@ -88,8 +88,9 @@ export default {
|
|||
<gl-drawer
|
||||
:open="open"
|
||||
data-testid="work-item-drawer"
|
||||
header-sticky
|
||||
header-height="calc(var(--top-bar-height) + var(--performance-bar-height))"
|
||||
class="gl-w-full gl-leading-reset sm:gl-w-4/10"
|
||||
class="gl-w-full gl-leading-reset lg:gl-w-[480px] xl:gl-w-[768px] min-[1440px]:gl-w-[912px]"
|
||||
@close="$emit('close')"
|
||||
>
|
||||
<template #title>
|
||||
|
|
@ -107,7 +108,7 @@ export default {
|
|||
:modal-work-item-full-path="activeItemFullPath"
|
||||
:modal-is-group="modalIsGroup"
|
||||
is-drawer
|
||||
class="work-item-drawer !gl-pt-0"
|
||||
class="work-item-drawer !gl-pt-0 xl:!gl-px-6"
|
||||
@deleteWorkItem="deleteWorkItem"
|
||||
v-on="$listeners"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ export const FORM_TYPES = {
|
|||
|
||||
export const DEFAULT_PAGE_SIZE_NOTES = 30;
|
||||
export const DEFAULT_PAGE_SIZE_EMOJIS = 100;
|
||||
export const DEFAULT_PAGE_SIZE_CHILD_ITEMS = 20;
|
||||
export const DEFAULT_PAGE_SIZE_CHILD_ITEMS = 50;
|
||||
|
||||
export const WORK_ITEM_NOTES_SORT_ORDER_KEY = 'sort_direction_work_item';
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ $work-item-overview-gap-width: 2rem;
|
|||
}
|
||||
}
|
||||
|
||||
@include container-and-media("max-width: #{calc($breakpoint-md - 0.02px)}") {
|
||||
@include container-and-media("max-width: #{calc($breakpoint-md - 4rem - 0.02px)}") {
|
||||
.work-item-overview {
|
||||
display: block !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,11 @@ description: >-
|
|||
This migration deduplicates lfs_objects_projects by lfs_object_id, project_id and repository_type.
|
||||
After the migration is finalized, we need to add a unique index on all three columns to ensure
|
||||
data consistency since the unique validation already exists at the model level.
|
||||
|
||||
Originally introduced by https://gitlab.com/gitlab-org/gitlab/-/merge_requests/154323
|
||||
Re-enqueued because we found some duplicates were still being introduced
|
||||
feature_category: source_code_management
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/154323
|
||||
milestone: '17.3'
|
||||
queued_migration_version: 20240808125149
|
||||
finalize_after: '2024-08-02' # required upgrade stop due date
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164127
|
||||
milestone: '17.4'
|
||||
queued_migration_version: 20240827204855
|
||||
finalize_after: '2024-10-17' # required upgrade stop due date
|
||||
|
|
|
|||
|
|
@ -13,18 +13,12 @@ class QueueDeduplicateLfsObjectsProjects < Gitlab::Database::Migration[2.2]
|
|||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
# To be re-enqueued by db/post_migrate/20240827204855_reenqueue_deduplicate_lfs_objects_projects.rb
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:lfs_objects_projects,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
# no-op
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :lfs_objects_projects, :id, [])
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ReenqueueDeduplicateLfsObjectsProjects < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.4'
|
||||
|
||||
MIGRATION = 'DeduplicateLfsObjectsProjects'
|
||||
TABLE_NAME = :lfs_objects_projects
|
||||
DELAY_INTERVAL = 100
|
||||
BATCH_SIZE = 10_000
|
||||
SUB_BATCH_SIZE = 2_500
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
delete_batched_background_migration(MIGRATION, :lfs_objects_projects, :id, [])
|
||||
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:lfs_objects_projects,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :lfs_objects_projects, :id, [])
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
44b6b9fba52b6c7459db0787dbff61678c56c2fc3c51cfab4be32920450b2341
|
||||
|
|
@ -16,7 +16,7 @@ DETAILS:
|
|||
> - Feature flags `kas_user_access`, `kas_user_access_project`, and `expose_authorized_cluster_agents` [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125835) in GitLab 16.2.
|
||||
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/431746) to the environment details page in 16.10.
|
||||
|
||||
Use the Dashboard for Kubernetes to understand the status of your clusters with an intuitive visual interface.
|
||||
Use the dashboard for Kubernetes to understand the status of your clusters with an intuitive visual interface.
|
||||
The dashboard works with every connected Kubernetes cluster, whether you deployed them
|
||||
with CI/CD or GitOps.
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ add one when you create an environment.
|
|||
|
||||
Prerequisites:
|
||||
|
||||
- A GitLab agent for Kubernetes is [installed](../../user/clusters/agent/install/index.md) and [`user_access`](../../user/clusters/agent/user_access.md) for the environment's project or its parent group.
|
||||
- A GitLab agent for Kubernetes is [installed](../../user/clusters/agent/install/index.md) and [`user_access`](../../user/clusters/agent/user_access.md) is configured for the environment's project or its parent group.
|
||||
|
||||
::Tabs
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ Prerequisites:
|
|||
> - Kubernetes watch API integration [enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136831) in GitLab 16.7.
|
||||
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/427762) in GitLab 17.1. Feature flag `k8s_watch_api` removed.
|
||||
|
||||
View a dashboard to see the status of any connected clusters.
|
||||
View a dashboard to see the status of connected clusters.
|
||||
If the `k8s_watch_api` feature flag is enabled, the status of your
|
||||
Kubernetes resources and Flux reconciliation updates in real time.
|
||||
|
||||
|
|
@ -80,6 +80,8 @@ To view a configured dashboard:
|
|||
1. Select the environment associated with the agent for Kubernetes.
|
||||
1. Select the **Kubernetes overview** tab.
|
||||
|
||||
A list of pods is displayed. Select a pod to view its details.
|
||||
|
||||
### Flux sync status
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391581) in GitLab 16.3.
|
||||
|
|
@ -103,58 +105,39 @@ A dashboard displays one of the following status badges:
|
|||
| **Unknown** | The sync status of the deployment couldn't be retrieved. |
|
||||
| **Unavailable** | The `Kustomization` or `HelmRelease` resource couldn't be retrieved. |
|
||||
|
||||
## Trigger Flux reconciliation
|
||||
### Trigger Flux reconciliation
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/434248) in GitLab 17.3.
|
||||
|
||||
You can trigger the reconciliation of a Flux recourse (`Kustomization` or `HelmRelease`) manually from the Kubernetes dashboard.
|
||||
You can manually reconcile your deployment with its Flux resources.
|
||||
|
||||
To trigger reconciliation:
|
||||
To trigger a reconciliation:
|
||||
|
||||
1. From a dashboard, select the sync status badge of a Flux deployment.
|
||||
1. Select **Actions > Trigger reconciliation** (**{retry}**).
|
||||
1. On a dashboard, select the sync status badge of a Flux deployment.
|
||||
1. Select **Actions** (**{ellipsis_v}**) **> Trigger reconciliation** (**{retry}**).
|
||||
|
||||
## Delete a pod
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/467653) in GitLab 17.3.
|
||||
|
||||
You can delete a pod from the Kubernetes dashboard to restart a failed pod.
|
||||
|
||||
To delete a pod:
|
||||
|
||||
::Tabs
|
||||
|
||||
:::TabTitle From the pods list
|
||||
|
||||
- Select **Actions** (**{ellipsis_v}**), then **Delete pod**.
|
||||
|
||||
:::TabTitle From the pods details view
|
||||
|
||||
1. Select a pod from the pod list to view its details.
|
||||
1. Select **Actions > Delete pod** (**{remove}**).
|
||||
|
||||
::EndTabs
|
||||
|
||||
## View pod logs
|
||||
### View pod logs
|
||||
|
||||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/13793) in GitLab 17.2.
|
||||
|
||||
View pod logs when you want to quickly understand and troubleshoot issues across your environments from a configured dashboard. You can view logs for each container in a pod.
|
||||
|
||||
To view your pod logs:
|
||||
|
||||
::Tabs
|
||||
|
||||
:::TabTitle From the pods list
|
||||
|
||||
- Select **View logs**, then select the container you want to view logs for.
|
||||
|
||||
:::TabTitle From the pods details view
|
||||
You can also view pod logs from the pod details.
|
||||
|
||||
1. Select a pod from the pod list to view its details.
|
||||
1. Select the container you want to view logs for, then select **View logs**.
|
||||
### Delete a pod
|
||||
|
||||
::EndTabs
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/467653) in GitLab 17.3.
|
||||
|
||||
To restart a failed pod, delete it from the Kubernetes dashboard.
|
||||
|
||||
To delete a pod:
|
||||
|
||||
1. On the **Kubernetes overview** tab, find the pod you want to delete.
|
||||
1. Select **Actions** (**{ellipsis_v}**) **> Delete pod** (**{remove}**).
|
||||
|
||||
You can also delete a pod from the pod details.
|
||||
|
||||
## Detailed dashboard
|
||||
|
||||
|
|
@ -213,11 +196,9 @@ To view a detailed dashboard:
|
|||
| Jobs | `https://myinstance.gitlab.com/-/kubernetes/<agent_id>/jobs` |
|
||||
| CronJobs | `https://myinstance.gitlab.com/-/kubernetes/<agent_id>/cronJobs` |
|
||||
|
||||
The detailed dashboard is displayed.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
When working with the Dashboard for Kubernetes, you might encounter the following issues.
|
||||
When working with the dashboard for Kubernetes, you might encounter the following issues.
|
||||
|
||||
### User cannot list resource in API group
|
||||
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ considered equivalent to rebasing.
|
|||
|
||||
### Rebase without CI/CD pipeline
|
||||
|
||||
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/350262) in GitLab 15.3. Feature flag `rebase_without_ci_ui` removed.
|
||||
> - Changed to [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/350262) in GitLab 15.3. Feature flag `rebase_without_ci_ui` removed.
|
||||
|
||||
To rebase a merge request's branch without triggering a CI/CD pipeline, select
|
||||
**Rebase without pipeline** from the merge request reports section.
|
||||
|
|
|
|||
|
|
@ -97,8 +97,7 @@ module Gitlab
|
|||
return organization if organization
|
||||
|
||||
logger.info(message: 'Creating organization', **args)
|
||||
|
||||
ensure_success(::Organizations::CreateService.new(current_user: @user, params: args).execute[:organization])
|
||||
execute_service!(::Organizations::CreateService.new(current_user: @user, params: args), :organization)
|
||||
end
|
||||
|
||||
def create_groups_and_projects
|
||||
|
|
@ -182,7 +181,7 @@ module Gitlab
|
|||
def create_group(**args)
|
||||
logger.info(message: 'Creating group', **args)
|
||||
|
||||
ensure_success(::Groups::CreateService.new(@user, **args).execute[:group])
|
||||
execute_service!(::Groups::CreateService.new(@user, **args), :group)
|
||||
end
|
||||
|
||||
def ensure_project(name:, namespace_id:, **args)
|
||||
|
|
@ -198,7 +197,7 @@ module Gitlab
|
|||
def create_project(**args)
|
||||
logger.info(message: 'Creating project', **args)
|
||||
|
||||
ensure_success(::Projects::CreateService.new(@user, **args).execute)
|
||||
execute_service!(::Projects::CreateService.new(@user, **args))
|
||||
end
|
||||
|
||||
def register_record(record, records)
|
||||
|
|
@ -214,6 +213,17 @@ module Gitlab
|
|||
raise RuntimeError
|
||||
end
|
||||
|
||||
def execute_service!(service, payload_attr = nil)
|
||||
response = service.execute
|
||||
if response.is_a?(ServiceResponse) && response.error?
|
||||
logger.error(response.message)
|
||||
raise RuntimeError
|
||||
end
|
||||
|
||||
record = payload_attr ? response[payload_attr] : response
|
||||
ensure_success(record)
|
||||
end
|
||||
|
||||
def create_runner(name:, scope: nil, **args)
|
||||
name = generate_name(name)
|
||||
|
||||
|
|
|
|||
|
|
@ -20137,18 +20137,18 @@ msgstr ""
|
|||
msgid "DuoProTrial|Apply your GitLab Duo Pro trial to an existing group"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Chat"
|
||||
msgid "DuoProTrial|Chat within the IDE"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Code Explanation"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Code Refactoring"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Code completion and code generation with Code Suggestions"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Code explanation"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Code refactorization"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Congratulations, your free GitLab Duo Pro trial is activated and will expire on %{exp_date}. The new license might take a minute to show on the page. To give members access to new GitLab Duo Pro features, %{assign_link_start}assign them%{assign_link_end} to GitLab Duo Pro seats."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -20173,7 +20173,7 @@ msgstr ""
|
|||
msgid "DuoProTrial|Looking to do more with AI?"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Organizational controls"
|
||||
msgid "DuoProTrial|Organizational user controls"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Purchase now"
|
||||
|
|
@ -20188,7 +20188,7 @@ msgstr ""
|
|||
msgid "DuoProTrial|Start your free GitLab Duo Pro trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|Test generation"
|
||||
msgid "DuoProTrial|Test Generation"
|
||||
msgstr ""
|
||||
|
||||
msgid "DuoProTrial|To regain access to features like Code Suggestions and Chat, purchase the subscription add-on for GitLab Duo Pro."
|
||||
|
|
@ -55620,6 +55620,9 @@ msgstr ""
|
|||
msgid "This stage has one or more manual jobs that require confirmation before retrying. Do you want to proceed?"
|
||||
msgstr ""
|
||||
|
||||
msgid "This subscription is for"
|
||||
msgstr ""
|
||||
|
||||
msgid "This suggestion already matches its content."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,9 @@ describe('content_editor/components/bubble_menus/bubble_menu', () => {
|
|||
tippyOptions: expect.objectContaining({
|
||||
onHidden: expect.any(Function),
|
||||
onShow: expect.any(Function),
|
||||
strategy: 'fixed',
|
||||
popperOptions: {
|
||||
strategy: 'fixed',
|
||||
},
|
||||
maxWidth: '400px',
|
||||
...tippyOptions,
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -91,5 +91,17 @@ RSpec.describe ::Gitlab::Seeders::Ci::Runner::RunnerFleetSeeder, feature_categor
|
|||
expect { seed }.not_to change { Ci::Runner.count }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when organization cannot be created' do
|
||||
before do
|
||||
allow_next_instance_of(::Organizations::CreateService, current_user: user, params: anything) do |service|
|
||||
allow(service).to receive(:execute).and_return(ServiceResponse.error(message: 'test error'))
|
||||
end
|
||||
end
|
||||
|
||||
it 'raises RuntimeError' do
|
||||
expect { seed }.to raise_error(RuntimeError)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,23 +4,10 @@ require 'spec_helper'
|
|||
require_migration!
|
||||
|
||||
RSpec.describe QueueDeduplicateLfsObjectsProjects, feature_category: :source_code_management do
|
||||
let!(:batched_migration) { described_class::MIGRATION }
|
||||
let(:batched_migration) { described_class::MIGRATION }
|
||||
|
||||
it 'schedules a new batched migration' do
|
||||
reversible_migration do |migration|
|
||||
migration.before -> {
|
||||
expect(batched_migration).not_to have_scheduled_batched_migration
|
||||
}
|
||||
|
||||
migration.after -> {
|
||||
expect(batched_migration).to have_scheduled_batched_migration(
|
||||
table_name: :lfs_objects_projects,
|
||||
column_name: :id,
|
||||
batch_class_name: described_class::BATCH_CLASS_NAME,
|
||||
batch_size: described_class::BATCH_SIZE,
|
||||
sub_batch_size: described_class::SUB_BATCH_SIZE
|
||||
)
|
||||
}
|
||||
end
|
||||
migrate!
|
||||
expect(batched_migration).not_to have_scheduled_batched_migration
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe ReenqueueDeduplicateLfsObjectsProjects, feature_category: :source_code_management do
|
||||
let(:batched_migration) { described_class::MIGRATION }
|
||||
|
||||
it 'schedules a new batched migration' do
|
||||
reversible_migration do |migration|
|
||||
migration.before -> {
|
||||
expect(batched_migration).not_to have_scheduled_batched_migration
|
||||
}
|
||||
|
||||
migration.after -> {
|
||||
expect(batched_migration).to have_scheduled_batched_migration(
|
||||
table_name: :lfs_objects_projects,
|
||||
column_name: :id,
|
||||
batch_class_name: described_class::BATCH_CLASS_NAME,
|
||||
batch_size: described_class::BATCH_SIZE,
|
||||
sub_batch_size: described_class::SUB_BATCH_SIZE
|
||||
)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue