diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-23 12:07:48 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-23 12:07:48 +0300 |
commit | 4a3d1b728146eca491a4be53a353613d98562254 (patch) | |
tree | 08af67555ad34030da6573ba176b069f1ac33022 | |
parent | a8b9ec7857cd3e0ed2692c7dd0a2ef7eb549d465 (diff) |
Add latest changes from gitlab-org/gitlab@master
18 files changed, 42 insertions, 67 deletions
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index a1c4a26df47..bdeda8c5642 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -1027,7 +1027,6 @@ rules: - if: '$CODE_QUALITY_DISABLED' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *code-backstage-patterns allow_failure: true @@ -1036,7 +1035,6 @@ rules: - if: '$SAST_DISABLED || $GITLAB_FEATURES !~ /\bsast\b/' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *code-backstage-qa-patterns allow_failure: true @@ -1047,7 +1045,6 @@ when: never - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # The Secret-Detection template already has a `secret_detection_default_branch` job when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - changes: *code-backstage-qa-patterns allow_failure: true @@ -1055,7 +1052,6 @@ rules: - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium([^-]|$)/' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *dependency-patterns allow_failure: true @@ -1064,7 +1060,6 @@ rules: - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /bundler-audit/' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *bundler-patterns allow_failure: true @@ -1073,7 +1068,6 @@ rules: - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /retire.js/' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *nodejs-patterns allow_failure: true @@ -1082,7 +1076,6 @@ rules: - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium-python/' when: never - # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 - <<: *if-default-refs changes: *python-patterns allow_failure: true diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 2faad24dba7..0d089c449eb 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -92aea29d1f67436a080670c16e9cc859f6b642dc +65bddca7ed089abdc7869c0f500825f29bd5a89f diff --git a/Gemfile.lock b/Gemfile.lock index ef31d72a5dd..dbf4b78a9a2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1263,7 +1263,7 @@ GEM activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) - sys-filesystem (1.1.6) + sys-filesystem (1.1.9) ffi sysexits (1.2.0) temple (0.8.2) diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml index e617b4358e3..5ce275d4a43 100644 --- a/app/views/layouts/_search.html.haml +++ b/app/views/layouts/_search.html.haml @@ -3,14 +3,14 @@ .search-input-container .search-input-wrap .dropdown{ data: { url: search_autocomplete_path } } - = search_field_tag 'search', nil, placeholder: _('Search or jump to…'), + = search_field_tag 'search', nil, placeholder: _('Search GitLab'), class: 'search-input dropdown-menu-toggle no-outline js-search-dashboard-options', spellcheck: false, autocomplete: 'off', data: { issues_path: issues_dashboard_path, mr_path: merge_requests_dashboard_path, qa_selector: 'search_term_field' }, - aria: { label: _('Search or jump to…') } + aria: { label: _('Search GitLab') } %button.hidden.js-dropdown-search-toggle{ type: 'button', data: { toggle: 'dropdown' } } .dropdown-menu.dropdown-select{ data: { testid: 'dashboard-search-options' } } = dropdown_content do diff --git a/config/feature_flags/development/ci_job_jwt.yml b/config/feature_flags/development/ci_job_jwt.yml index ef2f43175ed..3ce97c6334c 100644 --- a/config/feature_flags/development/ci_job_jwt.yml +++ b/config/feature_flags/development/ci_job_jwt.yml @@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28063 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/207125 milestone: '12.10' type: development -group: group::release +group: group::configure default_enabled: true diff --git a/config/feature_flags/development/ci_jwt_signing_key.yml b/config/feature_flags/development/ci_jwt_signing_key.yml index 021f4e49e41..7d96264e25f 100644 --- a/config/feature_flags/development/ci_jwt_signing_key.yml +++ b/config/feature_flags/development/ci_jwt_signing_key.yml @@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34249 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/258546 milestone: '13.6' type: development -group: group::release +group: group::configure default_enabled: true diff --git a/config/feature_flags/development/usage_data_i_ci_secrets_management_vault_build_created.yml b/config/feature_flags/development/usage_data_i_ci_secrets_management_vault_build_created.yml index de3ca4fc689..0019b949a98 100644 --- a/config/feature_flags/development/usage_data_i_ci_secrets_management_vault_build_created.yml +++ b/config/feature_flags/development/usage_data_i_ci_secrets_management_vault_build_created.yml @@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/46515 rollout_issue_url: milestone: '13.6' type: development -group: group::release +group: group::configure default_enabled: true diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 33b19b5b988..72589f51130 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -917,13 +917,8 @@ Settings.monitoring.web_exporter['port'] ||= 8083 # Prometheus settings # Settings['prometheus'] ||= Settingslogic.new({}) -# TODO: Remove listen_address and enable in GitLab 14.0 and set default value -# of server_address to be nil and enabled to be false - -# https://gitlab.com/gitlab-org/gitlab/-/issues/296022 -Settings.prometheus['enable'] ||= false -Settings.prometheus['listen_address'] ||= nil -Settings.prometheus['enabled'] = Settings.prometheus['enable'] if Settings.prometheus['enabled'].nil? -Settings.prometheus['server_address'] ||= Settings.prometheus['listen_address'] +Settings.prometheus['enabled'] ||= false +Settings.prometheus['server_address'] ||= nil # # Shutdown settings diff --git a/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png b/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png Binary files differindex e86ad7572e8..7a0d83ab2dd 100644 --- a/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png +++ b/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png diff --git a/doc/administration/troubleshooting/img/AzureAD-claims.png b/doc/administration/troubleshooting/img/AzureAD-claims.png Binary files differindex aab92288704..576040be337 100644 --- a/doc/administration/troubleshooting/img/AzureAD-claims.png +++ b/doc/administration/troubleshooting/img/AzureAD-claims.png diff --git a/doc/development/feature_flags/index.md b/doc/development/feature_flags/index.md index 79a100e44a5..ac5a7268c54 100644 --- a/doc/development/feature_flags/index.md +++ b/doc/development/feature_flags/index.md @@ -364,6 +364,8 @@ Feature.enabled?(:feature_flag, group) Feature.enabled?(:feature_flag, user) ``` +Please see [Feature flag controls](controls.md#process) for more details on working with feature flags. + #### Selectively disable by actor By default you cannot selectively disable a feature flag by actor. @@ -461,7 +463,7 @@ Feature.remove(:feature_flag_name) - **Exception:** database migrations **should** have a changelog entry. - Any change related to a feature flag itself (flag removal, default-on setting) **should** have a changelog entry. Use the flowchart to determine the changelog entry type. - + ```mermaid graph LR A[flag: default off] -->|'added' / 'changed'| B(flag: default on) @@ -470,7 +472,7 @@ Feature.remove(:feature_flag_name) A -->|'added' / 'changed'| C A -->|no changelog| D ``` - + - Any change behind a feature flag that is **enabled** by default **should** have a changelog entry. ## Feature flags in tests diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 007513551e8..993a4fbab5f 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -28393,6 +28393,9 @@ msgstr "" msgid "Search" msgstr "" +msgid "Search GitLab" +msgstr "" + msgid "Search Jira issues" msgstr "" @@ -28477,9 +28480,6 @@ msgstr "" msgid "Search or filter results…" msgstr "" -msgid "Search or jump to…" -msgstr "" - msgid "Search project" msgstr "" diff --git a/spec/frontend/logs/stores/actions_spec.js b/spec/frontend/logs/stores/actions_spec.js index 61658257484..46ef1500a20 100644 --- a/spec/frontend/logs/stores/actions_spec.js +++ b/spec/frontend/logs/stores/actions_spec.js @@ -1,6 +1,5 @@ import MockAdapter from 'axios-mock-adapter'; import testAction from 'helpers/vuex_action_helper'; -import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; import { convertToFixedRange } from '~/lib/utils/datetime_range'; import { TOKEN_TYPE_POD_NAME } from '~/logs/constants'; @@ -32,7 +31,6 @@ import { mockNextCursor, } from '../mock_data'; -jest.mock('~/flash'); jest.mock('~/lib/utils/datetime_range'); jest.mock('~/logs/utils'); @@ -75,10 +73,6 @@ describe('Logs Store actions', () => { state = logsPageState(); }); - afterEach(() => { - createFlash.mockClear(); - }); - describe('setInitData', () => { it('should commit environment and pod name mutation', () => testAction( diff --git a/spec/frontend/profile/preferences/components/profile_preferences_spec.js b/spec/frontend/profile/preferences/components/profile_preferences_spec.js index 9e6f5594d26..f1172a73d36 100644 --- a/spec/frontend/profile/preferences/components/profile_preferences_spec.js +++ b/spec/frontend/profile/preferences/components/profile_preferences_spec.js @@ -2,6 +2,7 @@ import { GlButton } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; import { nextTick } from 'vue'; import { extendedWrapper } from 'helpers/vue_test_utils_helper'; +import createFlash from '~/flash'; import IntegrationView from '~/profile/preferences/components/integration_view.vue'; import ProfilePreferences from '~/profile/preferences/components/profile_preferences.vue'; import { i18n } from '~/profile/preferences/constants'; @@ -15,6 +16,7 @@ import { lightModeThemeId2, } from '../mock_data'; +jest.mock('~/flash'); const expectedUrl = '/foo'; describe('ProfilePreferences component', () => { @@ -54,10 +56,6 @@ describe('ProfilePreferences component', () => { return wrapper.findComponent(GlButton); } - function findFlashError() { - return document.querySelector('.flash-container .flash-text'); - } - function createThemeInput(themeId = lightModeThemeId1) { const input = document.createElement('input'); input.setAttribute('name', 'user[theme_id]'); @@ -82,10 +80,6 @@ describe('ProfilePreferences component', () => { document.body.classList.add('content-wrapper'); } - beforeEach(() => { - setFixtures('<div class="flash-container"></div>'); - }); - afterEach(() => { wrapper.destroy(); wrapper = null; @@ -152,7 +146,7 @@ describe('ProfilePreferences component', () => { const successEvent = new CustomEvent('ajax:success'); form.dispatchEvent(successEvent); - expect(findFlashError().innerText.trim()).toEqual(i18n.defaultSuccess); + expect(createFlash).toHaveBeenCalledWith({ message: i18n.defaultSuccess, type: 'notice' }); }); it('displays the custom success message', () => { @@ -160,14 +154,14 @@ describe('ProfilePreferences component', () => { const successEvent = new CustomEvent('ajax:success', { detail: [{ message }] }); form.dispatchEvent(successEvent); - expect(findFlashError().innerText.trim()).toEqual(message); + expect(createFlash).toHaveBeenCalledWith({ message, type: 'notice' }); }); it('displays the default error message', () => { const errorEvent = new CustomEvent('ajax:error'); form.dispatchEvent(errorEvent); - expect(findFlashError().innerText.trim()).toEqual(i18n.defaultError); + expect(createFlash).toHaveBeenCalledWith({ message: i18n.defaultError, type: 'alert' }); }); it('displays the custom error message', () => { @@ -175,7 +169,7 @@ describe('ProfilePreferences component', () => { const errorEvent = new CustomEvent('ajax:error', { detail: [{ message }] }); form.dispatchEvent(errorEvent); - expect(findFlashError().innerText.trim()).toEqual(message); + expect(createFlash).toHaveBeenCalledWith({ message, type: 'alert' }); }); }); diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/actions_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/actions_spec.js index 3f11095cb04..46ade5d5857 100644 --- a/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/actions_spec.js +++ b/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/actions_spec.js @@ -1,11 +1,14 @@ import MockAdapter from 'axios-mock-adapter'; import testAction from 'helpers/vuex_action_helper'; +import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; import * as actions from '~/vue_shared/components/sidebar/labels_select_vue/store/actions'; import * as types from '~/vue_shared/components/sidebar/labels_select_vue/store/mutation_types'; import defaultState from '~/vue_shared/components/sidebar/labels_select_vue/store/state'; +jest.mock('~/flash'); + describe('LabelsSelect Actions', () => { let state; const mockInitialState = { @@ -91,10 +94,6 @@ describe('LabelsSelect Actions', () => { }); describe('receiveLabelsFailure', () => { - beforeEach(() => { - setFixtures('<div class="flash-container"></div>'); - }); - it('sets value `state.labelsFetchInProgress` to `false`', (done) => { testAction( actions.receiveLabelsFailure, @@ -109,9 +108,7 @@ describe('LabelsSelect Actions', () => { it('shows flash error', () => { actions.receiveLabelsFailure({ commit: () => {} }); - expect(document.querySelector('.flash-container .flash-text').innerText.trim()).toBe( - 'Error fetching labels.', - ); + expect(createFlash).toHaveBeenCalledWith({ message: 'Error fetching labels.' }); }); }); @@ -186,10 +183,6 @@ describe('LabelsSelect Actions', () => { }); describe('receiveCreateLabelFailure', () => { - beforeEach(() => { - setFixtures('<div class="flash-container"></div>'); - }); - it('sets value `state.labelCreateInProgress` to `false`', (done) => { testAction( actions.receiveCreateLabelFailure, @@ -204,9 +197,7 @@ describe('LabelsSelect Actions', () => { it('shows flash error', () => { actions.receiveCreateLabelFailure({ commit: () => {} }); - expect(document.querySelector('.flash-container .flash-text').innerText.trim()).toBe( - 'Error creating label.', - ); + expect(createFlash).toHaveBeenCalledWith({ message: 'Error creating label.' }); }); }); diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/actions_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/actions_spec.js index 7ef4b769b6b..27de7de2411 100644 --- a/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/actions_spec.js +++ b/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/actions_spec.js @@ -1,11 +1,14 @@ import MockAdapter from 'axios-mock-adapter'; import testAction from 'helpers/vuex_action_helper'; +import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; import * as actions from '~/vue_shared/components/sidebar/labels_select_widget/store/actions'; import * as types from '~/vue_shared/components/sidebar/labels_select_widget/store/mutation_types'; import defaultState from '~/vue_shared/components/sidebar/labels_select_widget/store/state'; +jest.mock('~/flash'); + describe('LabelsSelect Actions', () => { let state; const mockInitialState = { @@ -91,10 +94,6 @@ describe('LabelsSelect Actions', () => { }); describe('receiveLabelsFailure', () => { - beforeEach(() => { - setFixtures('<div class="flash-container"></div>'); - }); - it('sets value `state.labelsFetchInProgress` to `false`', (done) => { testAction( actions.receiveLabelsFailure, @@ -109,9 +108,7 @@ describe('LabelsSelect Actions', () => { it('shows flash error', () => { actions.receiveLabelsFailure({ commit: () => {} }); - expect(document.querySelector('.flash-container .flash-text').innerText.trim()).toBe( - 'Error fetching labels.', - ); + expect(createFlash).toHaveBeenCalledWith({ message: 'Error fetching labels.' }); }); }); diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index a7642d5e3c3..a440bf684e5 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -480,8 +480,8 @@ project: - kubernetes_namespaces - error_tracking_setting - metrics_setting -- gitlab_slack_application_service -- github_service +- gitlab_slack_application_integration +- github_integration - protected_environments - mirror_user - push_rule diff --git a/spec/views/layouts/_search.html.haml_spec.rb b/spec/views/layouts/_search.html.haml_spec.rb index f0c7cb57b25..ceb82e3640e 100644 --- a/spec/views/layouts/_search.html.haml_spec.rb +++ b/spec/views/layouts/_search.html.haml_spec.rb @@ -25,6 +25,15 @@ RSpec.describe 'layouts/_search' do end shared_examples 'search context scope is set' do + context 'when rendering' do + it 'sets the placeholder' do + render + + expect(rendered).to include('placeholder="Search GitLab"') + expect(rendered).to include('aria-label="Search GitLab"') + end + end + context 'when on issues' do it 'sets scope to issues' do render |