Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
bef328bb8c
commit
bfbd788e09
|
@ -1,4 +1,4 @@
|
|||
/* eslint-disable class-methods-use-this, no-unneeded-ternary */
|
||||
/* eslint-disable class-methods-use-this */
|
||||
|
||||
import $ from 'jquery';
|
||||
import { getGroups } from '~/api/groups_api';
|
||||
|
@ -78,7 +78,7 @@ export default class Todos {
|
|||
initDeprecatedJQueryDropdown($dropdown, {
|
||||
fieldName,
|
||||
selectable: true,
|
||||
filterable: searchFields ? true : false,
|
||||
filterable: Boolean(searchFields),
|
||||
search: { fields: searchFields },
|
||||
data: $dropdown.data('data'),
|
||||
clicked: () => {
|
||||
|
@ -172,8 +172,8 @@ export default class Todos {
|
|||
|
||||
updateBadges(data) {
|
||||
$(document).trigger('todo:toggle', data.count);
|
||||
document.querySelector('.todos-pending .badge').innerHTML = addDelimiter(data.count);
|
||||
document.querySelector('.todos-done .badge').innerHTML = addDelimiter(data.done_count);
|
||||
document.querySelector('.js-todos-pending .badge').innerHTML = addDelimiter(data.count);
|
||||
document.querySelector('.js-todos-done .badge').innerHTML = addDelimiter(data.done_count);
|
||||
}
|
||||
|
||||
goToTodoUrl(e) {
|
||||
|
|
|
@ -17,6 +17,7 @@ import {
|
|||
} from '~/vue_shared/security_reports/constants';
|
||||
|
||||
import configureSastMutation from '../graphql/configure_sast.mutation.graphql';
|
||||
import configureSastIacMutation from '../graphql/configure_iac.mutation.graphql';
|
||||
import configureSecretDetectionMutation from '../graphql/configure_secret_detection.mutation.graphql';
|
||||
|
||||
/**
|
||||
|
@ -162,6 +163,11 @@ export const securityFeatures = [
|
|||
configurationHelpPath: SAST_IAC_CONFIG_HELP_PATH,
|
||||
type: REPORT_TYPE_SAST_IAC,
|
||||
|
||||
// This field is currently hardcoded because SAST IaC is always available.
|
||||
// It will eventually come from the Backend, the progress is tracked in
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/331622
|
||||
available: true,
|
||||
|
||||
// This field will eventually come from the backend, the progress is
|
||||
// tracked in https://gitlab.com/gitlab-org/gitlab/-/issues/331621
|
||||
canEnableByMergeRequest: true,
|
||||
|
@ -269,6 +275,21 @@ export const featureToMutationMap = {
|
|||
},
|
||||
}),
|
||||
},
|
||||
...(gon?.features?.configureIacScanningViaMr
|
||||
? {
|
||||
[REPORT_TYPE_SAST_IAC]: {
|
||||
mutationId: 'configureSastIac',
|
||||
getMutationPayload: (projectPath) => ({
|
||||
mutation: configureSastIacMutation,
|
||||
variables: {
|
||||
input: {
|
||||
projectPath,
|
||||
},
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
[REPORT_TYPE_SECRET_DETECTION]: {
|
||||
mutationId: 'configureSecretDetection',
|
||||
getMutationPayload: (projectPath) => ({
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
mutation configureSastIac($input: ConfigureSastIacInput!) {
|
||||
configureSastIac(input: $input) {
|
||||
successPath
|
||||
errors
|
||||
}
|
||||
}
|
|
@ -210,3 +210,11 @@ module TabHelper
|
|||
current_page?(options)
|
||||
end
|
||||
end
|
||||
|
||||
def gl_tab_counter_badge(count, html_options = {})
|
||||
badge_classes = %w[badge badge-muted badge-pill gl-badge sm gl-tab-counter-badge]
|
||||
content_tag(:span,
|
||||
count,
|
||||
class: [*html_options[:class], badge_classes].join(' ')
|
||||
)
|
||||
end
|
||||
|
|
|
@ -25,6 +25,7 @@ module Ci
|
|||
Gitlab::Ci::Pipeline::Chain::Populate,
|
||||
Gitlab::Ci::Pipeline::Chain::StopDryRun,
|
||||
Gitlab::Ci::Pipeline::Chain::Create,
|
||||
Gitlab::Ci::Pipeline::Chain::CreateCrossDatabaseAssociations,
|
||||
Gitlab::Ci::Pipeline::Chain::Limit::Activity,
|
||||
Gitlab::Ci::Pipeline::Chain::Limit::JobActivity,
|
||||
Gitlab::Ci::Pipeline::Chain::CancelPendingPipelines,
|
||||
|
|
|
@ -10,19 +10,13 @@
|
|||
|
||||
- if current_user.todos.any?
|
||||
.top-area
|
||||
%ul.nav-links.mobile-separator.nav.nav-tabs
|
||||
%li.todos-pending{ class: active_when(params[:state].blank? || params[:state] == 'pending') }>
|
||||
= link_to todos_filter_path(state: 'pending') do
|
||||
%span
|
||||
To Do
|
||||
%span.badge.gl-tab-counter-badge.badge-muted.badge-pill.gl-badge.sm
|
||||
= number_with_delimiter(todos_pending_count)
|
||||
%li.todos-done{ class: active_when(params[:state] == 'done') }>
|
||||
= link_to todos_filter_path(state: 'done') do
|
||||
%span
|
||||
Done
|
||||
%span.badge.gl-tab-counter-badge.badge-muted.badge-pill.gl-badge.sm
|
||||
= number_with_delimiter(todos_done_count)
|
||||
= gl_tabs_nav({ class: 'gl-flex-grow-1 gl-border-0' }) do
|
||||
= gl_tab_link_to todos_filter_path(state: 'pending'), item_active: params[:state].blank? || params[:state] == 'pending', class: "js-todos-pending" do
|
||||
= _("To Do")
|
||||
= gl_tab_counter_badge number_with_delimiter(todos_pending_count)
|
||||
= gl_tab_link_to todos_filter_path(state: 'done'), item_active: params[:state] == 'done', class: "js-todos-done" do
|
||||
= _("Done")
|
||||
= gl_tab_counter_badge number_with_delimiter(todos_done_count)
|
||||
|
||||
.nav-controls
|
||||
- if @allowed_todos.any?(&:pending?)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
---
|
||||
filenames:
|
||||
- ee/app/assets/javascripts/oncall_schedules/graphql/mutations/update_oncall_schedule_rotation.mutation.graphql
|
||||
- ee/app/assets/javascripts/security_configuration/graphql/configure_iac.mutation.graphql
|
||||
- ee/app/assets/javascripts/oncall_schedules/graphql/mutations/update_oncall_schedule_rotation.mutation.graphql
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RemoveIndexForResourceGroup < Gitlab::Database::Migration[1.0]
|
||||
INDEX_NAME = 'index_for_resource_group'
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
remove_concurrent_index_by_name :ci_builds, INDEX_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
# rubocop:disable Migration/PreventIndexCreation
|
||||
add_concurrent_index :ci_builds, [:resource_group_id, :id], where: 'resource_group_id IS NOT NULL', name: INDEX_NAME
|
||||
# rubocop:enable Migration/PreventIndexCreation
|
||||
end
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
06cbecc52e62a48664ae486181047d8ca4d71a7991ba36bdca4bfa44257627f3
|
|
@ -25893,8 +25893,6 @@ CREATE UNIQUE INDEX index_feature_gates_on_feature_key_and_key_and_value ON feat
|
|||
|
||||
CREATE UNIQUE INDEX index_features_on_key ON features USING btree (key);
|
||||
|
||||
CREATE INDEX index_for_resource_group ON ci_builds USING btree (resource_group_id, id) WHERE (resource_group_id IS NOT NULL);
|
||||
|
||||
CREATE INDEX index_for_status_per_branch_per_project ON merge_trains USING btree (target_project_id, target_branch, status);
|
||||
|
||||
CREATE INDEX index_fork_network_members_on_fork_network_id ON fork_network_members USING btree (fork_network_id);
|
||||
|
|
|
@ -49,9 +49,8 @@ until the move has completed.
|
|||
|
||||
To move repositories:
|
||||
|
||||
1. Ensure all storages are accessible to the GitLab instance. Configure [local storage](../repository_storage_paths.md#example-configuration),
|
||||
and [cluster storage](../repository_storage_paths.md). In this example, these are
|
||||
`<original_storage_name>` and `<cluster_storage_name>`.
|
||||
1. Ensure all [local and cluster storages](../gitaly/configure_gitaly.md#mixed-configuration) are accessible to the GitLab instance. In
|
||||
this example, these are `<original_storage_name>` and `<cluster_storage_name>`.
|
||||
1. [Configure repository storage weights](../repository_storage_paths.md#configure-where-new-repositories-are-stored)
|
||||
so that the new storages receives all new projects. This stops new projects from being created
|
||||
on existing storages while the migration is in progress.
|
||||
|
|
|
@ -1022,7 +1022,7 @@ docker exec -it <name of container> gitlab-ctl stop sidekiq
|
|||
# Verify that the processes are all down before continuing
|
||||
docker exec -it <name of container> gitlab-ctl status
|
||||
|
||||
# Run the restore
|
||||
# Run the restore. NOTE: "_gitlab_backup.tar" is omitted from the name
|
||||
docker exec -it <name of container> gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
|
||||
|
||||
# Restart the GitLab container
|
||||
|
|
|
@ -33,8 +33,13 @@ usernames. A GitLab administrator can configure the GitLab instance to
|
|||
|
||||
## Project members permissions
|
||||
|
||||
The Owner role is only available at the group or personal namespace level (and for instance administrators) and is inherited by its projects.
|
||||
While Maintainer is the highest project-level role, some actions can only be performed by a personal namespace or group owner, or an instance administrator, who receives all permissions.
|
||||
A user's role determines what permissions they have on a project. The Owner role provides all permissions but is
|
||||
available only:
|
||||
|
||||
- For group owners. The role is inherited for a group's projects.
|
||||
- For Administrators.
|
||||
|
||||
Personal namespace owners have the same permissions as an Owner, but are displayed with the Maintainer role on projects created in their personal namespace.
|
||||
For more information, see [projects members documentation](project/members/index.md).
|
||||
|
||||
The following table lists project permissions available for each role:
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Gitlab
|
||||
module Ci
|
||||
module Pipeline
|
||||
module Chain
|
||||
class CreateCrossDatabaseAssociations < Chain::Base
|
||||
def perform!
|
||||
# to be overridden in EE
|
||||
end
|
||||
|
||||
def break?
|
||||
false # to be overridden in EE
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Gitlab::Ci::Pipeline::Chain::CreateCrossDatabaseAssociations.prepend_mod_with('Gitlab::Ci::Pipeline::Chain::CreateCrossDatabaseAssociations')
|
|
@ -244,5 +244,3 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
Gitlab::Ci::Pipeline::Seed::Build.prepend_mod_with('Gitlab::Ci::Pipeline::Seed::Build')
|
||||
|
|
|
@ -57,6 +57,7 @@ module Gitlab
|
|||
push_frontend_feature_flag(:improved_emoji_picker, default_enabled: :yaml)
|
||||
push_frontend_feature_flag(:new_header_search, default_enabled: :yaml)
|
||||
push_frontend_feature_flag(:suppress_apollo_errors_during_navigation, current_user, default_enabled: :yaml)
|
||||
push_frontend_feature_flag(:configure_iac_scanning_via_mr, current_user, default_enabled: :yaml)
|
||||
end
|
||||
|
||||
# Exposes the state of a feature flag to the frontend code.
|
||||
|
|
|
@ -94,13 +94,13 @@ describe('Todos', () => {
|
|||
});
|
||||
|
||||
it('updates pending text', () => {
|
||||
expect(document.querySelector('.todos-pending .badge').innerHTML).toEqual(
|
||||
expect(document.querySelector('.js-todos-pending .badge').innerHTML).toEqual(
|
||||
addDelimiter(TEST_COUNT_BIG),
|
||||
);
|
||||
});
|
||||
|
||||
it('updates done text', () => {
|
||||
expect(document.querySelector('.todos-done .badge').innerHTML).toEqual(
|
||||
expect(document.querySelector('.js-todos-done .badge').innerHTML).toEqual(
|
||||
addDelimiter(TEST_DONE_COUNT_BIG),
|
||||
);
|
||||
});
|
||||
|
|
|
@ -150,4 +150,16 @@ RSpec.describe TabHelper do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'gl_tab_counter_badge' do
|
||||
it 'creates a tab counter badge' do
|
||||
expect(gl_tab_counter_badge(1)).to eq('<span class="badge badge-muted badge-pill gl-badge sm gl-tab-counter-badge">1</span>')
|
||||
end
|
||||
|
||||
context 'with extra classes' do
|
||||
it 'creates a tab counter badge with the correct class attribute' do
|
||||
expect(gl_tab_counter_badge(1, { class: 'js-test' })).to eq('<span class="js-test badge badge-muted badge-pill gl-badge sm gl-tab-counter-badge">1</span>')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Ci::Pipeline::Quota::Deployments do
|
||||
let_it_be(:namespace) { create(:namespace) }
|
||||
let_it_be(:default_plan, reload: true) { create(:default_plan) }
|
||||
let_it_be(:project, reload: true) { create(:project, :repository, namespace: namespace) }
|
||||
let_it_be_with_refind(:namespace) { create(:namespace) }
|
||||
let_it_be_with_reload(:default_plan) { create(:default_plan) }
|
||||
let_it_be_with_reload(:project) { create(:project, :repository, namespace: namespace) }
|
||||
let_it_be(:plan_limits) { create(:plan_limits, plan: default_plan) }
|
||||
|
||||
let(:pipeline) { build_stubbed(:ci_pipeline, project: project) }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Gitlab::Ci::Pipeline::Seed::Build do
|
||||
let_it_be(:project) { create(:project, :repository) }
|
||||
let_it_be_with_reload(:project) { create(:project, :repository) }
|
||||
let_it_be(:head_sha) { project.repository.head_commit.id }
|
||||
|
||||
let(:pipeline) { build(:ci_empty_pipeline, project: project, sha: head_sha) }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Ci::PipelineSchedule do
|
||||
let_it_be(:project) { create_default(:project) }
|
||||
let_it_be_with_reload(:project) { create_default(:project) }
|
||||
|
||||
subject { build(:ci_pipeline_schedule) }
|
||||
|
||||
|
|
|
@ -32,8 +32,8 @@ RSpec.describe ProjectHook do
|
|||
end
|
||||
|
||||
describe '#rate_limit' do
|
||||
let_it_be(:hook) { create(:project_hook) }
|
||||
let_it_be(:plan_limits) { create(:plan_limits, :default_plan, web_hook_calls: 100) }
|
||||
let_it_be(:hook) { create(:project_hook) }
|
||||
|
||||
it 'returns the default limit' do
|
||||
expect(hook.rate_limit).to be(100)
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
- "./ee/spec/services/app_sec/dast/profiles/update_service_spec.rb"
|
||||
- "./ee/spec/services/app_sec/dast/scans/create_service_spec.rb"
|
||||
- "./ee/spec/services/app_sec/dast/scans/run_service_spec.rb"
|
||||
- "./ee/spec/services/ci/create_pipeline_service/dast_configuration_spec.rb"
|
||||
- "./ee/spec/services/ci/destroy_pipeline_service_spec.rb"
|
||||
- "./ee/spec/services/ci/retry_build_service_spec.rb"
|
||||
- "./ee/spec/services/ci/subscribe_bridge_service_spec.rb"
|
||||
|
|
Loading…
Reference in New Issue