Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-03-28 21:07:58 +00:00
parent 1b6c8b34c1
commit fc8a3b9422
11 changed files with 134 additions and 24 deletions

View file

@ -11,3 +11,15 @@ lint-yaml:
LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates data/deprecations data/removals data/whats_new LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates data/deprecations data/removals data/whats_new
script: script:
- yamllint --strict -f colored $LINT_PATHS - yamllint --strict -f colored $LINT_PATHS
lint-metrics-yaml:
extends:
- .default-retry
- .yaml-lint:rules
image: pipelinecomponents/yamllint:latest
stage: lint
needs: []
variables:
LINT_PATHS: config/metrics
script:
- 'yamllint --strict -f colored -d "{extends: default, rules: {line-length: disable, document-start: disable, indentation: {spaces: 2, indent-sequences: whatever}}}" $LINT_PATHS'

View file

@ -37,15 +37,14 @@
.scrolling-tabs-container.inner-page-scroll-tabs .scrolling-tabs-container.inner-page-scroll-tabs
.fade-left= sprite_icon('chevron-lg-left', size: 12) .fade-left= sprite_icon('chevron-lg-left', size: 12)
.fade-right= sprite_icon('chevron-lg-right', size: 12) .fade-right= sprite_icon('chevron-lg-right', size: 12)
%ul.nav-links.scrolling-tabs.mobile-separator.nav.nav-tabs -# `item_active` is set to `false` as the active state is set by `app/assets/javascripts/pages/groups/shared/group_details.js`
%li.js-subgroups_and_projects-tab -# TODO: Replace this approach in https://gitlab.com/gitlab-org/gitlab/-/issues/23466
= link_to group_path, data: { target: 'div#subgroups_and_projects', action: 'subgroups_and_projects', toggle: 'tab'} do = gl_tabs_nav({ class: 'nav-links scrolling-tabs gl-display-flex gl-flex-grow-1 gl-flex-nowrap gl-border-0' }) do
= gl_tab_link_to group_path, item_active: false, tab_class: 'js-subgroups_and_projects-tab', data: { target: 'div#subgroups_and_projects', action: 'subgroups_and_projects', toggle: 'tab' } do
= _("Subgroups and projects") = _("Subgroups and projects")
%li.js-shared-tab = gl_tab_link_to group_shared_path, item_active: false, tab_class: 'js-shared-tab', data: { target: 'div#shared', action: 'shared', toggle: 'tab' } do
= link_to group_shared_path, data: { target: 'div#shared', action: 'shared', toggle: 'tab'} do
= _("Shared projects") = _("Shared projects")
%li.js-archived-tab = gl_tab_link_to group_archived_path, item_active: false, tab_class: 'js-archived-tab', data: { target: 'div#archived', action: 'archived', toggle: 'tab' } do
= link_to group_archived_path, data: { target: 'div#archived', action: 'archived', toggle: 'tab'} do
= _("Archived projects") = _("Archived projects")
.nav-controls.d-block.d-md-flex .nav-controls.d-block.d-md-flex

View file

@ -9,5 +9,5 @@
.text-content .text-content
%h4= s_('Milestones|Use milestones to track issues and merge requests over a fixed period of time') %h4= s_('Milestones|Use milestones to track issues and merge requests over a fixed period of time')
%p.state-description %p.state-description
= s_('Milestones|Organize issues and merge requests into a cohesive group, and set an optional start and due dates. %{learn_more_link}').html_safe % { learn_more_link: learn_more_link } = s_('Milestones|Organize issues and merge requests into a cohesive group, and set optional start and due dates. %{learn_more_link}').html_safe % { learn_more_link: learn_more_link }
= yield = yield

View file

@ -0,0 +1,21 @@
# frozen_string_literal: true
# This migration acts as a gate-keeper for other migrations related to project namespace back-filling
# so that other migrations that depend on project namespace back-filling cannot be run unless project namespace
# back-filling has finalized successfully.
class FinalizeProjectNamespacesBackfill < Gitlab::Database::Migration[1.0]
MIGRATION = 'ProjectNamespaces::BackfillProjectNamespaces'
def up
ensure_batched_background_migration_is_finished(
job_class_name: MIGRATION,
table_name: :projects,
column_name: :id,
job_arguments: [nil, 'up']
)
end
def down
# noop
end
end

View file

@ -0,0 +1 @@
c7d84b6d92566d66f69732071fe7fc6c4e5ce32475e0d2c42413c9f005aed5b0

View file

@ -31,11 +31,7 @@ on those issues. Please select someone with relevant experience from the
If there is nobody mentioned with that expertise, look in the commit history for If there is nobody mentioned with that expertise, look in the commit history for
the affected files to find someone. the affected files to find someone.
We also use [GitLab Triage](https://gitlab.com/gitlab-org/gitlab-triage) to automate We also have triage automation in place, described [in our handbook](https://about.gitlab.com/handbook/engineering/quality/triage-operations/).
some triaging policies. This is currently set up as a scheduled pipeline
(`https://gitlab.com/gitlab-org/quality/triage-ops/-/pipeline_schedules/10512/edit`,
must have at least the Developer role in the project) running on [quality/triage-ops](https://gitlab.com/gitlab-org/quality/triage-ops)
project.
## Labels ## Labels

View file

@ -48,7 +48,7 @@ module Gitlab
begin begin
update_batch(sub_batch, base_type_id) update_batch(sub_batch, base_type_id)
rescue ActiveRecord::StatementTimeout => e rescue ActiveRecord::StatementTimeout, ActiveRecord::QueryCanceled => e
update_attempt += 1 update_attempt += 1
if update_attempt <= MAX_UPDATE_RETRIES if update_attempt <= MAX_UPDATE_RETRIES

View file

@ -101,7 +101,11 @@ flawfinder-sast:
- if: $CI_COMMIT_BRANCH - if: $CI_COMMIT_BRANCH
exists: exists:
- '**/*.c' - '**/*.c'
- '**/*.cc'
- '**/*.cpp' - '**/*.cpp'
- '**/*.c++'
- '**/*.cp'
- '**/*.cxx'
kubesec-sast: kubesec-sast:
extends: .sast-analyzer extends: .sast-analyzer

View file

@ -24166,7 +24166,7 @@ msgstr ""
msgid "Milestones|Ongoing Issues (open and assigned)" msgid "Milestones|Ongoing Issues (open and assigned)"
msgstr "" msgstr ""
msgid "Milestones|Organize issues and merge requests into a cohesive group, and set an optional start and due dates. %{learn_more_link}" msgid "Milestones|Organize issues and merge requests into a cohesive group, and set optional start and due dates. %{learn_more_link}"
msgstr "" msgstr ""
msgid "Milestones|Project Milestone" msgid "Milestones|Project Milestone"

View file

@ -48,12 +48,20 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillWorkItemTypeIdForIssues do
expect { migrate }.to change { migration.batch_metrics.timings } expect { migrate }.to change { migration.batch_metrics.timings }
end end
it 'retries on ActiveRecord::StatementTimeout' do context 'when database timeouts' do
expect(migration).to receive(:update_batch).exactly(3).times.and_raise(ActiveRecord::StatementTimeout) using RSpec::Parameterized::TableSyntax
where(error_class: [ActiveRecord::StatementTimeout, ActiveRecord::QueryCanceled])
with_them do
it 'retries on timeout error' do
expect(migration).to receive(:update_batch).exactly(3).times.and_raise(error_class)
expect(migration).to receive(:sleep).with(30).twice expect(migration).to receive(:sleep).with(30).twice
expect do expect do
migrate migrate
end.to raise_error(ActiveRecord::StatementTimeout) end.to raise_error(error_class)
end
end
end end
end end

View file

@ -0,0 +1,69 @@
# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe FinalizeProjectNamespacesBackfill, :migration do
let(:batched_migrations) { table(:batched_background_migrations) }
let_it_be(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'raises migration not finished exception' do
it 'raises exception' do
expect { migrate! }.to raise_error(/Expected batched background migration for the given configuration to be marked as 'finished'/)
end
end
context 'when project namespace backfilling migration is missing' do
it 'warns migration not found' do
expect(Gitlab::AppLogger)
.to receive(:warn).with(/Could not find batched background migration for the given configuration:/)
migrate!
end
end
context 'with backfilling migration present' do
let!(:project_namespace_backfill) do
batched_migrations.create!(
job_class_name: 'ProjectNamespaces::BackfillProjectNamespaces',
table_name: :projects,
column_name: :id,
job_arguments: [nil, 'up'],
interval: 2.minutes,
min_value: 1,
max_value: 2,
batch_size: 1000,
sub_batch_size: 200,
status: 3 # finished
)
end
context 'when project namespace backfilling migration finished successfully' do
it 'does not raise exception' do
expect { migrate! }.not_to raise_error(/Expected batched background migration for the given configuration to be marked as 'finished'/)
end
end
context 'when project namespace backfilling migration is paused' do
using RSpec::Parameterized::TableSyntax
where(:status, :description) do
0 | 'paused'
1 | 'active'
4 | 'failed'
5 | 'finalizing'
end
with_them do
before do
project_namespace_backfill.update!(status: status)
end
it_behaves_like 'raises migration not finished exception'
end
end
end
end
end