diff options
130 files changed, 1109 insertions, 6727 deletions
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 057c2b3a510..813a55eb3b5 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -296,6 +296,21 @@ gitlab:setup: paths: - log/*.log +db:backup_and_restore: + extends: .db-job-base + variables: + SETUP_DB: "false" + GITLAB_ASSUME_YES: "1" + script: + - . scripts/prepare_build.sh + - bundle exec rake db:drop db:create db:structure:load db:seed_fu + - mkdir -p tmp/tests/public/uploads tmp/tests/{artifacts,pages,lfs-objects,registry} + - bundle exec rake gitlab:backup:create + - date + - bundle exec rake gitlab:backup:restore + rules: + - changes: ["lib/backup/**/*"] + rspec:coverage: extends: - .rails-job-base diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index cafba1c6149..4776936ccce 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -638,13 +638,6 @@ Style/RedundantInterpolation: Style/RedundantSelf: Enabled: false -# Offense count: 2 -# Cop supports --auto-correct. -Style/RedundantSort: - Exclude: - - 'app/presenters/packages/nuget/search_results_presenter.rb' - - 'spec/presenters/packages/nuget/search_results_presenter_spec.rb' - # Offense count: 120 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, AllowInnerSlashes. @@ -697,11 +690,6 @@ Rails/SaveBang: - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb' - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb' - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb' - - 'ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_spec.rb' - - 'ee/spec/lib/ee/gitlab/background_migration/move_epic_issues_after_epics_spec.rb' - - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_merge_requests_spec.rb' - - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_projects_spec.rb' - - 'ee/spec/lib/ee/gitlab/background_migration/prune_orphaned_geo_events_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb' - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb' - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb' @@ -829,10 +817,6 @@ Rails/SaveBang: - 'ee/spec/services/merge_requests/remove_approval_service_spec.rb' - 'ee/spec/services/merge_requests/update_blocks_service_spec.rb' - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb' - - 'ee/spec/services/projects/after_rename_service_spec.rb' - - 'ee/spec/services/projects/import_export/export_service_spec.rb' - - 'ee/spec/services/projects/update_mirror_service_spec.rb' - - 'ee/spec/services/projects/update_service_spec.rb' - 'ee/spec/services/quick_actions/interpret_service_spec.rb' - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb' - 'ee/spec/services/start_pull_mirroring_service_spec.rb' @@ -1111,9 +1095,6 @@ Rails/SaveBang: - 'spec/models/concerns/subscribable_spec.rb' - 'spec/models/concerns/token_authenticatable_spec.rb' - 'spec/models/container_repository_spec.rb' - - 'spec/models/cycle_analytics/issue_spec.rb' - - 'spec/models/cycle_analytics/plan_spec.rb' - - 'spec/models/cycle_analytics/production_spec.rb' - 'spec/models/deploy_keys_project_spec.rb' - 'spec/models/deploy_token_spec.rb' - 'spec/models/deployment_spec.rb' @@ -1172,9 +1153,6 @@ Rails/SaveBang: - 'spec/presenters/ci/build_runner_presenter_spec.rb' - 'spec/presenters/ci/trigger_presenter_spec.rb' - 'spec/presenters/packages/conan/package_presenter_spec.rb' - - 'spec/requests/api/access_requests_spec.rb' - - 'spec/requests/api/boards_spec.rb' - - 'spec/requests/api/branches_spec.rb' - 'spec/requests/api/ci/runner_spec.rb' - 'spec/requests/api/commit_statuses_spec.rb' - 'spec/requests/api/conan_packages_spec.rb' @@ -1196,9 +1174,6 @@ Rails/SaveBang: - 'spec/requests/api/merge_request_diffs_spec.rb' - 'spec/requests/api/merge_requests_spec.rb' - 'spec/requests/api/notes_spec.rb' - - 'spec/requests/api/pages/internal_access_spec.rb' - - 'spec/requests/api/pages/private_access_spec.rb' - - 'spec/requests/api/pages/public_access_spec.rb' - 'spec/requests/api/pipeline_schedules_spec.rb' - 'spec/requests/api/project_import_spec.rb' - 'spec/requests/api/project_milestones_spec.rb' @@ -1208,11 +1183,6 @@ Rails/SaveBang: - 'spec/requests/lfs_http_spec.rb' - 'spec/requests/profiles/notifications_controller_spec.rb' - 'spec/requests/projects/cycle_analytics_events_spec.rb' - - 'spec/serializers/environment_status_entity_spec.rb' - - 'spec/serializers/issue_entity_spec.rb' - - 'spec/serializers/job_entity_spec.rb' - - 'spec/serializers/merge_request_poll_widget_entity_spec.rb' - - 'spec/serializers/merge_request_widget_entity_spec.rb' - 'spec/services/auth/container_registry_authentication_service_spec.rb' - 'spec/services/auto_merge/base_service_spec.rb' - 'spec/services/auto_merge_service_spec.rb' @@ -1232,11 +1202,6 @@ Rails/SaveBang: - 'spec/services/issuable/bulk_update_service_spec.rb' - 'spec/services/issuable/clone/attributes_rewriter_spec.rb' - 'spec/services/issuable/common_system_notes_service_spec.rb' - - 'spec/services/issues/close_service_spec.rb' - - 'spec/services/issues/create_service_spec.rb' - - 'spec/services/issues/export_csv_service_spec.rb' - - 'spec/services/issues/reopen_service_spec.rb' - - 'spec/services/issues/update_service_spec.rb' - 'spec/services/labels/promote_service_spec.rb' - 'spec/services/members/destroy_service_spec.rb' - 'spec/services/merge_requests/build_service_spec.rb' diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 606159a47ac..29ef4f968d2 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.44.0 +8.45.0 diff --git a/app/assets/javascripts/ajax_loading_spinner.js b/app/assets/javascripts/ajax_loading_spinner.js index 54e86f329e4..1c95bc5081c 100644 --- a/app/assets/javascripts/ajax_loading_spinner.js +++ b/app/assets/javascripts/ajax_loading_spinner.js @@ -28,7 +28,8 @@ export default class AjaxLoadingSpinner { static toggleLoadingIcon(iconElement) { const { classList } = iconElement; classList.toggle(iconElement.dataset.icon); - classList.toggle('fa-spinner'); - classList.toggle('fa-spin'); + classList.toggle('gl-spinner'); + classList.toggle('gl-spinner-orange'); + classList.toggle('gl-spinner-sm'); } } diff --git a/app/assets/javascripts/boards/components/board_form.vue b/app/assets/javascripts/boards/components/board_form.vue index 616c1e5c254..385dd5fdc71 100644 --- a/app/assets/javascripts/boards/components/board_form.vue +++ b/app/assets/javascripts/boards/components/board_form.vue @@ -29,6 +29,10 @@ export default { type: String, required: true, }, + labelsWebUrl: { + type: String, + required: true, + }, scopedIssueBoardFeatureEnabled: { type: Boolean, required: false, @@ -198,6 +202,7 @@ export default { :board="board" :can-admin-board="canAdminBoard" :labels-path="labelsPath" + :labels-web-url="labelsWebUrl" :enable-scoped-labels="enableScopedLabels" :project-id="projectId" :group-id="groupId" diff --git a/app/assets/javascripts/boards/components/boards_selector.vue b/app/assets/javascripts/boards/components/boards_selector.vue index 708d12f46b2..271e1fc4b5f 100644 --- a/app/assets/javascripts/boards/components/boards_selector.vue +++ b/app/assets/javascripts/boards/components/boards_selector.vue @@ -61,6 +61,10 @@ export default { type: String, required: true, }, + labelsWebUrl: { + type: String, + required: true, + }, projectId: { type: Number, required: true, @@ -332,6 +336,7 @@ export default { <board-form v-if="currentPage" :labels-path="labelsPath" + :labels-web-url="labelsWebUrl" :project-id="projectId" :group-id="groupId" :can-admin-board="canAdminBoard" diff --git a/app/assets/javascripts/ide/components/pipelines/list.vue b/app/assets/javascripts/ide/components/pipelines/list.vue index a32e12e84f9..91bd64a2c9c 100644 --- a/app/assets/javascripts/ide/components/pipelines/list.vue +++ b/app/assets/javascripts/ide/components/pipelines/list.vue @@ -1,8 +1,7 @@ <script> -/* eslint-disable vue/no-v-html */ import { mapActions, mapGetters, mapState } from 'vuex'; import { escape } from 'lodash'; -import { GlLoadingIcon, GlIcon } from '@gitlab/ui'; +import { GlLoadingIcon, GlIcon, GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui'; import { sprintf, __ } from '../../../locale'; import CiIcon from '../../../vue_shared/components/ci_icon.vue'; import Tabs from '../../../vue_shared/components/tabs/tabs'; @@ -22,6 +21,9 @@ export default { EmptyState, GlLoadingIcon, }, + directives: { + SafeHtml, + }, computed: { ...mapState(['pipelinesEmptyStateSvgPath', 'links']), ...mapGetters(['currentProject']), @@ -84,7 +86,7 @@ export default { <div v-else-if="latestPipeline.yamlError" class="bs-callout bs-callout-danger"> <p class="gl-mb-0">{{ __('Found errors in your .gitlab-ci.yml:') }}</p> <p class="gl-mb-0 break-word">{{ latestPipeline.yamlError }}</p> - <p class="gl-mb-0" v-html="ciLintText"></p> + <p v-safe-html="ciLintText" class="gl-mb-0"></p> </div> <tabs v-else class="ide-pipeline-list"> <tab :active="!pipelineFailed"> diff --git a/app/assets/javascripts/jobs/components/log/line.vue b/app/assets/javascripts/jobs/components/log/line.vue index 48f669ae8ed..e68d5b8eda4 100644 --- a/app/assets/javascripts/jobs/components/log/line.vue +++ b/app/assets/javascripts/jobs/components/log/line.vue @@ -20,7 +20,7 @@ export default { return h( 'span', { - class: ['ws-pre-wrap', content.style], + class: ['gl-white-space-pre-wrap', content.style], }, content.text, ); diff --git a/app/assets/javascripts/jobs/components/log/line_header.vue b/app/assets/javascripts/jobs/components/log/line_header.vue index dbd16d55886..4c1c00cb2a7 100644 --- a/app/assets/javascripts/jobs/components/log/line_header.vue +++ b/app/assets/javascripts/jobs/components/log/line_header.vue @@ -52,7 +52,7 @@ export default { <span v-for="(content, i) in line.content" :key="i" - class="line-text w-100 ws-pre-wrap" + class="line-text w-100 gl-white-space-pre-wrap" :class="content.style" >{{ content.text }}</span > diff --git a/app/assets/javascripts/milestones/project_milestone_combobox.vue b/app/assets/javascripts/milestones/project_milestone_combobox.vue index b2196bd9ceb..1a94cf2a465 100644 --- a/app/assets/javascripts/milestones/project_milestone_combobox.vue +++ b/app/assets/javascripts/milestones/project_milestone_combobox.vue @@ -13,6 +13,8 @@ import { __, sprintf } from '~/locale'; import Api from '~/api'; import { deprecatedCreateFlash as createFlash } from '~/flash'; +const SEARCH_DEBOUNCE_MS = 250; + export default { components: { GlNewDropdown, @@ -95,12 +97,15 @@ export default { // lodash attaches to the function, which is // made inaccessible by Vue. More info: // https://stackoverflow.com/a/52988020/1063392 - this.debouncedSearchMilestones = debounce(this.searchMilestones, 100); + this.debouncedSearchMilestones = debounce(this.searchMilestones, SEARCH_DEBOUNCE_MS); }, mounted() { this.fetchMilestones(); }, methods: { + focusSearchBox() { + this.$refs.searchBox.$el.querySelector('input').focus(); + }, fetchMilestones() { this.requestCount += 1; @@ -183,7 +188,7 @@ export default { </script> <template> - <gl-new-dropdown> + <gl-new-dropdown v-bind="$attrs" class="project-milestone-combobox" @shown="focusSearchBox"> <template slot="button-content"> <span ref="buttonText" class="flex-grow-1 ml-1 text-muted">{{ selectedMilestonesLabel @@ -198,6 +203,7 @@ export default { <gl-new-dropdown-divider /> <gl-search-box-by-type + ref="searchBox" v-model.trim="searchQuery" class="gl-m-3" :placeholder="this.$options.translations.searchMilestones" diff --git a/app/assets/javascripts/notes/components/note_signed_out_widget.vue b/app/assets/javascripts/notes/components/note_signed_out_widget.vue index 6f043c87f78..593933016e1 100644 --- a/app/assets/javascripts/notes/components/note_signed_out_widget.vue +++ b/app/assets/javascripts/notes/components/note_signed_out_widget.vue @@ -1,9 +1,12 @@ <script> -/* eslint-disable vue/no-v-html */ +import { GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui'; import { mapGetters } from 'vuex'; import { __, sprintf } from '~/locale'; export default { + directives: { + SafeHtml, + }, computed: { ...mapGetters(['getNotesDataByProp']), registerLink() { @@ -31,5 +34,5 @@ export default { </script> <template> - <div class="disabled-comment text-center" v-html="signedOutText"></div> + <div v-safe-html="signedOutText" class="disabled-comment text-center"></div> </template> diff --git a/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue b/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue index 0c5ea85dfeb..c14ea7bd1d2 100644 --- a/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue +++ b/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue @@ -1,5 +1,5 @@ <script> -/* eslint-disable vue/no-v-html */ +import { GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui'; import { escape } from 'lodash'; import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue'; import { s__, sprintf } from '~/locale'; @@ -8,6 +8,9 @@ export default { components: { DeprecatedModal, }, + directives: { + SafeHtml, + }, props: { deleteProjectUrl: { type: String, @@ -94,8 +97,8 @@ export default { @cancel="onCancel" > <template #body="props"> - <p v-html="props.text"></p> - <p v-html="confirmationTextLabel"></p> + <p v-safe-html="props.text"></p> + <p v-safe-html="confirmationTextLabel"></p> <form ref="form" :action="deleteProjectUrl" method="post"> <input ref="method" type="hidden" name="_method" value="delete" /> <input :value="csrfToken" type="hidden" name="authenticity_token" /> diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/nav_controls.vue b/app/assets/javascripts/pipelines/components/pipelines_list/nav_controls.vue index 799da610370..d7b6e033bd1 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_list/nav_controls.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_list/nav_controls.vue @@ -1,11 +1,9 @@ <script> import { GlButton } from '@gitlab/ui'; -import LoadingButton from '~/vue_shared/components/loading_button.vue'; export default { name: 'PipelineNavControls', components: { - LoadingButton, GlButton, }, props: { @@ -52,13 +50,14 @@ export default { {{ s__('Pipelines|Run Pipeline') }} </gl-button> - <loading-button + <gl-button v-if="resetCachePath" :loading="isResetCacheButtonLoading" - :label="s__('Pipelines|Clear Runner Caches')" class="js-clear-cache" @click="onClickResetCache" - /> + > + {{ s__('Pipelines|Clear Runner Caches') }} + </gl-button> <gl-button v-if="ciLintPath" :href="ciLintPath" class="js-ci-lint"> {{ s__('Pipelines|CI Lint') }} diff --git a/app/assets/javascripts/projects/components/shared/delete_button.vue b/app/assets/javascripts/projects/components/shared/delete_button.vue index ee69da47ed8..051bfcb732a 100644 --- a/app/assets/javascripts/projects/components/shared/delete_button.vue +++ b/app/assets/javascripts/projects/components/shared/delete_button.vue @@ -86,7 +86,7 @@ export default { <slot name="modal-body"></slot> <p class="gl-mb-1">{{ $options.strings.confirmText }}</p> <p> - <code class="ws-pre-wrap">{{ confirmPhrase }}</code> + <code class="gl-white-space-pre-wrap">{{ confirmPhrase }}</code> </p> <gl-form-input id="confirm_name_input" diff --git a/app/assets/javascripts/snippets/components/edit.vue b/app/assets/javascripts/snippets/components/edit.vue index 3d2eaebf1cb..1a539aa0876 100644 --- a/app/assets/javascripts/snippets/components/edit.vue +++ b/app/assets/javascripts/snippets/components/edit.vue @@ -6,19 +6,21 @@ import { __, sprintf } from '~/locale'; import TitleField from '~/vue_shared/components/form/title.vue'; import { redirectTo, joinPaths } from '~/lib/utils/url_utility'; import FormFooterActions from '~/vue_shared/components/form/form_footer_actions.vue'; +import { SNIPPET_MARK_EDIT_APP_START } from '~/performance_constants'; import UpdateSnippetMutation from '../mutations/updateSnippet.mutation.graphql'; import CreateSnippetMutation from '../mutations/createSnippet.mutation.graphql'; import { getSnippetMixin } from '../mixins/snippets'; import { - SNIPPET_VISIBILITY_PRIVATE, SNIPPET_CREATE_MUTATION_ERROR, SNIPPET_UPDATE_MUTATION_ERROR, + SNIPPET_VISIBILITY_PRIVATE, } from '../constants'; +import defaultVisibilityQuery from '../queries/snippet_visibility.query.graphql'; + import SnippetBlobActionsEdit from './snippet_blob_actions_edit.vue'; import SnippetVisibilityEdit from './snippet_visibility_edit.vue'; import SnippetDescriptionEdit from './snippet_description_edit.vue'; -import { SNIPPET_MARK_EDIT_APP_START } from '~/performance_constants'; export default { components: { @@ -31,6 +33,15 @@ export default { GlLoadingIcon, }, mixins: [getSnippetMixin], + apollo: { + defaultVisibility: { + query: defaultVisibilityQuery, + manual: true, + result({ data: { selectedLevel } }) { + this.selectedLevelDefault = selectedLevel; + }, + }, + }, props: { markdownPreviewPath: { type: String, @@ -56,6 +67,7 @@ export default { isUpdating: false, newSnippet: false, actions: [], + selectedLevelDefault: SNIPPET_VISIBILITY_PRIVATE, }; }, computed: { @@ -98,6 +110,13 @@ export default { descriptionFieldId() { return `${this.isProjectSnippet ? 'project' : 'personal'}_snippet_description`; }, + newSnippetSchema() { + return { + title: '', + description: '', + visibilityLevel: this.selectedLevelDefault, + }; + }, }, beforeCreate() { performance.mark(SNIPPET_MARK_EDIT_APP_START); @@ -126,7 +145,7 @@ export default { }, onNewSnippetFetched() { this.newSnippet = true; - this.snippet = this.$options.newSnippetSchema; + this.snippet = this.newSnippetSchema; }, onExistingSnippetFetched() { this.newSnippet = false; @@ -184,11 +203,6 @@ export default { this.actions = actions; }, }, - newSnippetSchema: { - title: '', - description: '', - visibilityLevel: SNIPPET_VISIBILITY_PRIVATE, - }, }; </script> <template> diff --git a/app/assets/javascripts/snippets/components/snippet_visibility_edit.vue b/app/assets/javascripts/snippets/components/snippet_visibility_edit.vue index 299bb8fcfad..25ad7c214b2 100644 --- a/app/assets/javascripts/snippets/components/snippet_visibility_edit.vue +++ b/app/assets/javascripts/snippets/components/snippet_visibility_edit.vue @@ -1,11 +1,8 @@ <script> import { GlIcon, GlFormGroup, GlFormRadio, GlFormRadioGroup, GlLink } from '@gitlab/ui'; -import { - SNIPPET_VISIBILITY, - SNIPPET_VISIBILITY_PRIVATE, - SNIPPET_VISIBILITY_INTERNAL, - SNIPPET_VISIBILITY_PUBLIC, -} from '~/snippets/constants'; +import defaultVisibilityQuery from '../queries/snippet_visibility.query.graphql'; +import { defaultSnippetVisibilityLevels } from '../utils/blob'; +import { SNIPPET_LEVELS_RESTRICTED, SNIPPET_LEVELS_DISABLED } from '~/snippets/constants'; export default { components: { @@ -15,6 +12,16 @@ export default { GlFormRadioGroup, GlLink, }, + apollo: { + defaultVisibility: { + query: defaultVisibilityQuery, + manual: true, + result({ data: { visibilityLevels, multipleLevelsRestricted } }) { + this.visibilityLevels = defaultSnippetVisibilityLevels(visibilityLevels); + this.multipleLevelsRestricted = multipleLevelsRestricted; + }, + }, + }, props: { helpLink: { type: String, @@ -28,19 +35,17 @@ export default { }, value: { type: String, - required: false, - default: SNIPPET_VISIBILITY_PRIVATE, + required: true, }, }, - computed: { - visibilityOptions() { - return [ - SNIPPET_VISIBILITY_PRIVATE, - SNIPPET_VISIBILITY_INTERNAL, - SNIPPET_VISIBILITY_PUBLIC, - ].map(key => ({ value: key, ...SNIPPET_VISIBILITY[key] })); - }, + data() { + return { + visibilityLevels: [], + multipleLevelsRestricted: false, + }; }, + SNIPPET_LEVELS_DISABLED, + SNIPPET_LEVELS_RESTRICTED, }; </script> <template> @@ -51,10 +56,10 @@ export default { ><gl-icon :size="12" name="question" /></gl-link> </label> - <gl-form-group id="visibility-level-setting"> - <gl-form-radio-group v-bind="$attrs" :checked="value" stacked v-on="$listeners"> + <gl-form-group id="visibility-level-setting" class="gl-mb-0"> + <gl-form-radio-group :checked="value" stacked v-bind="$attrs" v-on="$listeners"> <gl-form-radio - v-for="option in visibilityOptions" + v-for="option in visibilityLevels" :key="option.value" :value="option.value" class="mb-3" @@ -71,5 +76,12 @@ export default { </gl-form-radio> </gl-form-radio-group> </gl-form-group> + + <div class="text-muted" data-testid="restricted-levels-info"> + <template v-if="!visibilityLevels.length">{{ $options.SNIPPET_LEVELS_DISABLED }}</template> + <template v-else-if="multipleLevelsRestricted">{{ + $options.SNIPPET_LEVELS_RESTRICTED + }}</template> + </div> </div> </template> diff --git a/app/assets/javascripts/snippets/constants.js b/app/assets/javascripts/snippets/constants.js index 12b83525bf7..e75922df15f 100644 --- a/app/assets/javascripts/snippets/constants.js +++ b/app/assets/javascripts/snippets/constants.js @@ -33,3 +33,15 @@ export const SNIPPET_BLOB_ACTION_MOVE = 'move'; export const SNIPPET_BLOB_ACTION_DELETE = 'delete'; export const SNIPPET_MAX_BLOBS = 10; + +export const SNIPPET_LEVELS_MAP = { + 0: SNIPPET_VISIBILITY_PRIVATE, + 10: SNIPPET_VISIBILITY_INTERNAL, + 20: SNIPPET_VISIBILITY_PUBLIC, +}; +export const SNIPPET_LEVELS_RESTRICTED = __( + 'Other visibility settings have been disabled by the administrator.', +); +export const SNIPPET_LEVELS_DISABLED = __( + 'Visibility settings have been disabled by the administrator.', +); diff --git a/app/assets/javascripts/snippets/index.js b/app/assets/javascripts/snippets/index.js index bb5e7d6e3f0..f0f7ddac47f 100644 --- a/app/assets/javascripts/snippets/index.js +++ b/app/assets/javascripts/snippets/index.js @@ -5,6 +5,7 @@ import createDefaultClient from '~/lib/graphql'; import SnippetsShow from './components/show.vue'; import SnippetsEdit from './components/edit.vue'; +import { SNIPPET_LEVELS_MAP, SNIPPET_VISIBILITY_PRIVATE } from '~/snippets/constants'; Vue.use(VueApollo); Vue.use(Translate); @@ -18,13 +19,23 @@ function appFactory(el, Component) { defaultClient: createDefaultClient(), }); + const { visibilityLevels, selectedLevel, multipleLevelsRestricted, ...restDataset } = el.dataset; + + apolloProvider.clients.defaultClient.cache.writeData({ + data: { + visibilityLevels: JSON.parse(visibilityLevels), + selectedLevel: SNIPPET_LEVELS_MAP[selectedLevel] ?? SNIPPET_VISIBILITY_PRIVATE, + multipleLevelsRestricted: 'multipleLevelsRestricted' in el.dataset, + }, + }); + return new Vue({ el, apolloProvider, render(createElement) { return createElement(Component, { props: { - ...el.dataset, + ...restDataset, }, }); }, diff --git a/app/assets/javascripts/snippets/queries/snippet_visibility.query.graphql b/app/assets/javascripts/snippets/queries/snippet_visibility.query.graphql new file mode 100644 index 00000000000..5bd6c131bab --- /dev/null +++ b/app/assets/javascripts/snippets/queries/snippet_visibility.query.graphql @@ -0,0 +1,5 @@ +query defaultSnippetVisibility { + visibilityLevels @client + selectedLevel @client + multipleLevelsRestricted @client +} diff --git a/app/assets/javascripts/snippets/utils/blob.js b/app/assets/javascripts/snippets/utils/blob.js index fd5ff9a3d2e..21f52671801 100644 --- a/app/assets/javascripts/snippets/utils/blob.js +++ b/app/assets/javascripts/snippets/utils/blob.js @@ -4,6 +4,8 @@ import { SNIPPET_BLOB_ACTION_UPDATE, SNIPPET_BLOB_ACTION_MOVE, SNIPPET_BLOB_ACTION_DELETE, + SNIPPET_LEVELS_MAP, + SNIPPET_VISIBILITY, } from '../constants'; const createLocalId = () => uniqueId('blob_local_'); @@ -64,3 +66,16 @@ export const diffAll = (blobs, origBlobs) => { return [...deletedEntries, ...newEntries]; }; + +export const defaultSnippetVisibilityLevels = arr => { + if (Array.isArray(arr)) { + return arr.map(l => { + const translatedLevel = SNIPPET_LEVELS_MAP[l]; + return { + value: translatedLevel, + ...SNIPPET_VISIBILITY[translatedLevel], + }; + }); + } + return []; +}; diff --git a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue index 1fd4f84bd65..083f581af05 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue @@ -1,11 +1,14 @@ <script> -/* eslint-disable vue/no-v-html */ import Vue from 'vue'; +import { GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui'; import { __ } from '~/locale'; import SuggestionDiff from './suggestion_diff.vue'; import { deprecatedCreateFlash as Flash } from '~/flash'; export default { + directives: { + SafeHtml, + }, props: { lineType: { type: String, @@ -116,6 +119,6 @@ export default { <template> <div> <div class="flash-container js-suggestions-flash"></div> - <div v-show="isRendered" ref="container" class="md" v-html="noteHtml"></div> + <div v-show="isRendered" ref="container" v-safe-html="noteHtml" class="md"></div> </div> </template> diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue index 5eef439aa90..1ef3d5627ae 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/base.vue @@ -14,7 +14,10 @@ import DropdownSearchInput from './dropdown_search_input.vue'; import DropdownFooter from './dropdown_footer.vue'; import DropdownCreateLabel from './dropdown_create_label.vue'; +import { DropdownVariant } from '../labels_select_vue/constants'; + export default { + DropdownVariant, components: { DropdownTitle, DropdownValue, @@ -80,6 +83,11 @@ export default { required: false, default: false, }, + variant: { + type: String, + required: false, + default: DropdownVariant.Sidebar, + }, }, computed: { hiddenInputName() { @@ -123,7 +131,7 @@ export default { <template> <div class="block labels js-labels-block"> <dropdown-value-collapsed - v-if="showCreate" + v-if="showCreate && variant === $options.DropdownVariant.Sidebar" :labels="context.labels" @onValueClick="handleCollapsedValueClick" /> @@ -150,18 +158,21 @@ export default { :labels-path="labelsPath" :namespace="namespace" :labels="context.labels" - :show-extra-options="!showCreate" + :show-extra-options="!showCreate || variant !== $options.DropdownVariant.Sidebar" :enable-scoped-labels="enableScopedLabels" /> <div - class="dropdown-menu dropdown-select dropdown-menu-paging -dropdown-menu-labels dropdown-menu-selectable" + class="dropdown-menu dropdown-select dropdown-menu-paging dropdown-menu-labels dropdown-menu-selectable" > <div class="dropdown-page-one"> - <dropdown-header v-if="showCreate" /> + <dropdown-header v-if="showCreate && variant === $options.DropdownVariant.Sidebar" /> <dropdown-search-input /> <div class="dropdown-content" data-qa-selector="labels_dropdown_content"></div> - <div class="dropdown-loading"><gl-loading-icon /></div> + <div class="dropdown-loading"> + <gl-loading-icon + class="gl-display-flex gl-justify-content-center gl-align-items-center gl-h-full" + /> + </div> <dropdown-footer v-if="showCreate" :labels-web-url="labelsWebUrl" diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_create_label.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_create_label.vue index 74c5e063c3d..95153db5af8 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_create_label.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select/dropdown_create_label.vue @@ -1,7 +1,11 @@ <script> +import { GlTooltipDirective } from '@gitlab/ui'; import { __ } from '~/locale'; export default { + directives: { + GlTooltip: GlTooltipDirective, + }, props: { headerTitle: { type: String, @@ -10,7 +14,11 @@ export default { }, }, created() { - this.suggestedColors = gon.suggested_label_colors; + const rawLabelsColors = gon.suggested_label_colors; + this.suggestedColors = Object.keys(rawLabelsColors).map(colorCode => ({ + colorCode, + title: rawLabelsColors[colorCode], + })); }, }; </script> @@ -46,10 +54,12 @@ export default { <a v-for="(color, index) in suggestedColors" :key="index" - :data-color="color" + v-gl-tooltip + :data-color="color.colorCode" :style="{ - backgroundColor: color, + backgroundColor: color.colorCode, }" + :title="color.title" href="#" > diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss index 9335114a937..913d13a4220 100644 --- a/app/assets/stylesheets/framework/common.scss +++ b/app/assets/stylesheets/framework/common.scss @@ -416,7 +416,6 @@ img.emoji { .flex-no-shrink { flex-shrink: 0; } .ws-initial { white-space: initial; } .ws-normal { white-space: normal; } -.ws-pre-wrap { white-space: pre-wrap; } .overflow-auto { overflow: auto; } .overflow-visible { overflow: visible; } diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss index e94d0ffdfbd..5a212374ebe 100644 --- a/app/assets/stylesheets/framework/dropdowns.scss +++ b/app/assets/stylesheets/framework/dropdowns.scss @@ -171,6 +171,13 @@ } } +.labels { + // Prevent double scroll-bars for labels dropdown. + .dropdown-menu-toggle.wide + .dropdown-select { + max-height: unset; + } +} + .gl-dropdown .dropdown-menu-toggle { padding-right: $gl-padding-8; diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index bd2f33b5bff..ca2ad7672bc 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -878,7 +878,11 @@ module Ci end def has_coverage_reports? - self.has_reports?(Ci::JobArtifact.coverage_reports) + pipeline_artifacts&.has_code_coverage? + end + + def can_generate_coverage_reports? + has_reports?(Ci::JobArtifact.coverage_reports) end def test_report_summary diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index c31abc071bc..88062240fb3 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1372,7 +1372,7 @@ class MergeRequest < ApplicationRecord def has_coverage_reports? return false unless Feature.enabled?(:coverage_report_view, project) - actual_head_pipeline&.pipeline_artifacts&.has_code_coverage? + actual_head_pipeline&.has_coverage_reports? end def has_terraform_reports? diff --git a/app/models/packages/pypi/metadatum.rb b/app/models/packages/pypi/metadatum.rb index 7e6456ad964..71ea9430a05 100644 --- a/app/models/packages/pypi/metadatum.rb +++ b/app/models/packages/pypi/metadatum.rb @@ -6,6 +6,7 @@ class Packages::Pypi::Metadatum < ApplicationRecord belongs_to :package, -> { where(package_type: :pypi) }, inverse_of: :pypi_metadatum validates :package, presence: true + validates :required_python, length: { maximum: 50 }, allow_blank: true validate :pypi_package_type diff --git a/app/presenters/packages/nuget/search_results_presenter.rb b/app/presenters/packages/nuget/search_results_presenter.rb index 96c8fe7dd2a..dc391c380f3 100644 --- a/app/presenters/packages/nuget/search_results_presenter.rb +++ b/app/presenters/packages/nuget/search_results_presenter.rb @@ -49,7 +49,7 @@ module Packages def latest_version(packages) versions = packages.map(&:version).compact - VersionSorter.sort(versions).last # rubocop: disable Style/UnneededSort + VersionSorter.sort(versions).last # rubocop: disable Style/RedundantSort end end end diff --git a/app/services/ci/pipelines/create_artifact_service.rb b/app/services/ci/pipelines/create_artifact_service.rb index 179e18f22e8..b7d334e436d 100644 --- a/app/services/ci/pipelines/create_artifact_service.rb +++ b/app/services/ci/pipelines/create_artifact_service.rb @@ -4,8 +4,8 @@ module Ci class CreateArtifactService def execute(pipeline) return unless ::Gitlab::Ci::Features.coverage_report_view?(pipeline.project) - return unless pipeline.has_coverage_reports? - return if pipeline.pipeline_artifacts.has_code_coverage? + return unless pipeline.can_generate_coverage_reports? + return if pipeline.has_coverage_reports? file = build_carrierwave_file(pipeline) diff --git a/app/services/packages/pypi/create_package_service.rb b/app/services/packages/pypi/create_package_service.rb index e70552e8fa0..c49efca0fc5 100644 --- a/app/services/packages/pypi/create_package_service.rb +++ b/app/services/packages/pypi/create_package_service.rb @@ -7,11 +7,17 @@ module Packages def execute ::Packages::Package.transaction do - Packages::Pypi::Metadatum.upsert( - package_id: created_package.id, + meta = Packages::Pypi::Metadatum.new( + package: created_package, required_python: params[:requires_python] ) + unless meta.valid? + raise ActiveRecord::RecordInvalid.new(meta) + end + + Packages::Pypi::Metadatum.upsert(meta.attributes) + ::Packages::CreatePackageFileService.new(created_package, file_params).execute end end diff --git a/app/views/groups/packages/index.html.haml b/app/views/groups/packages/index.html.haml index b07c08f50ca..852ed0cc185 100644 --- a/app/views/groups/packages/index.html.haml +++ b/app/views/groups/packages/index.html.haml @@ -1,4 +1,4 @@ -- page_title _("Packages") +- page_title _("Package Registry") .row .col-12 diff --git a/app/views/projects/packages/packages/index.html.haml b/app/views/projects/packages/packages/index.html.haml index c81326f3760..be97d1f6764 100644 --- a/app/views/projects/packages/packages/index.html.haml +++ b/app/views/projects/packages/packages/index.html.haml @@ -1,4 +1,4 @@ -- page_title _("Packages") +- page_title _("Package Registry") .row .col-12 diff --git a/app/views/projects/packages/packages/show.html.haml b/app/views/projects/packages/packages/show.html.haml index a66ae466d9d..db49eb1bf52 100644 --- a/app/views/projects/packages/packages/show.html.haml +++ b/app/views/projects/packages/packages/show.html.haml @@ -1,7 +1,7 @@ -- add_to_breadcrumbs _("Packages"), project_packages_path(@project) +- add_to_breadcrumbs _("Package Registry"), project_packages_path(@project) - add_to_breadcrumbs @package.name, project_packages_path(@project) - breadcrumb_title @package.version -- page_title _("Packages") +- page_title _("Package Registry") .row .col-12 diff --git a/app/views/shared/boards/_switcher.html.haml b/app/views/shared/boards/_switcher.html.haml index 09a365a290a..58e877f20fe 100644 --- a/app/views/shared/boards/_switcher.html.haml +++ b/app/views/shared/boards/_switcher.html.haml @@ -10,6 +10,7 @@ can_admin_board: can?(current_user, :admin_board, parent).to_s, multiple_issue_boards_available: parent.multiple_issue_boards_available?.to_s, labels_path: labels_filter_path_with_defaults(only_group_labels: true, include_descendant_groups: true), + labels_web_url: parent.is_a?(Project) ? project_labels_path(@project) : group_labels_path(@group), project_id: @project&.id, group_id: @group&.id, scoped_issue_board_feature_enabled: Gitlab.ee? && parent.feature_available?(:scoped_issue_board) ? 'true' : 'false', diff --git a/app/views/shared/snippets/_form.html.haml b/app/views/shared/snippets/_form.html.haml index 81277b50d13..41098b60193 100644 --- a/app/views/shared/snippets/_form.html.haml +++ b/app/views/shared/snippets/_form.html.haml @@ -1,5 +1,6 @@ - if Feature.enabled?(:snippets_edit_vue) - #js-snippet-edit.snippet-form{ data: {'project_path': @snippet.project&.full_path, 'snippet-gid': @snippet.new_record? ? '' : @snippet.to_global_id, 'markdown-preview-path': preview_markdown_path(parent), 'markdown-docs-path': help_page_path('user/markdown'), 'visibility-help-link': help_page_path("public_access/public_access") } } + - available_visibility_levels = available_visibility_levels(@snippet) + #js-snippet-edit.snippet-form{ data: {'project_path': @snippet.project&.full_path, 'snippet-gid': @snippet.new_record? ? '' : @snippet.to_global_id, 'markdown-preview-path': preview_markdown_path(parent), 'markdown-docs-path': help_page_path('user/markdown'), 'visibility-help-link': help_page_path("public_access/public_access"), 'visibility_levels': available_visibility_levels, 'selected_level': snippets_selected_visibility_level(available_visibility_levels, @snippet.visibility_level), 'multiple_levels_restricted': multiple_visibility_levels_restricted? } } - else .snippet-form-holder = form_for @snippet, url: url, diff --git a/changelogs/archive-10-ee.md b/changelogs/archive-10-ee.md deleted file mode 100644 index 21ee4cd59be..00000000000 --- a/changelogs/archive-10-ee.md +++ /dev/null @@ -1,1097 +0,0 @@ -## 10.8.6 (2018-07-17) - -- No changes. - -## 10.8.5 (2018-06-21) - -- No changes. - -## 10.8.4 (2018-06-06) - -### Fixed (4 changes) - -- Render a 403 when showing an access denied message. !5964 -- Validate classification label on create & update. !5976 -- Fix breadcrumbs being covered by System Header message. -- Treat external authorization service response status 403 as failure. - - -## 10.8.3 (2018-05-30) - -- No changes. -- No changes. -### Fixed (1 change) - -- Geo - Calculate the wiki checksum even when wiki is disabled. !5772 - -### Performance (1 change) - -- Make Geo::PruneEventLogWorker delete rows more gently. !5835 - - -## 10.8.2 (2018-05-28) - -### Security (3 changes) - -- Fixed XSS in protected branches & tags access dropdown. -- Escape name in merge request approvers dropdown. -- Fixes include directive to not allow SSRF requests. - - -## 10.8.1 (2018-05-23) - -### Fixed (4 changes) - -- Geo: Fix repo, wiki, and upload replication when renaming a namespace that has subgroups. !5704 -- Shows the correct data in the verification information section for the primary node in Geo admin screen. !5722 -- [Geo] Don't remove project registry records. -- Geo: Exclude tables that start with pg_ from FDW check. - - -## 10.8.0 (2018-05-22) - -### Removed (1 change) - -- Use of ENV['USE_SYSTEM_GIT_FOR_FETCH'] is no longer supported. - -### Fixed (22 changes) - -- Add missing fields to the API documentation for the status of Geo Nodes. !3865 -- Large pushes were failing when max file size push rule was active. !4989 -- Fix GITLAB_FEATURES CI/CD env var for public projects. !5242 -- Reveal labels dropdown when labels icon is clicked on collapsed Epic sidebar. !5298 -- Geo: Propagate broadcast messages to secondaries. !5303 -- Geo: Exclude expired job artifacts from syncing and counts. !5380 -- Exclude GroupSAML from sign in buttons. !5449 -- Per-Group SAML (for GitLab.com) strips LRM chars from ADFS certificate fingerprints. !5466 -- Refactor the Geo LogCursor Logger to make class more descriptive. !5483 -- Geo - Returns a dummy checksum when there is no valid repository on disk. !5486 -- ShaAttribute no longer stops startup if database is missing. !5502 -- Fix network error message styling on Geo admin dashboard. !5530 -- Fixes invalid link in html version of mirror was hard failed email. !5546 -- During repository verification, ignore repositories/wikis that need to be resynced. !5568 -- Group SAML skips forgery protection in production. !5621 -- Does not log failed sign-in attempts when in a GitLab read-only instance. !5643 -- [Geo] Fix rake geo:status when event_log is not found. -- Geo: Use a pre-built node status in admin area. -- [Geo] Mentioned in custom hooks doc that they won't be replicated to secondary. -- Fix: Geo: BaseSyncService should prune the @geo-temporary directory before fetching. -- Stop presenting burndown charts promotion for grouped by title milestones. -- Geo: When a repository or Wiki sync has failed, mark resync flag as true. - -### Changed (13 changes, 1 of them is from the community) - -- Shorten protected branch / tag access level dropdown text. !5091 -- Improve tooltips on collapsible right sidebars. !5212 -- Allow easier customization of included CI configurations. !5288 (King Chung Huang) -- Unprotect and update disabled in UI when prevented by branch unprotect rules. !5296 -- Issues export CSV includes 'Weight' and 'Locked'. !5300 -- Update item titles and add help text in Geo nodes admin dashboard. !5306 -- Geo - Improve metrics for the checksum/verification feature. !5367 -- Adds push mirrors to GitLab Community Edition. !5484 -- Adds SSO page for GitLab.com per group SAML beta. !5508 -- Adds authentication flow for GitLab.com per group SAML beta. !5575 -- Add Geo information to console message. !5588 -- Ability to edit, disable or remove Geo Nodes is now always available. -- Show pod name for each instance on deploy boards. - -### Performance (4 changes) - -- Port Group member contribution analytics table to Vue. !5269 -- Improve performance of repository size limit check. !5476 -- Improves database performance of mirrors, forks and imports. !5522 -- Prevent Geo from unnecessarily syncing expired CI job artifacts. - -### Added (11 changes) - -- Geo: schedule a git repack after initial clone. !4266 -- Present Burndown charts for group milestones. !5354 -- Filtered search bar support for Roadmap view. !5417 -- Allow user to dismiss a vulnerability or create an issue out of it. !5452 -- Geo: enable housekeeping functionality when syncing repositories. !5461 -- Enable username autocomplete inside Epics. !5475 -- Present MRs on Jira development panel integration. !5534 -- Run repository verification on Geo secondary. !5550 -- Email notifications for epics. -- Add Epic count to usage pings. -- Add system note for weight change. - -### Other (6 changes, 6 of them are from the community) - -- Replace the `admin/license.feature` spinach test with an rspec analog. !5477 (@blackst0ne) -- Replace the `admin/push_rules.feature` spinach test with an rspec analog. !5512 (@blackst0ne) -- Replace the `admin/emails.feature` spinach test with an rspec analog. !5513 (@blackst0ne) -- Replace the `group_hooks.feature` spinach test with an rspec analog. !5515 (@blackst0ne) -- Replace the `groups_management.feature` spinach test with an rspec analog. !5516 (@blackst0ne) -- Remove `features/group_active_tab.feature`. !5554 (@blackst0ne) - - -## 10.7.7 (2018-07-17) - -- No changes. - -## 10.7.6 (2018-06-21) - -- No changes. - -## 10.7.5 (2018-05-28) - -### Security (3 changes) - -- Fixed XSS in protected branches & tags access dropdown. -- Escape name in merge request approvers dropdown. -- Fixes include directive to not allow SSRF requests. - - -## 10.7.4 (2018-05-21) - -### Fixed (2 changes) - -- Does not log failed sign-in attempts when in a GitLab read-only instance. !5643 -- Fix: Geo: BaseSyncService should prune the @geo-temporary directory before fetching. - - -## 10.7.3 (2018-05-02) - -### Fixed (3 changes) - -- Geo - Fix undefined method pending_delete for nil class. !5470 -- Geo: Admin page will not crash with 500 because of InvalidSignatureTimeError. !5495 -- Fix DB LB errors when escaping input. - - -## 10.7.2 (2018-04-25) - -- No changes. - -## 10.7.1 (2018-04-23) - -### Fixed (4 changes) - -- Geo: Fix enabled wiki counts with FDW (impacts synced and verified counts). !5352 -- Fix Epic timeline bar misalignment when start date is in last timeframe month and end date is out of range. !5360 -- Adds border top to codeclimate report in MR widget. -- Avoid wrong closing dates being caught by the query on Burndown charts. - -### Performance (1 change) - -- Geo - Improve the query performance to find unverified projects on primary node. !5348 - - -## 10.7.0 (2018-04-22) - -### Fixed (25 changes) - -- Issue Boards: Ensure that horizontal scroll bars are shown on overflow. !4944 -- Fix validation error message when historical data is empty. !4961 -- Fixes incorrect assignation of cluster details. !5047 -- Fixed personal snippets uploads when background upload is enabled. !5049 -- Fixed incorrect count of verified wikis on a Geo secondary node. !5084 -- Fix unapproved unassigned merge request emails failing to send. !5092 -- Geo secondary repository verification messages now appear in geo.log. !5095 -- Geo: Sync wiki when it is enabled. !5139 -- Geo: Make synced/failed scopes more consistent. !5171 -- Updates style of arrown in downstream pipeline. !5172 -- Add better LDAP connection handling in EE and fixing some LDAP group syncing problems. !5173 -- Fix an exception in the Geo repository sync worker. !5223 -- Geo - Fix wiki repository verification on a secondary node. !5315 -- Show repository checksum UI elements only when feature is enabled. !5341 -- Fix a bug migrating CI job artifact registry entries to a separate table. !5345 -- Render show all report for sast and dependency scanning. !5363 -- Fix label and issuable referencing in epics and epic notes. -- Add icons to epic system notes issue actions. -- [Geo] Fix project rename when wiki does not exist. -- Catch errors in LoadBalancing::Host#online?. -- Fix Scoped Boards bug filtering by No Milestone. -- Skip repository-changing events on Geo secondaries if the repository hasn't been backfilled yet. -- Ensure Geo secondary nodes only run cron jobs appropriate for secondaries. -- Geo - Returns a dummy checksum when there is no repository on disk. -- Fix Elasticsearch missing terms with special characters. - -### Deprecated (1 change) - -- Rename SAST:container to Container Scannning. - -### Changed (9 changes) - -- Geo - Perform the repository verification per shard on a secondary node. !5068 -- Allow enabling classification policy control without external authorization service. !5083 -- Update Geo nodes layout for better usability. !5199 -- Document manual disaster recovery process for systems with multiple secondaries. -- Don't send schedule confirmations for chat jobs. -- Geo - Switch from time-based checking of outdated checksums to the nil-checksum-based approach. -- Make /-/ delimiter optional for epics and search endpoints. -- Order boards dropdown alphabetically. -- Renders grouped security reports in MR widget & split security reports in CI view. - -### Performance (3 changes) - -- Geo - Improve the query performance to find unsynced job artifacts. !5350 -- Reimplement Roadmap timeline rendering for better performance. -- Geo: Migrate CI job artifacts into their own registry table. - -### Added (11 changes) - -- Geo ensure files moved to object storage are cleaned up. !4689 -- Timeout for external authorization is now configurable. !4971 -- Add system header and footer as new appearance options. !4972 -- Authenticate using TLS certificate for requests to external authorization service. !5028 -- Add admin setting for custom additional text in emails. !5031 -- Mark files missing on primary as synced, but retry them. !5050 -- Log every access when external authorization is enabled. !5117 -- Add total CPU/Memory metrics, adds weighting for proper sorting. !5260 -- Add comment thread to Epics. -- Render dependency scanning in MR widget and CI view. -- Add a Go back button to WebIDE to allow returning to where it was launched from. - -### Other (4 changes, 1 of them is from the community) - -- Move default group project creation level to Starter. !5148 -- Replace the `project/issues/weight.feature` spinach test with an rspec analog. !5194 (blackst0ne) -- [Geo] Log JID for sync related jobs. -- Breaks utils function to parse codeclimate and sast into separate functions. - - -## 10.6.6 (2018-05-28) - -### Security (3 changes) - -- Fixed XSS in protected branches & tags access dropdown. -- Escape name in merge request approvers dropdown. -- Fixes include directive to not allow SSRF requests. - - -## 10.6.5 (2018-04-24) - -- No changes. - -## 10.6.4 (2018-04-09) - -### Fixed (4 changes) - -- Fixes incorrect assignation of cluster details. !5047 -- Geo: Make synced/failed scopes more consistent. !5171 -- [Geo] Fix project rename when wiki does not exist. -- Fix Scoped Boards bug filtering by No Milestone. - -### Other (1 change) - -- [Geo] Log JID for sync related jobs. - - -## 10.6.3 (2018-04-03) - -- No changes. - -## 10.6.2 (2018-03-29) - -- No changes. - -## 10.6.1 (2018-03-27) - -### Fixed (8 changes) - -- Fix LDAP group sync permission override UI. !5003 -- Hard failing a mirror no longer fails for a blocked user's personal project. !5063 -- Geo - Avoid rescheduling the same project again in a backfill condition. !5069 -- Mark disabled wikis as fully synced. !5104 -- Fix excessive updates to file_registry when wiki is disabled. !5119 -- Geo: Recovery from temporary directory doesn't work if the namespace directory doesn't exist. -- Define a chat responder for the Slack app. -- Resolve "undefined method 'log_transfer_error'". - -### Added (1 change) - -- Also log Geo Prometheus metrics from primary. !5058 - -### Other (1 change) - -- Update Epic documentation to include labels. - - -## 10.6.0 (2018-03-22) - -### Security (2 changes) - -- Prevent new push rules from using non-RE2 regexes. -- Project can no longer be shared between groups when both member and group locks are active. - -### Fixed (47 changes) - -- Geo - Add a rake task to update Geo primary node URL. !4097 -- Capture push rule regex errors and present them to user. !4102 -- Fixed membership Lock should propagate from parent group to sub-groups. !4111 -- Fix Epic sidebar toggle button icon positioning. !4138 -- Update the Geo documentation to replicate all secrets to the secondary. !4188 -- Update Geo documentation to reuse the primary node SSH host key on secondary node. !4198 -- Improve Geo Disaster Recovery docs for systems in multi-secondary configurations. !4285 -- Fix 500 errors caused by large replication slot wal retention. !4347 -- Report the correct version and revision for Geo node status requests. !4353 -- Don't show Member Lock setting for unlicensed system. !4355 -- Fix the background_upload configuration being ignored. !4507 -- Fix canary legends for single series charts. !4522 -- Fixes and enhancements for Geo admin dashboard. !4536 -- Fix license expiration duration to show trial info only for trial license. !4573 -- File uploads in remote storage now support project renaming. !4597 -- Use unique keys for token inputs while add same value twice to an epic. !4618 -- Fix multiple assignees avatar alignment in issues list. !4664 -- Improve security reports to handle big links and to work on mobile devices. !4671 -- Supresses error being raised due to async remote removal being run outside a transaction. !4747 -- Mark empty repos as synced in Geo. !4757 -- Mirror owners now get assigned as mirror users when the assigned mirror users disable their accounts. !4827 -- Geo: Ignore remote stored objects when calculating counts. !4864 -- Fix Epics not getting created in a Group with existing Epics. !4865 -- Generate ObjectStorage URL based on user provided schema. !4932 -- Make Epic start and finish dates on Roadmap to be timezone neutral. !4964 -- Support SendURL for performing indirect download of artifacts if clients does not specify that it supports that. -- Fix LDAP group sync no longer configurable for regular users. -- [Geo] Skip attachments that is stored in the object storage. -- Fix: Geo WikiSyncService attempts to sync projects that have no Wiki. -- Fix broken CSS in modal for DAST report. -- Improve SAST description for no new vulnerabilities. -- Fix 'Geo: Don't attempt to expire the cache after a failed clone'. -- Geo - Remove duplicated message on on geo:update_primary_node_url rake task. -- Fix the geo::db:seeds rake task. -- Geo - Fix repository synchronization order for projects updated recently. -- Geo - Respect backoff time when repository have never been synced successfully. -- Ensure mirror can transition out of the started state when last_update_started_at is nil. -- Fix bug causing 'Import in progress' to be shown while a mirror is updating. -- Include epics from subgroups on Epic index page. -- Fix proxy_download support for lfs controller. -- Fixed IDE command palette options being hidden. -- Fixed IDE file list when multiple files have same name but different paths. -- Fixed IDE not showing the correct changes and diff markers. -- Update epic issue reference when moving an issue. -- Fix Geo Log Cursor not reconnecting after pgbouncer dies. -- Fix audit and Geo project deletion events not being logged under certain conditions. -- Geo: Fix Wiki resync when Wiki repository does not exist. - -### Changed (15 changes) - -- Geo Logger will use the same log level defined in Rails. !4066 -- Approve merge requests additionally. !4134 -- Geo: sync .gitattributes to info/attributes in secondary nodes. !4159 -- Update behavior of MR widgets that require pipeline artifacts to allow jobs with multiple artifacts. !4203 -- Add details on how to disable GitLab to the DR documentation. !4239 -- Add users stats page for admin area with per role amount. !4539 -- Group Roadmap enhancements. !4651 -- Adds support to show added, fixed and all vulnerabilties for SAST in merge request widget. -- Ports remote removal to a background job. -- Update UI for merge widget reports. -- Geo: Improve formatting of can't push to secondary warning message. -- Replace check_name key with description in codeclimate results for a more human readable description. -- Add license ID number to usage ping. -- Schedule mirror updates in parallel. -- Geo: Don't attempt to schedule a repository sync for downed Gitaly shards. - -### Performance (8 changes, 3 of them are from the community) - -- Move Assignees vue component. !4467 (George Tsiolis) -- Speed up approvals calculations. !4492 -- Move BoardNewIssue vue component. !16947 (George Tsiolis) -- Move RecentSearchesDropdownContent vue component. !16951 (George Tsiolis) -- Bump Geo JWT timeout from 1 minute to 10 minutes. -- Cache column_exists? for Elasticsearch columns. -- FIx N+1 queries with /api/v4/groups endpoint. -- Properly memoize ChangeAccess#validate_path_locks? to avoid excessive queries. - -### Added (39 changes, 1 of them is from the community) - -- Add ability to add Custom Metrics to environment and deployment metrics dashboards. !3799 -- Add object storage support for uploads. !3867 -- Add support within Browser Performance Testing for metrics where smaller is better. !3891 (joshlambert) -- Add more endpoints for Geo Nodes API. !3923 -- (EEP) Allow developers to create projects in group. !4046 -- Integrate current File Locking feature with LFS File Locking. !4091 -- Add Epic information for selected issue in Issue boards sidebar. !4104 -- Update CI/CD secret variables list to be dynamic and save without reloading the page. !4110 -- Add object storage migration task for uploads. !4215 -- Filtered search support for Epics list page. !4223 -- Add multi-file editor usage metrics. !4226 -- Dry up CI/CD gitlab-ci.yml configuration by allowing inclusion of external files. !4262 -- Geo: FDW issues are displayed in the Geo Node Admin UI. !4266 -- Implement selective synchronization by repository shard for Geo. !4286 -- Show Group level Roadmap. !4361 -- Add Geo Prometheus metrics about the various number of events. !4413 -- Geo - Calculate repositories checksum on primary node. !4428 -- If admin note exists, display it in admin user view. !4546 -- Add option to overwrite diverged branches for pull mirrors. !4559 -- Adds GitHub Service to send status updates for pipelines. !4591 -- Projects and MRs Approvers API. !4636 -- Add CI/CD for external repositories. !4642 -- Authorize project access with an external service. !4675 -- GitHub CI/CD import sets up pipeline notification integration. !4687 -- Add GitHub support to CI/CD for external repositories. !4688 -- Repository mirroring notifies when hard failed. !4699 -- Query cluster status. !4701 -- Geo - Verify repository checksums on the secondary node. !4749 -- Move support of external gitlab-ci files from Premium to Starter. !4841 -- Geo - Improve node status report by adding one more indicator of health: last time when primary pulled the status of the secondary. -- Render SAST report in Pipeline page. -- Add system notes when moving issues between epics. -- Add rake task to print Geo node status. -- Add basic searching and sorting to Epics API. -- gitlab:geo:check checks connection to the Geo tracking DB. -- Added basic implementation of GitLab Chatops. -- Add discussions API for Epics. -- Add proxy_download to enable passing all data through Workhorse. -- Add support for direct uploading of LFS artifacts. - -### Other (8 changes) - -- Geo: Improve replication status. Using pg_stat_wal_receiver. -- Remove unaproved typo check in sast:container report. -- Allow clicking on Staged Files in WebIDE to open them in the Editor. -- Translate Locked files page. -- Increase minimum mirror update interval from 15 to 30 minutes. -- Geo - add documentation about using shared a S3 bucket with GitLab Container Registry. -- Allow use of system git for git fetch if USE_SYSTEM_GIT_FOR_FETCH is defined. -- Rename "Approve Additionally" to "Add approval". - - -## 10.5.8 (2018-04-24) - -- No changes. - -## 10.5.7 (2018-04-03) - -- No changes. - -## 10.5.6 (2018-03-16) - -- No changes. - -## 10.5.5 (2018-03-15) - -### Fixed (1 change) - -- Geo: Fix Wiki resync when Wiki repository does not exist. - - -## 10.5.4 (2018-03-08) - -### Fixed (4 changes) - -- Supresses error being raised due to async remote removal being run outside a transaction. !4747 -- Mark empty repos as synced in Geo. !4757 -- Fix: Geo WikiSyncService attempts to sync projects that have no Wiki. -- Geo - Fix repository synchronization order for projects updated recently. - -### Other (1 change) - -- Rename "Approve Additionally" to "Add approval". - - -## 10.5.3 (2018-03-01) - -### Security (2 changes) - -- Project can no longer be shared between groups when both member and group locks are active. -- Prevent new push rules from using non-RE2 regexes. - -### Fixed (1 change) - -- Fix LDAP group sync no longer configurable for regular users. - - -## 10.5.2 (2018-02-25) - -- No changes. - -## 10.5.1 (2018-02-22) - -- No changes. - -## 10.5.0 (2018-02-22) - -### Fixed (23 changes, 1 of them is from the community) - -- Geo - Add a rake task to update Geo primary node URL. !4097 -- Capture push rule regex errors and present them to user. !4102 -- Fixed membership Lock should propagate from parent group to sub-groups. !4111 -- Fix Epic sidebar toggle button icon positioning. !4138 -- Update the Geo documentation to replicate all secrets to the secondary. !4188 -- Update Geo documentation to reuse the primary node SSH host key on secondary node. !4198 -- Override group sidebar links. !4234 (George Tsiolis) -- Improve Geo Disaster Recovery docs for systems in multi-secondary configurations. !4285 -- Fix 500 errors caused by large replication slot wal retention. !4347 -- Report the correct version and revision for Geo node status requests. !4353 -- Don't show Member Lock setting for unlicensed system. !4355 -- Fix the background_upload configuration being ignored. !4507 -- Geo: Reset force_redownload flag after successful sync. -- [Geo] Skip attachments that is stored in the object storage. -- [Geo] Fix redownload repository recovery when there is not local repo at all. -- Fix broken CSS in modal for DAST report. -- Improve SAST description for no new vulnerabilities. -- Geo - Remove duplicated message on on geo:update_primary_node_url rake task. -- Fix the geo::db:seeds rake task. -- Allow project to be set up to push to and pull from same mirror. -- Include epics from subgroups on Epic index page. -- Fix validation of environment scope of variables. -- Support SendURL for performing indirect download of artifacts if clients does not specify that it supports that. - -### Changed (9 changes) - -- Geo Logger will use the same log level defined in Rails. !4066 -- Approve merge requests additionally. !4134 -- Geo: sync .gitattributes to info/attributes in secondary nodes. !4159 -- Update behavior of MR widgets that require pipeline artifacts to allow jobs with multiple artifacts. !4203 -- Add details on how to disable GitLab to the DR documentation. !4239 -- Ports remote removal to a background job. -- Adds support to show added, fixed and all vulnerabilties for SAST in merge request widget. -- Geo: Don't attempt to schedule a repository sync for downed Gitaly shards. -- Update UI for merge widget reports. - -### Performance (3 changes) - -- Bump Geo JWT timeout from 1 minute to 10 minutes. -- FIx N+1 queries with /api/v4/groups endpoint. -- Properly memoize ChangeAccess#validate_path_locks? to avoid excessive queries. - -### Added (17 changes, 1 of them is from the community) - -- Add object storage support for uploads. !3867 -- Add support within Browser Performance Testing for metrics where smaller is better. !3891 (joshlambert) -- Add more endpoints for Geo Nodes API. !3923 -- (EEP) Allow developers to create projects in group. !4046 -- Integrate current File Locking feature with LFS File Locking. !4091 -- Add Epic information for selected issue in Issue boards sidebar. !4104 -- Update CI/CD secret variables list to be dynamic and save without reloading the page. !4110 -- Add object storage migration task for uploads. !4215 -- Filtered search support for Epics list page. !4223 -- Add multi-file editor usage metrics. !4226 -- Dry up CI/CD gitlab-ci.yml configuration by allowing inclusion of external files. !4262 -- Implement selective synchronization by repository shard for Geo. !4286 -- Show Group level Roadmap. !4361 -- Add Geo Prometheus metrics about the various number of events. !4413 -- Geo - Improve node status report by adding one more indicator of health: last time when primary pulled the status of the secondary. -- Add rake task to print Geo node status. -- Add system notes when moving issues between epics. - -### Other (3 changes) - -- Activated the Web IDE Button also on the main project page. !4250 -- Geo - add documentation about using shared a S3 bucket with GitLab Container Registry. -- Geo: Improve replication status. Using pg_stat_wal_receiver. -- Remove unaproved typo check in sast:container report. - - -## 10.4.7 (2018-04-03) - -- No changes. - -## 10.4.6 (2018-03-16) - -- No changes. - -## 10.4.5 (2018-03-01) - -### Security (2 changes) - -- Project can no longer be shared between groups when both member and group locks are active. -- Prevent new push rules from using non-RE2 regexes. - -### Fixed (1 change) - -- Fix LDAP group sync no longer configurable for regular users. - - -## 10.4.4 (2018-02-16) - -### Fixed (4 changes) - -- Handle empty event timestamp and larger memory units. !4206 -- Geo: Reset force_redownload flag after successful sync. -- [Geo] Fix redownload repository recovery when there is not local repo at all. -- Allow project to be set up to push to and pull from same mirror. - - -## 10.4.3 (2018-02-05) - -### Security (1 change) - -- Restrict LDAP API to admins only. - - -## 10.4.2 (2018-01-30) - -### Fixed (7 changes) - -- Fix Epic issue item reordering to handle different scenarios. !4142 -- Fix visually broken admin dashboard until license is added. !4196 -- Handle empty event timestamp and larger memory units. !4206 -- Use a fixed remote name for Geo mirrors. !4249 -- Preserve updated issue order to store when reorder is completed. !4278 -- Geo - Fix OPENSSH_EXPECTED_COMMAND in the geo:check rake task. -- Execute group hooks after-commit when moving an issue. - - -## 10.4.1 (2018-01-24) - -### Fixed (1 change) - -- Fix failed LDAP logins when sync_ssh_keys is included in config. - - -## 10.4.0 (2018-01-22) - -### Security (2 changes) - -- Fix LDAP external user/group bug on first sign in. -- Deny persisting milestones from outside project/group scope on boards. - -### Fixed (19 changes, 1 of them is from the community) - -- Issue count now refreshes quicker on geo secondary. !3639 -- Prevent adding same role multiple times on repeated clicks. !3700 -- Geo - Fix difference in FDW / non-FDW queries for Geo::FileRegistry queries. !3714 -- Fix successful rebase throwing flash error message. !3727 -- Fix Merge Rquest widget rebase action in Internet Explorer. !3732 -- Geo - Use relative path for avatar images on a secondary node. !3857 -- Add missing wiki counts to prometheus metrics. !3875 -- Adjust content width for User Settings, Pipeline quota. !3895 (George Tsiolis) -- Fix a bug where branch could not be delete due to a push rule config. !3900 -- Fix a few doc links to fast ssh key lookup. !3937 -- Handle node details load failure gracefully on UI. !3992 -- Use the fastest available method for various Geo status counts. !4024 -- Fix neutralCount computation to prevent negative values. !4044 -- Fix reordering of items when moved to top or bottom. !4050 -- Geo - Fix repository clean up when selective replication changes with hashed storage enabled. !4059 -- Fix JavaScript bundle running on Cluster update/destroy pages. !4112 -- Record EE instances without a license correctly in usage ping. -- Fix export to CSV if a filter with multiple labels is used. -- Stop authorization attempts with instance profile when static credentials are provided for AWS Elasticsearch. - -### Changed (6 changes) - -- Change MR widget failed icons to warning icons. !3669 -- Show clear message when set-geo-primary-node was successful. !3768 -- More descriptive error when clocks between Geo nodes are out of sync. !3860 -- Allow sidekiq to react to becoming a Geo primary or secondary without a restart. !3878 -- Geo admin screen enhancements. !3902 -- Geo UI polish. - -### Added (13 changes) - -- Split project repository and wiki repository status in Geo node status. !3560 -- Add reset pipeline minutes button to admin overview of groups and users. !3656 -- Show results from docker image scan in the merge request widget. !3672 -- Geo: Added Authorized Keys specific checks. !3728 -- Add some extra fields to Geo API node and status. !3858 -- Show results from DAST scan in the merge request widget. !3885 -- Add Geo support for CI job artifacts. !3935 -- Make it possible to enable/disable PostgreSQL FDW for Geo. !4020 -- Add support for reordering issues in epics. -- Check if shard configuration is same across Geo nodes. -- Add API for epics. -- Add group boards API endpoint. -- Add api for epic_issue associations. - -### Other (6 changes) - -- Document GitLab Geo with Object Storage. !3760 -- Update disaster recovery documentation with detailed steps. !3845 -- Fix broken alignment of database password in geo docs. !3939 -- Remove unnecessary NTP checks now included in gitlab:geo:check. !3940 -- Move geo status check after db replication to avoid anticipated failures. !3941 -- Make scoped issue board specs more reliable. - - -## 10.3.9 (2018-03-16) - -- No changes. - -## 10.3.8 (2018-03-01) - -### Security (2 changes) - -- Project can no longer be shared between groups when both member and group locks are active. -- Prevent new push rules from using non-RE2 regexes. - -### Fixed (1 change) - -- Fix LDAP group sync no longer configurable for regular users. - - -## 10.3.7 (2018-02-05) - -### Security (1 change) - -- Restrict LDAP API to admins only. - -### Fixed (1 change) - -- Fix JavaScript bundle running on Cluster update/destroy pages. - - -## 10.3.6 (2018-01-22) - -### Fixed (3 changes) - -- Geo - Fix repository clean up when selective replication changes with hashed storage enabled. !4059 -- Fix JavaScript bundle running on Cluster update/destroy pages. !4112 -- Fix export to CSV if a filter with multiple labels is used. - - -## 10.3.5 (2018-01-18) - -- No changes. - -## 10.3.4 (2018-01-10) - -### Security (2 changes) - -- Fix LDAP external user/group bug on first sign in. -- Deny persisting milestones from outside project/group scope on boards. - - -## 10.3.3 (2018-01-02) - -- No changes. - -## 10.3.2 (2017-12-28) - -- No changes. - -## 10.3.1 (2017-12-27) - -### Changed (1 change) - -- Geo: Show sync percent on bar graph and count within tooltips. !3794 - - -## 10.3.0 (2017-12-22) - -### Removed (2 changes) - -- Remove the full-scan option from the Geo log cursor. !3412 -- Remove Geo SSH repo sync support. !3553 - -### Fixed (14 changes) - -- Hide Approvals section when Merge Request Widget is showing the empty state. !3376 -- Fix error when entering an invalid url to push to or pull from a remote repository. !3389 -- Update gitlab.yml.example to match the default settings for Geo sync workers. !3488 -- Remove duplicate read-only flash message on admin pages. !3495 -- Strip leading & trailing whitespaces in CI/CD secret variable's environment scope. !3563 -- Fix Advanced Search Syntax documentation. !3571 -- Fix Git message when pushing to Geo secondary. !3616 -- Fix a bug in the Geo metrics update service. !3623 -- Fix validation of environment scope for Ci::Variable. !3641 -- Fix an exception in Geo scheduler workers. !3740 -- Fix Merge Request Widget Approvals responsiveness on mobile. -- Geo - Does not sync repositories on unhealthy shards in non-backfill conditions. -- Record EE Ultimate usage pings correctly. -- Fix board filter for predefined milestones. - -### Changed (4 changes) - -- Improve Geo logging of repository errors. !3402 -- ProtectedBranches API allows individual users and group to be specified. !3516 -- EE Protected Branches API access levels include user_id/group_id where relevant. !3535 -- Enhancements for Geo admin screen. !3545 - -### Performance (1 change) - -- Geo - Improve performance when calculating the node status. !3595 - -### Added (20 changes) - -- Show SAST results in MR widget. !3207 -- Add option for projects to only mirror protected branches. !3326 -- Add option to remote mirrors to only push protected branches. !3350 -- Add warning when Geo is configured insecurely. !3368 -- Added enpoint that triggers the pull mirroring process. !3453 -- Add performance metrics to the merge request widget. !3507 -- Geo: replicate Attachments migration to Hashed Storage in secondary node. !3544 -- View, add, and edit weight on Issue from the Issue Board contextual sidebar. !3566 -- Decrease scheduling delay and add rate limiting to push mirror. !3575 -- Allow admins to disable mirroring. !3586 -- Support multiple Kubernetes cluster per project. !3603 -- Geo: Increase parallelism by scheduling project repositories by shard. !3606 -- Geo: rake task to refresh foreign table schema (FDW support). !3626 -- Support mentioning epics. -- Handle outdated replicas in the DB load balancer. -- Add geo:set_secondary_as_primary rake task. -- Transfer job archives to object storage after creation. -- Geo - Show GitLab version for each node in the Geo status page. -- Add epic information to issue sidebar. -- Add system notes for issue - epic association. - -### Other (3 changes) - -- Add fade mask to the bottom of the boards selector dropdown list if it can be scrolled down. !3384 -- Document how to set up GitLab Geo for HA. !3468 -- Add border for epic edit button. - - -## 10.2.8 (2018-02-07) - -### Security (1 change) - -- Restrict LDAP API to admins only. - - -## 10.2.7 (2018-01-18) - -- No changes. - -## 10.2.6 (2018-01-11) - -### Security (2 changes) - -- Fix LDAP external user/group bug on first sign in. -- Deny persisting milestones from outside project/group scope on boards. - - -## 10.2.5 (2017-12-15) - -### Fixed (1 change) - -- Fix board filter for predefined milestones. - - -## 10.2.4 (2017-12-07) - -- No changes. - -## 10.2.3 (2017-11-30) - -### Fixed (5 changes) - -- Fix viewing default push rules on a Geo secondary. !3559 -- Disable autocomplete for epics. -- Fix epic fullscreen editing. -- Fix tasklist for epics. -- Fix Geo wiki sync error not increasing retry count. - - -## 10.2.2 (2017-11-23) - -### Fixed (6 changes) - -- Fix in-progress repository syncs counting as failed. !3424 -- Don't user issuable_sort cookie for epics collection. -- Enable scoped boards for Early Adopters. -- Account shared runner minutes to top-level namespace. -- Geo - Ensure that LFS object deletions are communicated to the secondary. -- Disable file attachments for epics. - -### Other (1 change) - -- Document a failure mode for large repositories in Geo. !3500 - - -## 10.2.1 (2017-11-22) - -- No changes. - -## 10.2.0 (2017-11-22) - -### Fixed (17 changes) - -- Geo - Does not move projects backed by hashed storage when handling renamed events. !3066 -- Geo: Don't sync disabled project wikis. !3109 -- Reconfigure the Geo tracking database pool size when running as Sidekiq. !3181 -- Geo - Ensures that leases were returned. !3241 -- Fix (un)approver names not being shown in plaintext emails. !3266 -- Add post-migration to drain all Geo related redis queues. !3289 -- Prevent the Geo log cursor from running on primary nodes. !3411 -- Reduce the number of Elasticsearch client instances that are created. !3432 -- Fix generated clone URLs for wikis on Geo secondaries. !3448 -- Remove duplicate delete button in epic. -- Fix: Failed to rebase MR from forked repo. -- Fix: Geo API bug. Statistic is not collected when prometheus is disabled. -- Geo - Ensure that repository deletions in a primary node are correctly deleted in a secondary node. -- Geo: Fix handling of nil values on advanced section in admin screen. -- Redirect to existing group boards using old URL if there is no subgroup called 'boards'. -- Geo - Allow Sidekiq to retry failed jobs to rename project repositories. -- Geo: Ensure database is connected before attempting to check for secondary status. - -### Changed (4 changes) - -- Add project actions in Audit events. !3160 -- Add group actions in Audit events. !3176 -- Geo: Don't retry repositories or files until everything has been backfilled. !3182 -- Improve Codeclimate UI. - -### Performance (1 change) - -- Reduce the quiet times between scheduler runs on Geo secondaries. !3185 - -### Added (20 changes, 1 of them is from the community) - -- Add new push rule to enforce that only the author of a commit can push to the repository. !3086 -- Make the maximum capacity of Geo backfill operations configurable. !3107 -- Mirrors can now hard fail, keeping them from being retried until a project admin takes action. !3117 -- View/edit epic at group level. !3126 -- Add worker to prune the Geo Event Log. !3172 -- julian7 Add required_groups option to SAML config, to restrict access to GitLab to specific SAML groups. !3223 (Balazs Nagy) -- Geo: Expire and resync attachments from renamed projects in secondary nodes when using legacy storage. !3259 -- On Secondary read-only Geo Nodes now a flash banner is shown on all pages. !3260 -- Make GeoLogCursor Highly Available. !3305 -- Allow Geo repository sync over HTTPS. !3341 -- Allow persisting board configuration in order to automatically filter issues. -- Improve error handling. -- Add epics list and add epics to nav sidebar. -- Introduce EEU lincese with epics as the first feature. -- Add ability to create new epics. -- Add sidebar for epic. -- Add delete epic button. -- Allow admins to globally disable all remote mirrors from application settings page. -- Add support for logging Prometheus metrics for Geo. -- Use PostgreSQL FDW for Geo downloads. - -### Other (2 changes, 1 of them is from the community) - -- Suppress MergeableSelector warning candidates in EE-only files. !3225 (Takuya Noguchi) -- Enhance the documentation for gitlab-ctl replicate-geo-database. !3268 - - -## 10.1.7 (2018-01-18) - -- No changes. - -## 10.1.6 (2018-01-11) - -### Security (2 changes) - -- Fix LDAP external user/group bug on first sign in. -- Deny persisting milestones from outside project/group scope on boards. - - -## 10.1.5 (2017-12-07) - -- No changes. - -## 10.1.4 (2017-11-14) - -- No changes. - -## 10.1.3 (2017-11-10) - -- [FIXED] Fix: Failed to rebase MR from forked repo. - -## 10.1.2 (2017-11-08) - -- [SECURITY] Fix vulnerability that could allow any user of a Geo instance to clone any repository on the secondary instance. -- [SECURITY] Geo JSON web tokens now expire after two minutes to reduce risk of compromise. - -## 10.1.1 (2017-10-31) - -- [FIXED] Fix LDAP group sync for nested groups e.g. when base has uppercase or extraneous spaces. !3217 -- [FIXED] Geo: read-only safeguards was not working on Secondary node. !3227 -- [FIXED] fix height of rebase and approve buttons. -- [FIXED] Move group boards routes under - and remove "boards" from reserved paths. - -## 10.1.0 (2017-10-22) - -- [SECURITY] Prevent Related Issues from leaking confidential issues. !541 -- [FIXED] Geo - Selective replication allows admins to select any groups. !2779 -- [FIXED] Fix CSV export when filtering issues by multiple labels. !2852 -- [FIXED] Impersonation no longer gets stuck on password change. !2904 -- [FIXED] Mirroring to remote repository no longer fails after a force push. !2919 -- [FIXED] Fix a merge request validation error on forked projects. !2932 -- [FIXED] Fix an error reporting some failures in the elasticsearch indexer. !2998 -- [FIXED] Fix a Geo node validation, preventing admins from locking themselves out. !3040 -- [FIXED] Find stuck scheduled import jobs and also mark them as failed. !3055 -- [FIXED] Fix removing the username from the git repository URL for pull mirroring. !3060 -- [FIXED] Prevent failed file syncs from stalling Geo backfill. !3101 -- [FIXED] Fix reading the status of a secondary Geo node from the primary. !3140 -- [FIXED] Always allow the default branch as a branch name. !3154 -- [FIXED] Show errors when rebase onto target branch fails in the UI. -- [FIXED] Fix base link for issues on group boards. -- [FIXED] Don't create todos for old issue assignees. -- [FIXED] Geo: Fix attachments/avatars saving to the wrong directory. -- [FIXED] Save Geo files to a temporary file and rename after success. -- [FIXED] Fix personal snippets not downloading in Geo secondaries. -- [FIXED] Geo: Limit the huge cross-database pluck for LFS objects and attachments. -- [CHANGED] Schedule repository synchronization when processing events on a Geo secondary node. !2838 -- [CHANGED] Create idea of read-only database and add method to check for it. !2954 -- [CHANGED] Remove the backoff delay from Geo repository sync. !3009 -- [CHANGED] Improves visibility of deploy boards. -- [CHANGED] Improve performance of rebasing by using worktree. -- [ADDED] Add suport for CI/CD pipeline policy management. !2986 -- [ADDED] Add LDAP synchronization based on filter for GitLab groups. -- [OTHER] Add Geo rake task descriptions. !2925 -- [OTHER] Improve logging output for several Geo background workers. !2961 -- [OTHER] Add partial index on push_rules.is_sample. -- Add new push rule to reject unsigned commits. !2913 - -## 10.0.7 (2017-12-07) - -- No changes. - -## 10.0.5 (2017-11-03) - -- [FIXED] Find stuck scheduled import jobs and also mark them as failed. !3055 -- [FIXED] Fix removing the username from the git repository URL for pull mirroring. !3060 -- [FIXED] Fix base link for issues on group boards. -- [FIXED] Move group boards routes under - and remove "boards" from reserved paths. -- [FIXED] Geo: Fix attachments/avatars saving to the wrong directory. - -## 10.0.4 (2017-10-16) - -- [SECURITY] Prevent Related Issues from leaking confidential issues. !541 -- [SECURITY] Escape user name in filtered search bar. - -## 10.0.3 (2017-10-05) - -- [FIXED] Rewrite Geo database rake tasks so they operate on the correct database. !3052 -- [FIXED] Show group tab if member lock is enabled. -- [FIXED] File uploaders do not perform hard check, only soft check. -- [FIXED] Only show Turn on Service Desk button when user has permissions. -- [FIXED] Fix EE delta size check handling with annotated tags. - -## 10.0.2 (2017-09-27) - -- [FIXED] Send valid project path as name for Jira dev panel. -- [FIXED] Fix delta size check to handle commit or nil objects. - -## 10.0.1 (2017-09-23) - -- No changes. - -## 10.0.0 (2017-09-22) - -- [SECURITY] Check if LDAP users are in external groups on login. !2720 -- [FIXED] Fix typo for `required` attribute. !2659 -- [FIXED] Fix global code search when using negation queries. !2709 -- [FIXED] Fixes activation of project mirror when new project is created. !2756 -- [FIXED] Geo - Whitelist LFS requests to download objects on a secondary node. !2758 -- [FIXED] Fix Geo::RepositorySyncWorker so attempts to sync all projects if some are failing. !2796 -- [FIXED] Fix unsetting credentials data for pull mirrors. !2810 -- [FIXED] Geo: Gracefully catch incorrect db key on primary. !2819 -- [FIXED] Fix a regression breaking projects with an empty import URL. !2824 -- [FIXED] Fix a 500 error in the SSH host keys lookup action. !2827 -- [FIXED] Handle Geo DB replication lag as 24h/day & 7d/week. !2833 -- [FIXED] Geo - Add a unique index on project_id to the Geo project_registry table. !2850 -- [FIXED] Improve Geo repository sync performance for larger databases. !2887 -- [FIXED] Ensure #route_setting is available before calling it. !2908 -- [FIXED] Fix searching by assignee in the service desk. !2969 -- [FIXED] Fix approvals before merge error while importing projects. -- [FIXED] Fix the gap in approvals in merge request widget. -- [FIXED] Fix branch name regex not saving in /admin/push_rule config. -- [FIXED] Fix merges not working when project is not licensed for squash. -- [CHANGED] Add Time estimate and Time spend fields in csv export. !2627 (g3dinua, LockiStrike) -- [CHANGED] Improve copy so users will set up SSH from DB for Geo. !2644 -- [CHANGED] Support `codequality` job name for Code Quality feature. !2704 -- [CHANGED] Support Elasticsearch v5.1 - v5.5. !2751 -- [CHANGED] Geo primary nodes no longer require SSH keys. !2861 -- [CHANGED] Show Geo event log and cursor data in node status page. -- [CHANGED] Use a logger for the artifacts migration rake task. -- [ADDED] LFS files can be stored in remote object storage such as S3. !2760 -- [ADDED] Add LDAP sync endpoint to Groups API. !2785 -- [ADDED] Geo - Log a repository created event when a project is created. !2807 -- [ADDED] Show geo.log in the Admin area. !2845 -- [ADDED] Commits integration with Jira development panel. -- [OTHER] Add missing indexes to geo_event_log table. !2836 -- [OTHER] Geo - Ignore S3-backed LFS objects on secondary nodes. !2889 -- Fix a bug searching private projects with Elasticsearch as an admin or auditor. !2613 -- Don't put the password in the SSH remote if using public-key authentication. !2837 -- Support handling of rename events in Geo Log Cursor. -- Update delete board button text color to red and fix hover color. -- Search for issues with multiple assignees. -- Fix: When MR approvals are disabled, but approvers were previously assigned, all approvers receive a notification on every MR. -- Add group issue boards. -- Ports style changes fixed in a conflict in ce to ee upstream to master for new projects page. diff --git a/changelogs/archive-11-ee.md b/changelogs/archive-11-ee.md deleted file mode 100644 index a8459fc34ed..00000000000 --- a/changelogs/archive-11-ee.md +++ /dev/null @@ -1,1731 +0,0 @@ -## 11.11.8 - -- No changes. - -## 11.11.7 - -### Security (5 changes) - -- Don't override approval rules if not allowed. -- Grant admin note permissions in epics for maintainers and owners. -- Prevent an XSS vector in the add approver email. -- Ensure the Insights configuration project is part of the group and is accessible to the current user. -- Make vulnerability feedback invisible if limited access to repo. - - -## 11.11.4 (2019-06-26) - -### Fixed (1 change) - -- Use quarantine size to check push size against repository size limit. !14269 - - -## 11.11.3 (2019-06-10) - -### Fixed (1 change) - -- Fix create mr from vuln modal regression. !13524 - - -## 11.11.2 (2019-06-04) - -### Performance (1 change) - -- Geo - Does not apply selective sync restrictions while counting registries on the tracking database. !13257 - - -## 11.11.0 (2019-05-22) - -### Security (1 change) - -- Destroy project remote pull mirrors instead of disabling. !10355 - -### Fixed (26 changes) - -- Add missing endpoint for user information to GitHub API. !10482 -- Remove slack slash commands double up. !10555 -- Display Scoped Labels on Issue Board. !10669 -- Ensure custom group template feature is available only for groups on gold and silver. !10678 -- Fix removing and updating insights config, and foreign key constraints. !11030 -- Geo: Fix broken button to delete orphaned upload registries through Admin. !11156 -- Resolve: Epic labels in system notes point to the epic itself. !11234 -- Geo: Fix: Project sync failures usually double-increment *_retry_count. !11381 -- Fix unauthenticated GET of public Epics API. !11485 -- Hide ScopedBadge overflow notes. !11548 -- Fixes a CI failure in jest. !11586 -- Fix error when reordering/deleting subgroup epics. !11837 -- Fix some filter bar tokens not showing up when multiple assignees are enabled. !11939 -- Geo: Fix OAuth authentication with relative URLs. !11976 -- Fix for not being able to remove the last namespace/project from elasticsearch limited namespaces/projects. !11989 -- Fix approvals project settings section when merge requests disabled. !12070 -- Enable alert bot to use quick actions. !12127 -- Geo: Remove counts over geo_event_log table. !12146 -- Geo: Prevent RegistryFinder calls on the primary. !12183 -- Fix placement of LDAP icon in members list. !12304 -- Use path instead of a URL for accessing approval settings. !12414 -- Remove non-semantic use of `.row` in member listing controls. !12466 -- Force tag overwrite on mirror update. !12491 -- Fixes the feedback paths on the project security dashboard. !12849 -- Fixed starting a review on images. -- Fix updating board attributes through API. - -### Changed (13 changes) - -- Group SAML enforcement requires active SSO session for group access. !10034 -- Geo: Rename "Disable" to "Pause|Resume" (Admin > Geo Nodes). !10297 -- Upgrade group security dashboard to use gitlab-ui line chart. !10479 -- Geo - Implement selective sync support for the LFS objects FDW queries. !10757 -- Documentation : Improve selective sync documentation. !11072 -- Geo: Implement selective sync support for the FDW queries to count the number of attachments to sync. !11107 -- Allowing Elasticsearch indexing gap recovering. !11408 -- Geo - Implement selective sync support for the FDW queries to count attachments. !11518 -- Geo - Implement selective sync support for the FDW queries to find attachments. !11544 -- Geo - Add selective sync support for the job artifacts FDW queries. !11892 -- Fetch all available groups when creating MR approval rule. !12096 -- SSO enforcement requires active SAML session for web access to project resources. !12109 -- Perform LDAP group sync on sign in only for new users. - -### Performance (3 changes) - -- Swap conditions to reduce frequency of database query. !11217 -- Add index for mirror_user_id to projects table. !11422 -- Geo - Improve performance of the selective sync cleanup worker. !11998 - -### Added (27 changes, 2 of them are from the community) - -- Proxy websocket requests to build services. !9723 -- Add dependency proxy for containers. !9750 -- Added gitlab:elastic:projects_not_indexed rake task. !9854 (Jason Colyer) -- Added Snowplow tracking to notes. !10104 -- Support multiple assignees for merge requests. !10161 -- Add UI to enable/disable a dependency proxy on a group level. !10386 -- Let the GitLab Alert bot open incident issues. !10460 -- Remove feature flag `:incident_management`. !10569 -- Allow multiple secondary nodes behind a load balancer. !10755 -- Copy LFS objects from pull mirror. !10779 -- Geo: Inform users about current replication lag in the UI on secondaries. !10807 -- Autosave description in epics. !10844 -- Keep track of packages_file in ProjectStatistics. !11020 -- Adds a dismissal item to the vulnerability modal. !11028 -- Add project level config for merge train. !11065 -- Support pie charts in Insights. !11186 -- Create ActiveRecordModel and table for Merge Train feature. !11204 -- Allow adding GitLab license at installation time. !11244 -- Added ZAP Full Scan support for DAST. !11269 -- Add created_at and updated_at filters to Epics API. !11315 (jramsay) -- Add API to retrieve security vulnerabilities. !11539 -- Basic Rails implementation for BOM. !11613 -- Add Frontend Store and UI For Environments Dashboard MVC. !11702 -- Track clicks on uninstall button for kubernetes implementation. !12048 -- Add Vulnerabilities API scoping: severity, confidence, and dismissal. !12076 -- Alert users that protected environments affects feature flags. !12168 -- Support creating a new child epic from the API. - -### Other (8 changes, 1 of them is from the community) - -- Improve project settings page layout and UX. !10388 -- Uses the more explicit vulnerability feedback endpoints on the front end. !10461 -- Automatically enable multiple MR assignees feature flag. !10558 -- Move geo_log_cursor binary to the ee folder. !10821 -- Move sidekiq-cluster to ee/bin. !11001 -- Move ee-specific code from boards/components/issue_card_inner.vue. !11032 (Roman Rodionov) -- Make all billing cards fit in view. !11602 -- Extracted EE specific lines for spec/javascripts/vue_mr_widget/mock_data.js. !11847 - - -## 11.10.8 (2019-06-27) - -- No changes. -### Security (2 changes) - -- Gate MR head_pipeline behind read_pipeline ability. -- Do not allow localhost urls in GitHub Integration. - - -## 11.10.7 (2019-06-26) - -### Fixed (1 change) - -- Use quarantine size to check push size against repository size limit. !14271 - - -## 11.10.6 (2019-06-04) - -### Fixed (5 changes, 1 of them is from the community) - -- Fix removing and updating insights config, and foreign key constraints. !11030 -- Fix the group's epic page. The Paste issue link placeholder shown as 'undefinedundefinedundefined' in Chinese environment. And the error message showed nothing. !11312 (wdmcheng) -- Fix approvals project settings section when merge requests disabled. !12070 -- Use path instead of a URL for accessing approval settings. !12414 -- Fix relative url root issues with license management. !12488 - - -## 11.10.4 (2019-05-01) - -### Fixed (1 change, 1 of them is from the community) - -- Fix error retrieving licenses when relative URL in use. !11717 (Hiroyuki Sato) - -### Changed (1 change) - -- [Insights] Change the default weeks period limit to 12. !11498 - - -## 11.10.3 (2019-04-30) - -- No changes. - -## 11.10.2 (2019-04-25) - -### Security (1 change) - -- Handle race condition when creating an MR approval. - - -## 11.10.1 (2019-04-23) - -### Fixed (4 changes) - -- Fix approval rules when used with relative url root. !10819 -- Fix add/remove pipeline dashboard issue. !11029 -- Fix JWT token check when repository does not exist. !11033 -- Fix preventing approval of merge requests by an author. !11263 - -### Changed (2 changes) - -- Improve SAML settings with validation, design, and help text. !10450 -- Use a single color for the Insights time series bar charts. !11076 - - -## 11.10.0 (2019-04-22) - -### Security (3 changes) - -- Check label_ids parent when updating issue board. -- Geo - Improve security while redirecting user back to the secondary after a logout & re-login via the primary. -- Expose only basic group attributes in boards API. - -### Fixed (25 changes) - -- User Statistics in Admin Dashboard now a button. !8807 -- Fix misalignment of dropdowns in edit board modal of issue boards. !9909 -- Geo: Support archive recovery or streaming replication types in health check. !9935 -- Geo: Only display Geo-specific clone instructions button on a Geo Secondary node. !10007 -- Resolve Deletion of vulnerability-associated issuables prevents security report from loading. !10016 -- Elasticsearch API: Fix project_id showing as 0 for all blobs. A reindex will be required. !10020 -- Make editing the filters in the Group Security Dashboard easier. !10138 -- Geo - Reset the verification checksum after deployment refs are created. !10160 -- Search snippets via elasticsearch. !10325 -- Fixed bug preventing users from adding child epics with multiple children. !10331 -- Fix merge requests being added to Jira Development Panel. !10342 -- Fix authors of merge commits being excluded from approving an MR. !10359 -- Fix ChatOps Slack responder for gitlab.com. !10416 -- Fix sorting by priority with filtering by approvers. !10446 -- Make UpdateRepositoryStorageService idempotent. !10457 -- Fix broken links to protected environments on the CI/CD settings page. !10470 -- Notify owner that group is invalid when LDAP "Sync now" fails. !10509 -- Fix user agent string for Hosted Jira. !10545 -- Fix query used to calculate number of users over license. !10556 -- Fix pipeline bridge serialization error. !10565 -- Correct path to cluster health partial. !10638 -- Ensure Insights charts show all periods even if there are no data. !10733 -- Hide scoped labels help text without corresponding license. !10737 -- Fix merge request operation failure (e.g. assigning user) when project approvers required increases. !10766 -- Include subgroups when finding Insights issuables. !10801 - -### Changed (27 changes) - -- Move project search bar into modal dialog on Operations Dashboard page. !9260 -- Geo - Add selective sync support for the FDW queries to count synced registries. !9445 -- Geo - Add selective sync support for the FDW queries to count failed registries. !9527 -- Convert enable group authentication checkbox to toggle button. !9816 -- Geo: Limit max backoff time by 1 hour, instead of 7 days. !9893 -- Documented Guide to using Geo in HA with RDS cross-region replicas. !9985 -- Dynamically resize security group dashboard vuln graph. !10028 -- Add self approval of merge requests setting to merge requests approvals API. !10050 -- elasticsearch: Switch from LZ4 to DEFLATE compression. !10072 -- Geo - Store the invalid checksum when we have a mismatch. !10101 -- Add requested resources to cluster health metrics. !10135 -- Allow self-approvals in fallback approval rules. !10218 -- Geo - Add selective sync support for FDW queries to find verified registries. !10255 -- Add file line number to vuln modal. !10265 -- Geo - Add selective sync support for FDW queries to find registries where verification has failed. !10266 -- Enforce Geo JWT tokens scope for repository sync. !10303 -- Display link to review note in text email, similar to HTML email. !10401 -- Geo - Add selective sync support for the FDW queries to find mismatch registries. !10434 -- Geo - Add selective sync support for queries to find registries retrying verification. !10436 -- Geo - Add selective sync support for the FDW queries to find registries to verify. !10438 -- Improve DAST location fingerprints. !10487 -- Change order in dast location fingerprint. !10487 -- Geo: Add selective sync support for the FDW queries to find unsynced projects. !10522 -- Enrich container scanning with more data on the frontend. !10526 -- [Geo] Don't mark sync as successful if repo does not exist because of some problems. !10578 -- Move operations dashboard from Ultimate to Premium. !10586 -- Support multiple chart per page for Insights. - -### Performance (3 changes) - -- Avoid a Gitaly N+1 when loading commits for Elasticsearch search results. !9760 -- Geo: Optimize repository and wiki verification counts. !9939 -- Avoid N+1 when loading Code search results with Elasticsearch enabled. !10394 - -### Added (31 changes, 1 of them is from the community) - -- Add approval and unapproval webhooks. !8742 -- Adding pipelines to the operations dashboard. !9197 -- Add operations dashboard usage counts to usage data. !9291 -- Automatically deprovision and update users from a configured identity via SCIM. !9388 -- Add SCIM Token section to SAML SSO Settings. !9619 -- Use merge request MERGE ref for attached merge request pipelines. !9622 -- Geo: Support syncing over non-publicly accessible URLs. !9634 -- Prevent merge if the merge request pipeline is stale. !9643 -- Block possibility to change email for users with group managed account. !9712 -- Geo admin panel for upload verification. !9720 -- Geo: Create separate models for different registries. !9755 -- Add ability to purchase extra CI minutes. !9815 -- Update Web IDE config to accept ports. !9818 -- Allow per-project and per-group enabling of Elasticsearch indexing. !9861 -- Geo: Help admins diagnose configuration problems. !9988 -- Added MAVEN_CLI_OPTS env var support to License Management CI job. !10012 -- Show DAST vulnerabilities in the Group Security Dashboard. !10271 -- Show DAST in Group Security Dashboard Back-End. !10277 -- Removing pipeline dashboard feature flag. !10302 -- Update user name upon LDAP sync. !10316 (@icode1) -- Collect usage of pod logs feature. !10370 -- Added metrics reports widget to merge request page. !10380 -- IP whitelisting for Geo-enabling functionality in the primary. !10383 -- Persist in the URL the page and day range of vulnerabilities viewed in the Group Security Dashboard. !10402 -- Add 'Metrics' job artifact report type. !10452 -- Create a user via SCIM. !10456 -- Geo: Display secondary replication lag on console (if lag > 0 seconds). !10471 -- Add Roadmap to Epic page. !10488 -- Expose merge request pipeline parameters for MR widget. !10502 -- Allow instance admins to link all projects to Jira DVCS. !10541 -- Added mutually exclusive key value labels. - -### Other (4 changes) - -- Simplify admin instance licenses page. !9785 -- Extract EE specific files and externalize strings in admin application settings. !9930 -- Add specs for coerced labels parameter in Epics API. !9932 -- Improve project service desk settings. !10381 - - -## 11.9.12 (2019-05-30) - -### Security (3 changes, 1 of them is from the community) - -- Filter relative links in wiki for XSS. (kerrizor) -- Fix XSS in Ancestor tooltip title. -- Ignore out of range epic IDs. - - -## 11.9.10 (2019-04-26) - -### Security (1 change) - -- Handle race condition when creating an MR approval. - -### Fixed (1 change, 1 of them is from the community) - -- Fix the group's epic page. The Paste issue link placeholder shown as 'undefinedundefinedundefined' in Chinese environment. And the error message showed nothing. !11312 (wdmcheng) - - -## 11.9.9 (2019-04-23) - -### Fixed (1 change) - -- Fix approval rules when used with relative url root. !10819 - - -## 11.9.8 (2019-04-11) - -### Fixed (1 change) - -- Fix sorting by priority with filtering by approvers. !10446 - - -## 11.9.7 (2019-04-09) - -### Security (1 change) - -- Expose only basic group attributes in boards API. - - -## 11.9.6 (2019-04-04) - -### Fixed (3 changes) - -- Fix project approval rule with only private group being considered as approved when override is allowed. !10356 -- Fix approval rule sourcing from forked MR. !10474 -- Guard against ldap_sync_last_sync_at being nil. !10505 - -### Added (1 change) - -- Add Insights frontend to retrieve and render chart. !9856 - - -## 11.9.5 (2019-04-03) - -### Fixed (3 changes) - -- Fix project approval rule with only private group being considered as approved when override is allowed. !10356 -- Fix approval rule sourcing from forked MR. !10474 -- Guard against ldap_sync_last_sync_at being nil. !10505 - -### Added (1 change) - -- Add Insights frontend to retrieve and render chart. !9856 - - -## 11.9.3 (2019-03-27) - -### Security (1 change) - -- Check label_ids parent when updating issue board. - - -## 11.9.2 (2019-03-26) - -### Security (2 changes) - -- Geo - Improve security while redirecting user back to the secondary after a logout & re-login via the primary. -- Check label_ids parent when updating issue board. - - -## 11.9.1 (2019-03-25) - -### Fixed (1 change) - -- Fix date save for Epic to reflect on UI immediately after save. !10321 - - -## 11.9.0 (2019-03-22) - -### Security (4 changes) - -- Prevent Group SAML authorizing sign in without prior user approval. -- Respect group membership lock when importing a member from another group. -- Remove the possibility to share a project with a group that a user is not a member of. -- Prevent SAML access when disabled by group admin on GitLab.com. - -### Fixed (22 changes) - -- Allow assigning Prometheus alerts to multiple environments. !7361 -- Fix repo pushes while initial Elasticsearch indexing not permitting initial indexing to complete. !9478 -- Fix vulnerability occurrence scope to trailing 30 days. !9494 -- Skip whitelisted vulnerabilities in Container Scanning reports. !9528 -- Fix npm registry for yarn. !9599 -- Renders inline downstream & upstream pipelines. !9627 -- Prunes whole Geo event when there's only a primary. !9630 -- Fix alert notifications for non-public projects. !9636 -- Fix 500 error when visiting merged merge request. !9648 -- Allow plus symbol in maven package version. !9657 -- Show commands applied message when promoting issues to epics. !9669 -- Ensure comments from merge request review is displayed in the same order as user commenting order. !9684 -- Geo - Fix selective sync by namespace. !9732 -- Fix bridge jobs than can be hidden keys too. !9796 -- Fix approval-related UI showing up in free plan. !9819 -- Add 'No approvals required' view to approval rules (behind feature flag). !9899 -- Fix npm package install with a dot in the name. !9900 -- GroupSAML for GitLab.com prevents blank NameID. !9907 -- Fix protected environment initializer. !10150 -- Fix SSH pull mirrors not working. !10272 -- Fix HTML spew in Locked Files page. -- Fixes Broken new/edit feature flag form. - -### Changed (9 changes, 1 of them is from the community) - -- Remove authorization from /managed_licenses. !8541 -- Consider dismissed items in security reports summary. !9275 -- Add backend for cross-project pipeline dashboard MVC. !9396 -- Create merge request approval rule for each code owner entry. !9455 -- Split severity and confidence values for vulnerabilities. !9495 -- Enforce Geo JWT tokens scope for file uploads and Geo API. !9502 -- Update cluster health empty state. !9540 (George Tsiolis) -- Add extra graph spacing on the Security Dashboard Group Vulnerability Chart. !9780 -- Add Kerberos URL back to clone panel. !9840 - -### Performance (1 change) - -- Eliminate N+1 queries in Epics API. !9897 - -### Added (23 changes, 1 of them is from the community) - -- Enabled setting the Security Dashboard as a default view for groups. !7889 -- Add reordering of child epics. !9283 -- Create MR from Vulnerability Solution. !9326 -- Create pool repositories on Geo secondaries. !9428 -- Add date range for security dashboard graph. !9446 -- Add filtering merge requests by approvers. !9468 -- Add audit log for managing feature flags. !9487 -- Add DELETE package API endpoint. !9623 -- Enrich container scanning report. !9641 -- Adapt feedback for Container Scanning vulnerabilities. !9655 -- Enforce merge request approvals from code owners. !9656 -- Added vendored CI/CD template for Dependency Scanning job. !9660 -- Add Insights config behind the "group_insights" feature flag. !9665 -- Add single package API endpoint. !9667 -- Added GET /licenses and DELETE /license/:id endpoints. !9733 -- Add container scanning results to group security dashboard. !9736 -- Add an incident management settings form and create issues from alertmanager alerts. !9773 -- Add API for reordering child epics. !9781 -- Allow guests to comment on epics. !9783 -- Display Recent Boards in Board switcher. !9808 -- Add Ancestors in Epic Sidebar. !9817 -- Add vendored templates for SAST, DAST, Container Scanning and License Management job definitions. !9921 -- Add realtime validation for user fullname and username on validation. !25017 (Ehsan Abdulqader @EhsanZ) - -### Other (12 changes, 1 of them is from the community) - -- Use export-import svg from gitlab-svgs. !9453 -- Renames 'revert dismissal' to 'undo dismiss' on the Group security dashboard. !9500 -- Using positional arguments in request specs have been deprecated. !9506 (Jasper Maes) -- Splits the severity and confidence constants in the group security dashboard frontend. !9535 -- Add Gitlab.com gold trial callout to /billings. !9611 -- Update project settings section titles and info. !9614 -- Improve visual consistency of values in vulnerability modal. !9616 -- Limit Group Security Dashboard to selected types of report. !9626 -- Make related issues components reusable. !9730 -- sidekiq-cluster: put each sidekiq in a new pgroup. !9775 -- License Management: Load up to a 100 licenses per default. !9913 -- Adds documentation for autoremediation. !10054 - - -## 11.8.10 (2019-04-30) - -- No changes. - -## 11.8.3 (2019-03-19) - -- No changes. - -## 11.8.2 (2019-03-13) - -### Fixed (4 changes) - -- Fix 500 error when visiting merged merge request. !9648 -- Fix bridge jobs than can be hidden keys too. !9796 -- Fix approval-related UI showing up in free plan. !9819 -- Add 'No approvals required' view to approval rules (behind feature flag). !9899 - - -## 11.8.0 (2019-02-22) - -### Security (2 changes) - -- Sanitize user full name to clean up any URL to prevent mail clients from auto-linking URLs. !790 -- Hide personal access tokens from other maintainers. - -### Fixed (28 changes, 1 of them is from the community) - -- Add keyboard navigation to issue board switcher and remove duplicate scroll bar. !8591 -- Geo: Always update the default branch on the secondary. !9064 -- Fix public group milestones not shown in epics autocomplete. !9068 -- Check hosts file for nameserver IP. !9071 -- Fixes the icon for fixed vulnerability in Container Scanning report. !9120 -- Return 400 error instead of 500 when upload maven package with invalid version. !9125 -- Fix mirrors that have invalid SSH public auth mode set. !9135 -- Hide packages without version from UI. !9151 -- Remove duplicate "Operations Dashboard" header/breadcrumb. !9152 (Nathan Friend) -- Create UTC date in subscription table. !9166 -- Display epic icon in related epics list. !9166 -- Don't validate Jenkins username if password is blank. !9198 -- Don't show Alert widget for non-licensed users. !9224 -- Group security dashboard: Fix overflow for Vulnerabilities with long titles. !9271 -- Geo - Respect shard restriction while loading new resources to verify on the Geo secondary node. !9343 -- When cleaning up repositories, ensure orphaned entries do not remain in the tracking database. !9344 -- Geo - Make sure project does not meet selective sync rule before deleting it. !9345 -- Fix alert notification emails are not being sent. !9393 -- Fix alert notifications for managed Prometheus. !9402 -- Replacing old blob methods in ElasticSerach module. !9418 -- Add checks to prevent cycling hierarchy in epics structure. !9438 -- Fix bug where users could not be added in protected branch rules. !9474 -- Avoid SAML required_groups indiscriminately unblocking users on login. !9489 -- Resolve Cannot scroll forwards in time for roadmap view. !9530 -- Fix unleash server side cannot return feature flags. !9532 -- Show alerts settings only for manual configuration. !9538 -- Fix access to constant Gitlab::RepositorySizeError. !9579 -- Clear our import data credentials when adding new mirrors. !24339 - -### Deprecated (1 change) - -- Geo: Show hashed storage warnings on geo nodes page. !8433 - -### Changed (14 changes) - -- Prevent commit authors from self approvaling merge requests. !9007 -- Add docs link to explain legacy and new email format. !9020 -- Recursively expands upstream and downstream pipelines. !9073 -- Geo: Don't show external link icon on current node. !9130 -- Issues created from vulnerabilities are now confidential by default. !9157 -- Validate custom metrics. !9178 -- Change paginate number to 20. !9213 -- Convert buttons to button group on Group Security Dashboard. !9220 -- Make it possible to edit Geo primary through API. !9328 -- Geo: Handle repository and wiki sync separately in Geo::ProjectSyncWorker. !9360 -- Geo: Add settings page empty state. !9415 -- Renders New and Edit forms for feature flag in Vue and allow to define scopes. -- Improves title in feature flags empty states. -- Adds environment column to the feature flags page. - -### Performance (5 changes) - -- Solve a N+1 issue in Groups::AnalyticsController. !4508 -- Refactored Epic app in Vuex for better performance and maintenance. !9361 -- Optimize slow pipelines.js response. !9387 -- Disable commit checks when no push rules are active. !9569 -- Enable some frozen string in ee/lib. - -### Added (22 changes, 1 of them is from the community) - -- Elasticsearch: Support for Gitaly. !7434 -- Canary deployment callout on the environments page. !8457 -- Allow to filter notes in epics. !8978 -- Multiple blocking merge request approval rules (behind feature flag). !9001 -- Add support for auto-expanding Roadmap timeline on horizontal scroll. !9018 -- Added Snowplow tracking to issues import. !9067 -- Persist Group Level Security Dashboard state in URL. !9108 -- Multiple environments support for feature flags (Unleash API standpoint). !9110 -- Shows the approval given/required counts and its status for each MR when viewing the Merge Requests page. !9142 (Glavin Wiechert, Andy Steele) -- Support CURD operation for feature flag scopes. !9182 -- Add epic links API endpoints. !9188 -- Store DAST scan results in the database. !9192 -- Add LDAP integration to smartcard authentication. !9235 -- Allow SSO enforcement in group settings for GitLab.com. !9240 -- Add API endpoint for project packages. !9259 -- Add upvote/downvote information to epics API. !9264 -- Resolve Implement access controls when SSO enforcement enabled. !9270 -- Add package files API endpoint. !9305 -- Support alerts from external Prometheus servers. !9334 -- Cross-project pipelines support in .gitlab-ci.yml. !9374 -- Enable mails for external alerts. !9457 -- Moving repository across shards leaves the pool. - -### Other (13 changes, 7 of them are from the community) - -- Gather JIRA DVCS integration usage data. !8949 -- ActiveRecord::Migration -> ActiveRecord::Migration[5.0] for AddAlertManagerTokenToClustersApplicationPrometheus and EnqueuePrometheusUpdates. !9049 (Jasper Maes) -- Track navbar links in Snowplow. !9059 -- Adds snowplough tracking for the group security dashboard filters. !9119 -- Support Ajax endpoints for FeatureFlagsController. !9127 -- Fix deprecation: Passing an argument to force an association to reload is now deprecated. !9140 (Jasper Maes) -- Fix deprecation: #original_exception is deprecated. Use #cause instead. !9141 (Jasper Maes) -- Uses GLDropdown for licence management. !9237 -- Replace deprecated render text. !9346 (Jasper Maes) -- Fix several ActionController::Parameters deprecations. !9347 (Jasper Maes) -- Fix deprecation: uniq is deprecated and will be removed from Rails 5.1. !9348 (Jasper Maes) -- Turn on rubocop for frozen string in ee/. (gfyoung) -- Creates an EE component for the pipeline graph. - - -## 11.7.12 (2019-04-23) - -- No changes. - -## 11.7.11 (2019-04-09) - -### Security (1 change) - -- Expose only basic group attributes in boards API. - - -## 11.7.10 (2019-03-28) - -### Security (1 change) - -- Check label_ids parent when updating issue board. - - -## 11.7.8 (2019-03-26) - -### Security (2 changes) - -- Geo - Improve security while redirecting user back to the secondary after a logout & re-login via the primary. -- Check label_ids parent when updating issue board. - - -## 11.7.7 (2019-03-19) - -- No changes. - -## 11.7.5 (2019-02-05) - -### Fixed (2 changes) - -- Fix Kerberos authentication. !9390 -- Fix background migration error when project repository is missing. !9392 - - -## 11.7.2 (2019-01-29) - -### Security (6 changes) - -- Avoid leaking unauthorized approver group members. !766 -- Sanitize user full name to clean up any URL to prevent mail clients from auto-linking URLs. !791 -- Check access rights when creating/updating ProtectedRefs. -- Fix locked file visibility issue for private repositories. -- Filter out non-project member approvers. -- Remove HTTP POST in JIRA OAuth access_token endpoint. - - -## 11.7.1 (2019-01-28) - -### Security (6 changes) - -- Avoid leaking unauthorized approver group members. !766 -- Sanitize user full name to clean up any URL to prevent mail clients from auto-linking URLs. !791 -- Check access rights when creating/updating ProtectedRefs. -- Fix locked file visibility issue for private repositories. -- Filter out non-project member approvers. -- Remove HTTP POST in JIRA OAuth access_token endpoint. - - -## 11.7.0 (2019-01-22) - -### Security (1 change) - -- Add a shared secret to prevent abuse of the alert endpoint. - -### Fixed (27 changes, 2 of them are from the community) - -- Defaults to feature flags link for Operations entry. !8622 -- Fix error on explore page when logged out due to gold trial callout. !8674 -- Prevents the empty state from showing when the dashboard errors. !8703 -- Allow matching only the repo-root for CODEOWNERS. !8708 -- Fix adding labels to epics using quick actions. !8772 -- Geo: Keep the minimum cursor last event. !8832 -- Reinstate sorting issuable by weight. !8834 -- Geo - Show the proper label for the last repository check run on Geo projects page. !8844 -- Resolve Reorder gitlab:elastic:index rake tasks to ensure wikis and database are completed even if projects error out. !8852 -- Remove dash on issue weight for unauthorized users. !8882 (George Tsiolis) -- Dismiss epic promotion and persist it across reloads. !8885 -- Fix JIRA Development Panel links with subgroups. !8908 -- Remove epic field in sidebar for projects without groups. !8919 -- Remove duplicate padding from issue board switcher. !8928 -- Resolve Ctrl+Enter immediately adds MR comment. !8932 -- Geo: Ignore invalid attributes when updating Geo node status. !8957 -- Fix border-radius for related issues. !8958 (Johann Hubert Sonntagbauer) -- Fix Security Dashboard Header font size. !9011 -- Fix title and description for issue created from a vulnerability. !9022 -- Pseudonymizer: Gracefully handle empty pseudo entries. !9044 -- Fix permission check when creating an issue from a vulnerability. !9055 -- Docfix - broken doc links for Secure/Autodevops features. !9058 -- Fix Error 500 when deleting a pipeline via the API. !9104 -- Uses project_id instead of project on the group security dashboard. !9109 -- Recursively get all of a groups projects. !9205 -- Fix data migration failure if approvals_before_merge is set to too high. !9217 -- Don't remove milestones when moving issues to board backlog from non-milestone list. - -### Changed (5 changes, 1 of them is from the community) - -- Update Geo nodes empty state. !8576 (George Tsiolis) -- Add search field to issue board switcher. !8862 -- Allow downloading package files from UI. !8888 -- Changes to the data model for counts on the Group Security Dashboard. !9035 -- Fix packages UI mentioned only Maven packages support. !9132 - -### Performance (2 changes, 1 of them is from the community) - -- Fix timeout loading Open list when board contains assignee lists. -- Enable some frozen string in ee/lib. (gfyoung) - -### Added (17 changes) - -- Add an instance-level endpoint for downloading maven packages. !8274 -- Add NPM registry support to GitLab packages. !8673 -- Store container scanning CI jobs results into the database. !8797 -- Add a group-level endpoint for downloading maven packages. !8798 -- Add Filtering vulnerabilities in the Group Security Dashboard. !8817 -- Allow to filter Feature Flags. !8821 -- Geo - Show last verification time on Geo projects page. !8845 -- Adds basic filtering to the Group Security Dashboard frontend. !8886 -- Autocomplete issues and MRs in epics. !8936 -- Adds project filtering to the GSD. !8944 -- Allow using TCP for DB load balancing DNS lookups. !8961 -- Add filtering for summary and history on security dashboard. !8972 -- Add solution card to the vulnerability modal. !9030 -- Allows the Group Security Dashboard to select multiple filters. !9031 -- Added Snowplow tracking to issues export. !9045 -- Add support for relationship between epics. !9051 -- Added pagination to epics API endpoint. - -### Other (13 changes, 3 of them are from the community) - -- Promote starting a GitLab.com Gold trial on the dashboard. !6947 -- Adds event tracking to navbar. !7787 -- Update tracing settings to match error tracking settings. !8786 -- Adapt subscriptions page for free plans and trials. !8838 -- Support for new SAST and dependency scanning report format. !8869 -- Remove deprecated ActionDispatch::ParamsParser. !8897 (Jasper Maes) -- Fix deprecation: Comparing equality between ActionController::Parameters and a Hash is deprecated. !8914 (Jasper Maes) -- Removes Notes from GitLab Pseudonymizer config. !8923 -- Add count of projects with tracing enabled to usage ping data. !8940 -- Adds dependency scanning to the report type filters on GSD. !9034 -- Fix deprecation: Using positional arguments in specs for EE spes in spec/. !9040 (Jasper Maes) -- Pass issuable-type in AddIssuableForm. !9111 -- Gather deepest epic relationship data. - - -## 11.6.11 (2019-04-23) - -- No changes. - -## 11.6.10 (2019-02-28) - -### Security (5 changes) - -- Remove the possibility to share a project with a group that a user is not a member of. -- Prevent Group SAML authorizing sign in without prior user approval. -- Prevent SAML access when disabled by group admin on GitLab.com. -- Respect group membership lock when importing a member from another group. -- Ignore out of range epic IDs. - - -## 11.6.9 (2019-02-04) - -- No changes. - -## 11.6.8 (2019-01-30) - -- No changes. - -## 11.6.5 (2019-01-17) - -### Fixed (1 change) - -- Fix Error 500 when deleting a pipeline via the API. !9104 - - -## 11.6.4 (2019-01-15) - -- No changes. - -## 11.6.3 (2019-01-04) - -### Fixed (1 change) - -- Fix instance project templates no longer working. !9019 - - -## 11.6.2 (2019-01-02) - -### Fixed (1 change) - -- Fix issue ID wrapping and avatar counter shrinking in Related Issues list. !8854 - - -## 11.6.1 (2018-12-28) - -### Security (1 change) - -- Add a shared secret to prevent abuse of the alert endpoint. - - -## 11.6.0 (2018-12-22) - -### Security (7 changes) - -- Switch from CBC to GCM for Geo logout tokens. !8518 -- Prevent reporter roles from viewing the Jaeger tracing settings page. -- Sanitize tracing external_urls before saving to DB and when displaying the URL to prevent XSS issues. -- Fix IDOR at /drafts/publish. -- Authorize users when listing board users and milestones. -- Resolve: Guest can set weight of a new issue. -- Fixes XSS with merge request approvers selection. - -### Fixed (27 changes, 2 of them are from the community) - -- Ensure that avatars in approvals have correct tooltip. !6269 -- Geo: Fix push to secondary over SSH for LFS. !8044 -- Don't show packages tab and settings for starter license. !8270 -- Makes the vulnerability name on the Group Security Dashboard a button for better A11y. !8341 -- Used the iid instead of the id for linked issues on the Group Security Dashboard. !8357 -- Show navigation line separator when instance etrics is disabled. !8379 (George Tsiolis) -- Fix project deploy key creation and deletion as admin. !8432 -- Changes initial state for disabled prometheus integrations. !8434 -- Fix a typo in Admin: intergration -> integration. !8444 (Vincent AUBERT) -- Geo: Moving registry deletion into the job that deletes the files and project record. !8480 -- Parameterize alerting rules with variables. !8481 -- Fix PostReceive failing for project mirrors missing local branch. !8495 -- Rails 5: Fix the check whether the database is in read-only mode. !8594 -- Raisl 5: Fix Gitlab::Database::LoadBalancing#caught_up? check. !8595 -- Renders upstream and downstream pipelines in the main pipeline graph. !8607 -- Fix issue board api with special milestones. !8653 -- fix pod dropdown not switching pod logs. !8660 -- Geo - Respect the next retry time when re-verifying failed repositories. !8661 -- Update elasticsearch system check to check for new supported versions. !8683 -- Handle null start or due dates for dates sourcing milestone in Epics. !8689 -- Fixed license managment path in MR widget for fork cases. !8700 -- Fix gitlab:geo:check rake task. !8714 -- Fix ability to choose shards for selective sync. !8717 -- Add Rails.version to the Geo cache keys. !8775 -- Support older NGINX version forwarding the client certificate for smartcard auth. !8784 -- Remove duplicated smartcard login button. !8793 -- Disable password autocomplete in mirror form fill. - -### Deprecated (1 change) - -- Deprecate non-hashed repository storage for Geo installations. !8739 - -### Changed (17 changes, 1 of them is from the community) - -- Adds Group SAML metadata endpoint. !5782 -- Group SAML SSO page warns when linking account. !8295 -- Change the delete custom metric alert. !8430 -- Replace weight icon. !8448 (George Tsiolis) -- Switch snowplows stateStorageStrategy to cookie. !8461 -- Move merge request approval settings. !8493 -- Geo: Constantly reverify repositories. !8550 -- Add file and line numbers to issues created from SAST vulnerabilities. !8578 -- Redesign MR header sections and approvals (EE). !8593 -- Add packages_enabled attribute to Projects API. !8604 -- Run geo check task from gitlab check. !8616 -- Change issue create weight dropdown to an input. !8648 -- Add epics state filtering in roadmap view. !8658 -- Users can unlink Group SAML from accounts page. !8682 -- Update casing in Built-in on project templates tab. !8688 -- Epic issue list and related issue list re-design. -- Add sort direction button with sort dropdown for Epics and Roadmap. - -### Performance (5 changes, 3 of them are from the community) - -- Remove partial index for projects on mirror and mirror_last_update_at. !8585 -- Enable some frozen string in ee/app. !8667 (gfyoung) -- Remove redundant indices for is_sample on push_rules and next_execution_timestamp on project_mirror_data. !8695 -- Enable some frozen string in ee/app. (gfyoung) -- Enable some frozen string in ee/app. (gfyoung) - -### Added (10 changes) - -- Add support for Group-level project templates. !6878 -- Added web terminals to Web IDE. !7386 -- Promote an Issue to an Epic using quick action. !8051 -- Smartcard authentication. !8120 -- Adds Security dashboard empty state. !8443 -- Add vulnerability history at group level. !8603 -- Adds group security dashboard metrics chart. !8631 -- Add milestones autocomplete for epics. !8632 -- Parse and store dependency scanning reports in database. !8642 -- Adds EE store to handle upstream & downstream pipelines. - -### Other (13 changes, 4 of them are from the community) - -- Add subscription table to GitLab.com billing areas. !7885 -- UX improvements for the group security dashboard. !8217 -- Restyles the dismissed vulnerabilities. !8401 -- Adds PHILOSOPHY.md and references GitLab Product Handbook. !8515 -- Make sidekiq-cluster play well with Sidekiq 5.2.2+. !8522 -- Rails5: Passing a class as a value in an Active Record query is deprecated. !8540 (Jasper Maes) -- render :nothing option is deprecated, Use head method to respond with empty response body. !8560 (Jasper Maes) -- Add help page link for licence management in CI/CD settings. !8561 (George Tsiolis) -- Re-orders the Group Security Dashboard. !8624 -- Move EE only differences for finders. !8629 (George Tsiolis) -- Add count of projects with at least one package to a usage ping data. !8641 -- Added recommendations for handling deleted documents in Elasticsearch. -- Use new information-o icon for Security Dashboard. - - -## 11.5.11 (2019-04-23) - -### Security (1 change) - -- Respect group membership lock when importing a member from another group. - - -## 11.5.8 (2019-01-28) - -### Security (6 changes) - -- Avoid leaking unauthorized approver group members. !766 -- Sanitize user full name to clean up any URL to prevent mail clients from auto-linking URLs. !793 -- Check access rights when creating/updating ProtectedRefs. -- Fix locked file visibility issue for private repositories. -- Filter out non-project member approvers. -- Remove HTTP POST in JIRA OAuth access_token endpoint. - - -## 11.5.5 (2018-12-20) - -- No changes. - -## 11.5.3 (2018-12-06) - -- No changes. - -## 11.5.2 (2018-12-03) - -### Fixed (2 changes) - -- Fix inability to scroll dashboard. !8459 -- Fix issues analytics query when ordering issues by priority. !8509 - - -## 11.5.1 (2018-11-26) - -### Security (6 changes) - -- Sanitize tracing external_urls before saving to DB and when displaying the URL to prevent XSS issues. -- Prevent reporter roles from viewing the Jaeger tracing settings page. -- Fix IDOR at /drafts/publish. -- Authorize users when listing board users and milestones. -- Resolve: Guest can set weight of a new issue. -- Fixes XSS with merge request approvers selection. - - -## 11.5.0 (2018-11-22) - -### Security (2 changes) - -- Escape entity title while autocomplete template rendering to prevent XSS. !696 -- Prevent templated services from being imported. - -### Removed (1 change) - -- Remove security report summary from pipelines view. !7844 - -### Fixed (25 changes, 3 of them are from the community) - -- Geo: Remove connectivity check from primary to secondary from gitlab:geo:check rake task. !7821 -- Include (closed) for closed epics in parsed text. !7946 -- Add new state to the cluster application vue app. !7954 -- Do not allow to assign an issue to an epic twice. !8004 -- [Geo] Fix: Deleting a project leaves orphaned LFS objects and CI Job artifacts around. !8031 -- Support `/client/features` Unleash endpoint. !8045 -- Fix button rendering in license management in FF. !8046 -- Geo: Handle orphaned Uploads records. !8054 -- Geo - Redirect user back to the secondary after a logout & re-login via the primary. !8157 -- Fix approver removal still being conducted even when "Cancel" is clicked in confirmation prompt. !8178 -- Link project short SHA to commit url. !8214 -- Update ops dashboard remove dropdown button. !8236 (George Tsiolis) -- Clear ops dashboard project search input on submit. !8239 (George Tsiolis) -- Fixes a dismissed vulnerability bug on the group security dashboard. !8343 -- Fixes missing fields on the group security dashboard. !8360 -- Fixes the view issue button in the Group Security Dashboard. !8385 -- Ops Dashboard should be available for public projects on GitLab.com. !8399 -- Update draft comments design to match new design. !8405 -- Change issues analytics breadcrumb. !8414 (George Tsiolis) -- Include classification label in project API. !8426 -- Fix Pod Log topbar position when perf bar is disabled. -- Always proxy reports downloads. -- Removes extra rigth margin from job page. -- Geo: Rails console message display primary/secondary state incorrectly. -- Disable Feature Flags and Packages if repository is disabled. - -### Changed (13 changes, 1 of them is from the community) - -- Add test button to Group SAML settings. !5622 -- Group SAML status badges on members page. !5807 -- Update related issues list styling to be more space efficient. !7784 -- Refactor test reports to use new artifact architecture. !7827 -- Add timeline icon for issue weights. !7847 (George Tsiolis) -- Added a search bar to `Admin > Geo > Projects`. !8079 -- Geo: Deprecate source installations instructions. !8134 -- Does not synchronize default branch for pull mirrors. !8138 -- Adds split error states for the group security dashboard. !8208 -- Geo: Improve read-only message in secondary nodes for actionable screens. !8238 -- Improve error messages for operations dashboard. !8244 -- Add documentation link to ops dashboard. !8296 -- Issue board card design. !21229 - -### Added (24 changes, 1 of them is from the community) - -- Group-level file templates. !7391 -- Adds group-level Security Dashboard counts. !7564 -- Parse SAST reports and store vulnerabilities in database. !7578 -- elasticsearch 6 support - migrate from parent/child relationships to join. !7618 -- Geo: Admin > Geo > Projects support for batch operations. !7806 -- Create system notes for epic close and reopen. !7850 -- Add Tracing landing and settings page. !7903 -- Add modals and actions to the vulnerabilities in the Group security dashboard. !7910 -- Assign code owner as approver. !7933 -- Enable previewing of draft review comments. !7936 -- Audit log: Add logging for project feature changes. !7962 -- Add project operations dashboard. !7973 -- Audit log: Add audit events for group setting changes. !7987 -- Add approve quick action. !7989 -- Show actual Milestone dates within tooltips for Milestones in Epics sidebar. !8048 -- Allow filtering by weight in issues API. !8140 (Heinrich Lee Yu) -- Filter epics by state in API. !8179 -- Support epics autocomplete for project objects. !8180 -- Add 'l', 'r' and 'e' keyboard shortcuts support in Epic. !8203 -- Configurable GitHub static context for statuses integration. !8235 -- Send notifications for epic status change. !8247 -- Support license management and performance using new reports syntax. -- Support reports: for project security dashboard. -- Add chart of issues created per month. - -### Other (17 changes, 11 of them are from the community) - -- Update boards list selector specs. !6266 (George Tsiolis) -- Write some Geo development documentation. !7452 -- Connects the Group Security Dashboard API and Frontend. !7793 -- Rails5: Fix epics finder count_key method In Rails5, the state enum value is passed instead of the database integer. !7822 (Jasper Maes) -- Rails 5: fix presence message validation for prometheus_alert. !7823 (Jasper Maes) -- Rails 5: fix mysql milliseconds problem in prometheus alert event spec. !7828 (Jasper Maes) -- Rails5: fix VulnerabilitySummaryEntity. !7893 (Jasper Maes) -- Update feature flags empty state. !7967 (George Tsiolis) -- Adds the security dashboard link. !7974 -- Remove tooltip on sidebar text buttons. !8021 (George Tsiolis) -- Add a metric to the usage ping data to track the number of projects with at least one alert. !8058 -- Remove unneeded permission checks from the mirror repositories partial. !8077 -- Rails5: fix flaky mysql reset pipeline minutes spec. !8122 (Jasper Maes) -- Move `prepend` outside the `class` block for finders. !8192 (George Tsiolis) -- Rails5: fix operations controller spec nil parameter. !8209 (Jasper Maes) -- Update related issues title typography. !8267 (George Tsiolis) -- Geo: Clarify Geo HA documentation. - - -## 11.4.9 (2018-12-03) - -- No changes. - -## 11.4.8 (2018-11-27) - -### Security (5 changes) - -- Escape entity title while autocomplete template rendering to prevent XSS. !707 -- Authorize users when listing board users and milestones. -- Fix IDOR at /drafts/publish. -- Resolve: Guest can set weight of a new issue. -- Fixes XSS with merge request approvers selection. - - -## 11.4.7 (2018-11-20) - -### Fixed (1 change) - -- Fix code owner as merge request suggestion not available under Starter plan. !8248 - - -## 11.4.6 (2018-11-18) - -### Security (1 change) - -- Prevent templated services from being imported. - - -## 11.4.5 (2018-11-04) - -### Fixed (1 change) - -- Stops showing review actions on commit discussions in merge requests. !8007 - -### Performance (1 change) - -- Add indexes to all geo event foreign keys. !7990 - - -## 11.4.4 (2018-10-30) - -- No changes. - -## 11.4.3 (2018-10-26) - -- No changes. - -## 11.4.2 (2018-10-25) - -### Security (1 change) - -- Escape entity title while autocomplete template rendering to prevent XSS. !707 - - -## 11.4.1 (2018-10-23) - -- No changes. - -## 11.4.0 (2018-10-22) - -### Security (3 changes) - -- Properly filter private references from system notes. -- Project groups approvers no longer leak private groups info. -- Protect against CSRF attacks when adding Slack app. - -### Removed (1 change) - -- remove unnecessary help text from container scanning results. !7304 - -### Fixed (18 changes, 1 of them is from the community) - -- Prune all the Geo event log tables correctly. !6175 -- Synchronize the default branch when updating a pull mirror. !7242 -- Pushing to a merge request clears the approvals list even if the respective project setting is enabled and there is no fixed required number of approvals configured. !7328 -- Align epics and roadmap empty state buttons to the center. !7358 (George Tsiolis) -- Add link to issue on epic. !7407 -- Check for force env var when rebuilding auth_keys. !7419 -- Update popover URL to point to help page of same domain. !7446 -- Geo - Does not raise error 500 on Geo projects list page for orphaned entries. !7565 -- Show promotion for epics on issues. !7602 -- Fix Epic subscription toggle behaviour. !7723 -- Geo - Send a cache invalidation event via the log cursor whenever features are changed on the primary. !7738 -- Fix epic milestone dates incorrect after issue is linked to another epic. !7809 -- Fixes warning for used minutes in runner showing when user still has minutes. !7843 -- Fix disappearing weight input in Firefox. !7869 -- Don't synchronize default branch when updating a SSH mirror. !7891 -- Fix broken tokenization for filtered search bar in Epics. !7972 -- Fix bug when resolving a discussion via a batch comment published right away. -- Fix wrong color in resolve/unresolve checkbox when using MR reviews. - -### Changed (14 changes) - -- Geo: Decrease frequency of project shard schedulers when few projects to schedule. !7287 -- Added placeholder to weight input for issue sidebar. !7346 -- updated icons used in filtered search dropdowns. !7356 -- Geo: Display helpful feedback when proxying an SSH git push to secondary request. !7357 -- Geo - Include keep-around and other Gitlab-specific references in the checksum calculation. !7367 -- Polish security report externalizations. !7373 -- Listen for resolved Prometheus alerts. !7382 -- Rename date related labels for Epics. !7447 -- Add reports CI syntax for Code Quality reports. !7465 -- Support short reference to epics from project entities. !7475 -- Geo: Downgrade Exclusive Lease warnings from Log Cursor to debug. !7476 -- Geo: Allow nodes to be editable in more scenarios. !7832 -- Account for issues created in the middle of a milestone in burndown chart. -- [Geo] Add CI job artifact numbers to rake geo:status. - -### Performance (1 change) - -- Update DB model for security reports. - -### Added (20 changes, 1 of them is from the community) - -- Batch comments on merge requests. !4213 -- Use Geo log to remove files when migrated to object storage. !5966 -- Add support for closing epics. !7302 -- Add `auditor_groups` configuration so Audit users can be specified using SAML groups. !7340 (St. John Johnson) -- Geo - Add an event to reset checksums on Geo secondary nodes. !7394 -- Starts adding the dashboard page view. !7400 -- Add `Manage licenses` button to MR widget and pipelines view. !7411 -- Add Open/Closed epics tabs in list view. !7424 -- Add Feature Flags MVC. !7433 -- Suggest approvers based on code owners. !7437 -- Geo: Add a backoff time to few Geo workers to save resources. !7470 -- Persist Prometheus alert events. !7493 -- Geo: Added a button to Admin UI > Geo Nodes to open Geo Projects screen of any secondary node. !7512 -- Show Alert Thresholds on monitoring dashboards. !7538 -- Support autocomplete for commands in epics. !7588 -- Add form to enter licenses manually. !7603 -- Geo: Added `All` tab in Geo Nodes > Projects. !7745 -- Geo: Add a Geo Status Widget to Admin > Projects. !7789 -- Add data model and migration for vulnerabilities. -- Adds Batch Comments to Merge Requests [EEP]. - -### Other (8 changes, 1 of them is from the community) - -- Add runner quota information to job API. !7233 -- Resolve "ee:geo QA specs are failing as of !7210". !7315 -- remove readme checkbox from "create project" page. !7332 -- Create a generic JS function that we can apply to being able to track arbitrary events. !7403 -- Rename Admin Area Geo Nodes nav item to Geo. !7466 -- Group weight icon and text on issue list and issue boards. !7484 (George Tsiolis) -- Adds expandable/collapsable section for Snowplow. !7798 -- API: Allow issue weight parameter to be greater than or equal to zero. - - -## 11.3.14 (2018-12-20) - -- No changes. - -## 11.3.13 (2018-12-13) - -- No changes. - -## 11.3.11 (2018-11-26) - -### Security (7 changes) - -- Escape entity title while autocomplete template rendering to prevent XSS. !697 -- Properly filter private references from system notes. -- Authorize users when listing board users and milestones. -- Project groups approvers no longer leak private groups info. -- Resolve: Guest can set weight of a new issue. -- Fixes XSS with merge request approvers selection. -- Protect against CSRF attacks when adding Slack app. - - -## 11.3.10 (2018-11-18) - -- No changes. - -## 11.3.9 (2018-10-31) - -- No changes. - -## 11.3.8 (2018-10-27) - -- No changes. - -## 11.3.7 (2018-10-26) - -### Security (1 change) - -- Escape entity title while autocomplete template rendering to prevent XSS. !697 - - -## 11.3.6 (2018-10-17) - -### Fixed (1 change) - -- Don't reset the default branch when repository mirroring is enabled. !7944 - - -## 11.3.5 (2018-10-15) - -### Fixed (1 change) - -- Fix epic milestone dates incorrect after issue is linked to another epic. !7809 - - -## 11.3.4 (2018-10-05) - -### Security (1 change) - -- Properly filter private references from system notes. - - -## 11.3.3 (2018-10-04) - -- No changes. - -## 11.3.2 (2018-10-03) - -### Fixed (1 change) - -- Geo: repository shard verification job should have unique lease keys per shard name. !7474 - - -## 11.3.1 (2018-09-26) - -### Security (2 changes) - -- Project groups approvers no longer leak private groups info. -- Protect against CSRF attacks when adding Slack app. - - -## 11.3.0 (2018-09-22) - -### Security (1 change) - -- Prevent regular users from moving projects to different storage shards. - -### Fixed (29 changes, 11 of them are from the community) - -- don't add empty query params to boards. !4441 -- Geo: sync disabled wikis. !6420 -- Rails 5 fix alerts controller spec for post json parameters. !6795 (Jasper Maes) -- Fixes 500 error on user creation from admin panel with spaced username. !6804 (Jacopo Beschi @jacopo-beschi) -- Don't show search results for projects that have been deleted when using elastic search. !6830 -- Geo: Use database-cached status if redis-cached status is unavailable. !6854 -- [Geo] Fix: Custom favicons not being replicated by Geo. !6860 -- Rails5 fix AddMilestoneToLists migration rollback deleting wrong foreign key. !6865 (Jasper Maes) -- Rails5 fix passing Group objects array into for_projects_and_groups milestone scope. !6873 (Jasper Maes) -- Rails5: fix mysql milliseconds problem in project_import_state_spec. !6874 (Jasper Maes) -- Fix Jira integration duplicating branches and MRs. !6876 -- Rails5: fix mysql milliseconds problem in project_spec. !6880 (Jasper Maes) -- Remove https from Snowplow Collector URI placeholder in Admin Areawq. !6886 -- Geo: Replicate keep around refs. !6922 -- Fixes bug that prevented a user from seeing the system header and footer settings on the admin dashboard. !6926 -- Rails5 fix duplicate gpg signature in path lock spec. !6939 (Jasper Maes) -- Rails5: Fix audit event spec. !6940 (Jasper Maes) -- Rails5: fix mysql milliseconds problem in project registry spec. !6943 (Jasper Maes) -- LDAP - Does not update permissions on a read-only database. !6965 -- Rails5 fix project import spec. !6981 (Jasper Maes) -- Geo: Resolve sticky failures when attachments are missing on primary. !6991 -- Geo: LFS batch downloads are OK to be handled by secondary. !7209 -- Geo - Synchronize the default branch in secondary nodes. !7218 -- Handle fixed dates seperately from selected dates in Epics. !7227 -- Fix tooltip string to support dynamic date type in Epic sidebar. !7243 -- Fix an error in docs about fetching artifacts using API. !7244 -- Return proper status code when creation of an alert fails. !7360 (Peter Leitzen) -- Geo - Find the remote root ref using a JWT header for authentication. !7405 -- Add weight to issue hook. - -### Changed (3 changes, 1 of them is from the community) - -- Allow push_code when auth'd via Geo JWT. !6455 -- Prefer From address over Sender for Service Desk emails. !7006 (Andreas Josephson) -- Add CI Job token support to Maven packages API. !7249 - -### Performance (3 changes) - -- Reduce queries needed for CI artifacts on merge request widget. !6978 -- Use limited count approach on Protected Environments view. !6987 -- Limit sidekiq-cluster concurrency to a maximum of 50. !7025 - -### Added (15 changes, 2 of them are from the community) - -- Allow custom notification for new epic event. !5863 -- Geo: SSH git push to secondary -> proxy to Primary. !6456 -- Allow epic start/due dates to be sourceable from issue milestones. !6470 -- Add ability to upload and download maven packages from/to GitLab. !6607 -- Added an instance-level license template project. !6631 (Dan Barker) -- Add backend structure for ProtectedEnvironments. !6672 -- Add UI for GitLab private Maven repository feature. !6781 -- Add support for sorting epics. !6885 -- Allow specifying code owners in a CODEOWNERS file. !6916 -- Quick action for adding/removing epic to issues. !6934 -- Show total and completed instances deployed on deploy boards. !6955 -- Show security analysis status on the environments page. !6987 -- Add Instance Review for Core users. !6995 -- Introduce custom instance-level templates for Dockerfile, .gitignore, and .gitlab-ci.yml files. !7000 -- Adds Rubocop rule to enforce class_methods over module ClassMethods. !7044 (Jacopo Beschi @jacopo-beschi) - -### Other (4 changes) - -- Removes feature flag code surrounding Protected Environments feature. !7338 -- Creates vue component for shared runner limit. -- Allow MR authors to approve their MRs. -- Remove differences between CE and EE settings panel component. - - -## 11.2.8 (2018-10-31) - -- No changes. - -## 11.2.7 (2018-10-27) - -- No changes. - -## 11.2.6 (2018-10-26) - -### Security (1 change) - -- Escape entity title while autocomplete template rendering to prevent XSS. !698 - - -## 11.2.5 (2018-10-05) - -### Security (1 change) - -- Properly filter private references from system notes. - - -## 11.2.4 (2018-09-26) - -### Security (2 changes) - -- Project groups approvers no longer leak private groups info. -- Protect against CSRF attacks when adding Slack app. - - -## 11.2.3 (2018-08-28) - -- No changes. - -## 11.2.2 (2018-08-27) - -### Security (1 change) - -- Prevent regular users from moving projects to different storage shards. - - -## 11.2.1 (2018-08-22) - -- No changes. - -## 11.2.0 (2018-08-22) - -### Security (1 change) - -- Don't expose project names in EE counters. - -### Fixed (32 changes, 11 of them are from the community) - -- Allow Geo node to be edited once the database is failed over. !6248 -- Fix a bug where user was unable to delete a branch when repo size was above the limit. !6373 -- Rails5 fix AttachmentRegistryFinder arel queries. !6396 (Jasper Maes) -- Add Premium license checks for system messages. !6460 -- Fixes arrow-icon color and alignment in linked pipeline in merge request widget. !6479 -- Rails 5 fix the matcher expected the ApplicationSetting to be invalid, but it was valid instead. !6488 (Jasper Maes) -- Geo: Gracefully handle deleted events from Geo event log. !6506 -- Rails5 fix NoMethodError: undefined method 'message' for nil:NilClass. !6507 (Jasper Maes) -- Fix billing card title colors. !6563 -- Rails5 fix undefined method 'namespace_project_settings_repository_path'. !6581 (Jasper Maes) -- Rails5 fix no implicit conversion of Symbol into Integer. !6582 (Jasper Maes) -- Rails 5 fix NoMethodError: undefined method 'message' for nil:NilClass in host_spec.rb. !6589 (Jasper Maes) -- Fix mobile view of pod logs. !6597 -- Add left-padding to diverged-from-upstream label. !6647 -- List groups with developer maintainer access on project creation. !6678 -- no longer fail when setting up Geo database with GDK. !6680 -- Allow Pseudonymizer to write to a bucket without having permissions to see all buckets. !6682 -- Hide Expand button on empty MR widget Performance section. !6685 -- Ensure that Create issue button is shown in vulnerability dialog. !6708 -- Use same gem versions for Rails 5 as for Rails 4. !6712 (Jasper Maes) -- Rails5 correct wrong geo job name. !6713 (Jasper Maes) -- Elasticsearch: Fix a bug causing some types of note to miss being indexed. !6736 -- Rails 5 fix product array method delagation by manually calling .to_a in NotificationService. !6753 (Jasper Maes) -- Adjust self-hosted Jira development panel integration. !6756 -- Ensure that push size checks only count the size of newly-pushed files. !6767 -- Fix the UI for listing system-level labels. !6805 -- Rails5: fix slice in burndown fixture. !6813 (Jasper Maes) -- Rails5: fix Arel::UpdateManager in MigrateOldElasticsearchSettings migration. !6815 (Jasper Maes) -- Corrected URL for snowplow client side JS. !6899 -- [Geo] Fix the Storage config parameter in Geo nodes admin page. -- Fix exporting issues to CSV when sorting by label priority is used. -- Fix handling of annotated tags when Gitaly is not in use. - -### Changed (9 changes, 2 of them are from the community) - -- Add related issues loading icon top margin. !6527 (George Tsiolis) -- Add security products to usage ping. !6602 -- Changed copy for "Approved" state in merge request widget. !6635 (Constance Okoghenun) -- Track the Geo event log gaps in redis and handle them later. !6640 -- Replace clipboard icon in Service Desk settings. !6643 -- Removes "show all" on security reports and adds a button to take you to the pipeline page. !6675 -- Shows license reports when there are no reports in the source branch. !6720 -- Removes status text from licence reports. !6802 -- Opens "view full report" links in a new window. !6806 - -### Performance (2 changes) - -- Geo: Improve Geo Status API performance with cached counters in SiteStatistic. !6328 -- Geo: Improve performance in Log Cursor gap tracking. !6754 - -### Added (19 changes) - -- Geo: Add repository verification failures to API. !6137 -- Add support for todos on epics. !6142 -- Summed issue weights in board columns. !6218 -- Add an API endpoint for managed licenses of a project. !6246 -- Implement custom project templates. !6436 -- Projects page under Admin > Geo Nodes to display detailed synchronization information. !6452 -- Enables configuration of pull mirroring through API. !6485 -- Adds SLI alerts to custom prometheus metrics. !6590 -- Add support for milestones lists on the issue boards. !6615 -- Persist Epic Roadmap timescale choice. !6637 -- Add license management frontend. !6638 -- Add Snowplow integration. !6642 -- Add Security Dashboard to project quick links. !6652 -- Show License Management at pipeline level. !6688 -- Add Frontend for Instance-level project templates. !6740 -- Geo - Actively try to correct verification failures on the secondary. !6759 -- Add Prometheus metrics to track Geo autocorrect numbers. !6778 -- Link the License Management report in the MR widget with the pipeline level one. !6800 -- Allow creating assignee lists via API. - -### Other (8 changes, 1 of them is from the community) - -- Move merge requests EE helper methods. !6461 (George Tsiolis) -- Add additional logging for Geo Log Cursor. !6513 -- Ensure no weight change system notes end with a superfluous comma. !6571 -- Track registries marked as synced when repository does not found. !6694 -- Removes EE specific CSS that was moved to CE. !6723 -- Geo: Add rake task to resync projects where verification has failed. !6727 -- updates column sizes in licence and security modals. !6808 -- Geo: Log to geo.log when the Log Cursor skips an event. - - -## 11.1.7 (2018-09-26) - -### Security (2 changes) - -- Project groups approvers no longer leak private groups info. -- Protect against CSRF attacks when adding Slack app. - - -## 11.1.6 (2018-08-28) - -- No changes. - -## 11.1.5 (2018-08-27) - -- No changes. -### Security (1 change) - -- Prevent regular users from moving projects to different storage shards. - - -## 11.1.4 (2018-07-30) - -- No changes. - -## 11.1.3 (2018-07-27) - -### Fixed (1 change) - -- Resolve Environments dropdown is showing on the cluster health page. !6528 - - -## 11.1.2 (2018-07-26) - -### Security (1 change) - -- Don't expose project names in EE counters. - - -## 11.1.1 (2018-07-23) - -### Fixed (2 changes) - -- Fix geo download service ImportExportDownloader unitialized constant. !6567 -- Geo - Allow repository verification to be disabled on a secondary node. !6599 - - -## 11.1.0 (2018-07-22) - -### Removed (1 change) - -- Drop ignored Geo repository_storage_path columns. !5468 - -### Fixed (19 changes, 7 of them are from the community) - -- Log audit and Geo events within a project destroy transaction. !6059 -- Do not pre-select previous user(s) when creating protected branches. !6112 -- Group SAML settings link hidden when unlicensed. !6147 -- Geo: Fix repository/wiki sync race condition with multiple updates, especially in quick succession. !6161 -- [Rails5] Fix error on missed :authenticate_user callback. !6257 (@blackst0ne) -- Rails5 fix expected: ({...}) got: (<ActionController::Parameters {...}). !6271 (Jasper Maes) -- Rails5 fix ArgumentError: wrong number of arguments (given 1, expected 2). !6272 (Jasper Maes) -- Rails5 fix NoMethodError: undefined method `join' for "":String. !6278 (Jasper Maes) -- [Rails5] fix Boards::ListsController expected the response to have status code 200 but it was 403. !6318 (Jasper Maes) -- [Rails5] fix NoMethodError: undefined method 'downcase' for Hash. !6319 (Jasper Maes) -- [Rails5] fix Projects::VulnerabilityFeedbackController didn't match the schema. !6320 (Jasper Maes) -- Fix CI/CD pipelines when repository HEAD points to an invalid branch. !6325 -- Geo - Recalculates the checksum for projects up to date. !6333 -- Fixes an issue with security reports footers. !6450 -- Add missing sourceBranchLink prop to CI widget. !6493 -- Resync project repositories on secondaries nodes when import finishes. !6529 -- Adds permission checks to dismiss issue in security reports. -- Allow all but "/" chars for groups and projects paths on Jira dev panel integration. -- Fix weight system notes ending in commas. - -### Changed (6 changes) - -- [Geo] Invert the direction of Geo metrics acquisition. !5934 -- Update read-only message banner styling for Geo secondary node. !6135 -- Removes action buttons from resolved vulnerability modal. !6155 -- Redesign contribution analytics graphs. !6194 -- Geo - Retry checksum calculation for failures on the primary node. !6295 -- Don't show 'Contribute to GitLab' link on self-hosted Enterprise Edition instances. !6297 - -### Performance (5 changes, 1 of them is from the community) - -- Geo - Optimize query to return outdated projects that need to be reverified. !5879 -- Boost Geo prune worker to run every 2 hours instead of 6. !6074 -- Use tooltip component in MrWidgetSecondaryGeoNode vue component. !6078 (George Tsiolis) -- Eliminate N+1 queries in path lock checks during a push. -- Memoize the global default for push rules within the request. - -### Added (13 changes, 1 of them is from the community) - -- Add a new push rule to allow negative matching of commit messages. !5453 (Hannes Rosenögger) -- Pseudonymizer to safely export data for analytics. !5532 -- Add filename filtering to code search with Elasticsearch. !5590 -- Add API endpoint for viewing and editing board config. !5954 -- Log repository check and failed count to Prometheus. !5984 -- Allow repository verification concurrency to be controlled on primary and secondary. !6102 -- Geo: HTTP git-lfs push (upload) and locks (verify, lock and unlock) to secondary now redirects to the primary. !6109 -- Adds pod selection dropdown to pod logs screen. !6111 -- Add support for autocompleting Epics and Labels within Epics. !6195 -- Add project Security Dashboard. !6197 -- Support GitLab subgroups in Jira development panel. !6290 -- Render container scanning and dast reports in pipeline view. -- Add link to Jenkins documentation within integration and service template. - -### Other (2 changes) - -- Enable Geo snapshot synchronization for everyone. !6286 -- Geo - Make Geo repository verification flag opt-out by default. !6369 - - -## 11.0.6 (2018-08-27) - -### Security (1 change) - -- Prevent regular users from moving projects to different storage shards. - - -## 11.0.5 (2018-07-26) - -### Security (1 change) - -- Don't expose project names in EE counters. - - -## 11.0.4 (2018-07-17) - -- No changes. - -## 11.0.3 (2018-07-05) - -- No changes. - -## 11.0.2 (2018-06-26) - -- No changes. - -## 11.0.1 (2018-06-21) - -- No changes. - -## 11.0.0 (2018-06-22) - -### Security (2 changes) - -- Escape name in merge request approvers dropdown. -- Fixes include directive to not allow SSRF requests. - -### Fixed (15 changes) - -- Hide Lock button if File Locking feature is not available in license. !5656 -- Geo - Move out the replication slots items from verification section in Geo admin screen. !5723 -- Fix approvers API not accepting empty form-encoded params. !5784 -- Fix error when locking/unlocking directories. !5862 -- Geo: Formatting fix for geo:status rake task. !6020 -- Geo: Automatically clean up stale lock files on Geo secondary. !6034 -- Remove LFS object warning from import UI. !6083 -- Fix Web IDE status bar if System Footer message is present. -- [Geo] Fix: Deleted project events may be skipped on the secondary when selective sync is used. -- [Geo] Fix: Unauthenticated rate limits should not block Geo requests. -- Perform gitlab-ci-token authentication always using primary. -- Geo: Gracefully handle a non-JSON response from the node status. -- Geo: Fix FDW schema check when tables and columns are not in the same order. -- Fix sticking of runner to primary if new job is scheduled. -- When last Geo::EventLog is not available, geo:status rake task fails. - -### Deprecated (2 changes) - -- Rename Container Scanning job and artifact. !5770 -- Rename Code Quality job and artifact. !5773 - -### Changed (7 changes) - -- Removed "(Beta)" from "Auto DevOps" messages. !5583 -- Make issue weight promotion in issuable sidebar dismissable. !5601 -- Remove the comma from the weight system notes. !5854 -- Enrich Security Reports with more data. !5878 -- Truncate Geo event log with a delay. !5897 -- Add support for non-negative integer weight values in issuable sidebar. -- Improve Failed Jobs tab in the Pipeline detail page. - -### Performance (5 changes, 2 of them are from the community) - -- Reorder LinkToMemberAvatar vue component props values. !5692 (George Tsiolis) -- Rename merge request widget author component. !5693 (George Tsiolis) -- Geo - Fix index for outdated projects on the project_repository_states table. !5986 -- Preload Group plans in EpicsFinder. -- Only process Geo::EventLog events if associated shard is queryable and healthy. - -### Added (12 changes) - -- Allows the review of kubernetes pod logs within GitLab. !4752 -- Geo: Rake task to force housekeeping on next sync. !5623 -- Add ability to have zero approvers. !5635 -- Show status information stale icon in Geo admin dashboard. !5653 -- Add assignee board list type. !5743 -- Geo: HTTP git push to secondary now redirects to the primary. !5785 -- Add presets for navigating Epic Roadmap. !5798 -- Guest users will not consume seats quote in Ultimate plan. !5816 -- Create system note on epic date change. -- Add License Management results in the MR widget. -- Extract EE specific files. -- Add service discovery for the DB load balancer. - -### Other (4 changes, 1 of them is from the community) - -- Add promotion for epics to issuable sidebar. !5601 -- Remove confusing statement in the message shown for Epics list empty state when filters are applied. !5630 -- Fixed illustration alignment for group milestones promotion. !5677 (Constance Okoghenun) -- Allow viewing only one when multiple issue boards is not enabled. diff --git a/changelogs/archive-12-ee.md b/changelogs/archive-12-ee.md deleted file mode 100644 index feec66665d6..00000000000 --- a/changelogs/archive-12-ee.md +++ /dev/null @@ -1,1739 +0,0 @@ -## 12.10.14 (2020-07-06) - -### Security (1 change) - -- Maven packages upload endpoint is now properly using the uploaded file set by middleware. - - -## 12.10.13 (2020-07-01) - -### Security (2 changes) - -- Fixed pypi package API XSS. -- Fix project authorizations for instance security dashboard. - - -## 12.10.12 (2020-06-24) - -- No changes. - -## 12.10.11 (2020-06-10) - -### Security (1 change) - -- Do not set fallback mirror user. - - -## 12.10.8 (2020-05-28) - -### Fixed (1 change) - -- Geo: Fix empty synchronisation status when nothing is synchronised. !30710 - - -## 12.10.7 (2020-05-27) - -### Security (3 changes) - -- Change the mirror user along with pull mirror settings. -- Allow only users with a verified email to be member of a group when the group has restricted membership based on email domain. -- Do not auto-confirm email in Trial registration. - - -## 12.10.6 (2020-05-15) - -- No changes. - -## 12.10.5 (2020-05-13) - -### Fixed (1 change) - -- Remove check for user being an applicable code owner. !31809 - - -## 12.10.4 (2020-05-05) - -- No changes. - -## 12.10.2 (2020-04-30) - -### Security (3 changes) - -- Fix rendering failure of Audit Event generated by Releases API. -- Ensure that NuGet package versions are SemVer compliant. -- Ensure that NuGet package versions are validated before updating the stored file path. - - -## 12.10.1 (2020-04-24) - -### Changed (1 change) - -- Move project deploy tokens section back to Repository settings. !29280 - - -## 12.10.0 (2020-04-22) - -### Fixed (6 changes, 1 of them is from the community) - -- Split CI minutes resets into different workers. !29017 -- Fix duplicated events on Value Stream Analytics stage form. !29030 -- Fix missing autocomplete results in the ElasticSearch admin UI. !29043 (mbergeron) -- Support visual reviews on private and internal projects through PAT authentication. !29336 -- Nuget search: fix the prerelease filtering. !29482 -- Smartcard should be counted as 2fa. !29504 - -### Changed (6 changes) - -- Default the :tasks_by_type_chart feature flag on. !28486 -- Remove Add Metric button from custom dashboards. !29036 -- Improve Geo Node save error messages. !29079 -- Cosmetic changes for Epic Health Status. !29234 -- Improve readability of Dependency List. !29593 -- Restrict prompt to check user account settings only to Gitlab.com. !29672 - -### Added (15 changes) - -- Add LDAP user filter to group link API. !26202 -- Implement Shared Runner Minute Factors. !27792 -- Updates the package registry list UI which also includes adding pipeline information. !28426 -- Allow Admins to preview the payload for Seat Link requests. !28582 -- Add deployment frequency to Project level Value Stream Analytics summary. !28772 -- Add deployment frequency to Group Value Stream Analytics summary. !28776 -- Provide milestone burnup chart data for scope committed graph. !28899 -- Make Status Page MVC generally available. !28966 -- License Compliance - Add `order_by` filter. !28970 -- Add the selected compliance frameworks label to project home and listings. !29137 -- Generate smaller versions of Design Management design files. !29215 -- .com has a subscription expired banner. !29422 -- Allow changing item parent in epic tree via GraphQL. !29567 -- Add PyPI Packages Repository. !29702 -- Enable requirements for projects and basic actions (CRUD) for them. - -### Other (1 change) - -- Add health status counts to usage data. !28964 - - -## 12.9.10 (2020-06-10) - -### Security (1 change) - -- Do not set fallback mirror user. - - -## 12.9.8 (2020-05-27) - -### Security (3 changes) - -- Change the mirror user along with pull mirror settings. -- Allow only users with a verified email to be member of a group when the group has restricted membership based on email domain. -- Do not auto-confirm email in Trial registration. - - -## 12.9.6 (2020-05-05) - -- No changes. - -## 12.9.5 (2020-04-30) - -### Security (3 changes) - -- Fix rendering failure of Audit Event generated by Releases API. -- Ensure that NuGet package versions are SemVer compliant. -- Ensure that NuGet package versions are validated before updating the stored file path. - - -## 12.9.4 (2020-04-16) - -- No changes. -### Fixed (2 changes) - -- Update index_options to fix advanced search queries. !28712 -- Geo: Fix repository verification on the primary. !28893 - -### Other (1 change) - -- Use prefix search instead of ngrams for sha fields. !27597 - - -## 12.9.3 (2020-04-14) - -### Security (1 change) - -- Fix filename bypass when uploading NuGet packages. - - -## 12.9.2 (2020-03-31) - -### Fixed (4 changes) - -- Fix direct access to individual design on deprecated issue route. !27650 -- Fix error when viewing events from design notes on project activity page. !27840 -- Allow Seat Link to be disabled through configuration or admin toggle. !28015 -- Allow active_users param to be optional for SyncSeatLinkRequestWorker#perform. !28241 - -### Changed (1 change) - -- Send active users for each day in seat link POST request. !27481 - - -## 12.9.1 (2020-03-26) - -### Security (1 change) - -- Add NPM package versions SemVer validation. - - -## 12.9.0 (2020-03-22) - -### Removed (1 change) - -- Remove Security Dashboard button from project page. !24781 - -### Fixed (20 changes) - -- Ensure User IDs are Removed When Moving to All Users Strategy. !25190 -- Fix dismissed vulnerability comment updates. !25328 -- Generate illustrations URLs in the backend. !25375 -- Check user role for each of namespaces while deciding if it is using a paid seat in it. !25437 -- Change MR approval popover to use hover trigger. !25494 -- Change copy of Welcome screen. !25526 -- Fix weight not showing in linked issues. !25718 -- Scope name uniqueness of approval rules to type. !25875 -- Pass correct Time object to Value Stream Management DataCollector. !25885 -- API for Namespace members has correct boolean if user using paid seat. !25988 -- Set the default SSL cert path environment variables when invoking indexer. !26036 -- Add pagination to Instance Level Security Dashboard project selector. !26138 -- Exclude creation event from audit changes. !26140 -- Resolve Usage Ping timeouts on security_products_usage for large hosts. !26296 -- Fix SCIM API not creating new users. !26514 -- BulkIndexer change _routing -> routing to support ES 7. !26639 -- Ensure design events are correctly visible. !26708 -- Add support for async search within Epics dropdown. !26980 -- Fix configuration issue for License Compliance. !27016 -- Geo - Fix ambiguous reference column while loading migrated local files to clean up. !27252 - -### Changed (22 changes, 1 of them is from the community) - -- Add auto_renew attribute to gitlab_subscriptions and expose via api. !24896 (jejacks0n) -- Remove admin user count from Users statistics. !25337 -- Improve error messages in the Dependency List. !25369 -- Do not automatically add approvers as participants of each merge request. !25546 -- Improve loading UX in the License Management list. !25620 -- Improve audit log & events header layout. !25821 -- Adjust the MR approval rule to use a smaller modal. !25955 -- Resolve Code review start time doesnt account for approvals. !25997 -- Prevent 'Invite group' for groups outside a group-managed account group. !26081 -- Improve language when MR Security Report is outdated. !26150 -- Prevent projects from being shared outside a group with managed accounts. !26163 -- Prevent projects from being shared outside a group with managed accounts for forked projects. !26186 -- Extract time range information to be reused. !26431 -- Restrict inviting outside group to a project forked from a group with enforced SSO. !26456 -- Add severity badge to security reports. !26715 -- Consider MR reassign as code review start. !26891 -- Add application limits for Ci::PipelineSchedule. !27004 -- Update license compliance policy classifications text in the UI. !27058 -- Remove approval metric recalculation when approval was removed. !27071 -- Move Value Stream Analytics to the group level. !27304 -- Remove release tag filter from Issues Analytics. !208903 -- Change dependency & license scan pipeline text message. - -### Performance (4 changes) - -- Optimize service desk issue counters query performance in usage data. !26445 -- Preload database records in bulk indexing. !26754 -- Geo: Make the LFS registry the SSOT to optimize query performance. !27154 -- Remove feature flag elastic_bulk_incremental_updates. !27293 - -### Added (58 changes, 9 of them are from the community) - -- Audit number of required approvals changes. !7531 -- Add weight and progress information in Roadmap Epic bars. !18957 -- Adds the ability to dismiss multiple vulnerabilities. !21480 -- Add code quality tab to pipeline view. !21527 -- Add milestones to roadmap. !22748 -- Add Threat Monitoring page. !22911 -- Add epic in filtered search. !22958 -- Add deep links for cycle analytics. !23493 -- Allow existing users to transfer their account to SAML Group managed accounts. !24329 -- Use snowplow for user error reporting in trial. !24430 -- Time period for usage activity by stage in usage data. !24431 -- Adds sorting to group packages api. !24432 -- Export Board Milestones in Group Export. !24606 -- Add possibility to search for epics by partial iids using GraphQL. !24673 -- Add restrict outer forks functionality for group SAML. !24698 -- Release Jira connect feature. !24818 -- Adds project_path sorting to group package API. !24833 -- Add webhook limits for groups. !25129 -- Default design images to 100% of viewport width. !25327 -- Add npm_package_requests_forwarding to application settings. !25346 -- Add bot count to Users statistics in Admin Area. !25355 -- Adding CODEOWNER approval metrics for merge requests. !25386 -- Separate 4 ee entities into own class file. !25400 (Rajendra Kadam) -- Improve zoom reset after resizing window in Design Management. !25406 -- Introduce Project level issues analytics. !25417 -- Add tooltip to guests count in Users Statistics. !25433 -- Separate epic, epic_issue, linked epic ee entities into own class file. !25592 (Rajendra Kadam) -- Add API endpoints for Group Activity Analytics. !25606 -- Add GraphQL mutation to set the epic of an issue. !25628 -- Add merge request metrics first approved at timestamp. !25681 -- Separate ee entities into own class file. !25709 (Rajendra Kadam) -- Embed cluster health metrics in GitLab-flavored Markdown. !25739 -- Always show the Design Tab on Issues but indicate user if feature is not available. !25796 -- Status page settings. !25820 -- Audit user blocked via API. !25872 -- Create a vulnerability-list component. !25927 -- Audit project MR approval permission changes. !25959 -- Add health status data to the epic GraphQL endpoint. !25989 -- Display correct approval rules based on target branch in Edit MR form. !26053 -- Activate triggering webhooks from a subgroup feature. !26070 -- Separate vulnerabilities, feature flags, dependency entities into own class files. !26088 (Rajendra Kadam) -- Support drag-and-drop design uploads in Design Management. !26139 -- Add distinct user count of secure stage items to usage ping. !26194 -- Support drag-and-drop on existing designs in Design Management. !26446 -- Add worker to sync paid seats info daily in the background. !26467 -- Separate project alias, build info, package entities into own class files. !26493 (Rajendra Kadam) -- Support async loading & search of projects within Epics Tree. !26661 -- Add code review reassign metric structure. !26664 -- Separate npm, subs and geo entities into own class file. !26674 (Rajendra Kadam) -- Separate geo_node and license entities into own class file. !26685 (Rajendra Kadam) -- Separate merge request approval entities into own class files. !26860 (Rajendra Kadam) -- Include snippet description as part of snippet title search (advanced search, Elasticsearch reindexing required). !26870 -- Add Roadmap GraphQL and unfiltered epic aggregates. !26919 -- Add NPM package requests forwarding to npmjs.org. !26932 -- Separate approval entities into own class files. !27336 (Rajendra Kadam) -- View description changes history of issues, epics and merge requests. !27445 -- Enable license compliance policies tab for on prem installs. -- Add a bulk processor for ES incremental updates. - -### Other (5 changes, 1 of them is from the community) - -- Refactor WeightSelect to use gitlab-ui dropdown. !20770 -- Update to new severity badge design. !25489 -- Rename close_{at,by} to dismissed_{at,by} in Vulnerabilities. !25609 (Michał Zając) -- Style MR approval popover link to be consistent text size. !25657 -- Allow users to be marked as service users. !202680 - - -## 12.8.10 (2020-04-30) - -### Security (3 changes) - -- Fix rendering failure of Audit Event generated by Releases API. -- Ensure that NuGet package versions are SemVer compliant. -- Ensure that NuGet package versions are validated before updating the stored file path. - - -## 12.8.9 (2020-04-14) - -### Security (1 change) - -- Fix filename bypass when uploading NuGet packages. - - -## 12.8.7 (2020-03-16) - -### Fixed (1 change) - -- Allow multipart uploads for packages. !26387 - - -## 12.8.6 (2020-03-11) - -- No changes. - -## 12.8.5 - -- No changes. - -## 12.8.4 - -- No changes. - -## 12.8.3 - -- No changes. - -## 12.8.2 - -### Security (5 changes) - -- Don't show Contribution Analytics to users who are not group members. -- Update epic tree when group is transfered. -- Fix Service Side Request Forgery in JenkinsDeprecatedService. -- Enforce vulnerability feedback pipeline is in the same project. -- Enforce existing vulnerability feedback pipeline is in the same project. - - -## 12.8.1 - -### Performance (1 change) - -- Geo - Fix query to retrieve Job Artifacts when selective sync is disabled. !25388 - - -## 12.8.0 - -### Removed (1 change) - -- Remove confidence labels from security report. !24033 - -### Fixed (33 changes, 1 of them is from the community) - -- Fix UI on Project Audit Events when the feature not available. !16032 (Takuya Noguchi) -- Group SSO handles locked users gracefully instead of showing 500 error. !20329 -- Fix incorrect security status counts. !22650 -- Fix include subgroups in security status. !22653 -- Make sure type is set properly in Elasticsearch query when doing global search. !22821 -- Include users from all sub-projects and shared groups when counting billing seats currently in use. !22967 -- Fix vulnerability finding list endpoint query timeout on instance security dashboard. !23232 -- Add app validation for any-approver rule uniqueness. !23241 -- Fix 500 error in global search for blob, wiki_blob and commit search. !23326 -- Fix group hook triggering from subgroup project. !23333 -- Change conditions when user uses license seat. !23522 -- Accept group path as ID when fetching notes from API. !23535 -- Fixes a bug that prevented auto-remediation on the pipeline security dashboard. !23677 -- Fix nav link in security submenu. !23775 -- Order epic related issues by relative_position. !23776 -- Correctly display the number of approvals for a merge request. !23827 -- Fix orphan issues that were promoted to epics. !23916 -- Fix rendering of design management references. !24001 -- Fix 500 error when browsing the roadmap page for a group the user is not authorized to view. !24002 -- Use project slug instead of name for Error Tracking Settings Display. !24176 -- Display error message in MR License Report if it fails to load. !24201 -- Fix display logic of Securty Report MR widget. !24204 -- Set SSL certificates path env when calling ES indexer. !24213 -- Allow submit to event to trigger a new search. !24262 -- Fix npm package uploads when bundleDependencies is set to false. !24355 -- Resolve 500 error after Web IDE terminal use. !24443 -- Added commas to current active user count when appropriate. !24549 -- Hide duplicate company/individual question on trial selection. !24567 -- Update invalid SPDX identifiers in software licenses table. !24829 -- Cleanup deprecated package dependency links. !24868 -- Fix to display a link to the logs in both embed and dashboard. !25288 -- Disable self-approval at the Instance level - Fix approvals filtering. !25385 -- Allow user to close sidebar while editing boardlist and save wip limit. - -### Changed (13 changes) - -- Display generic error in codeclimate MR widget when base_path is null. !21666 -- Adjust skip trial copy in trial sign up flow for SaaS users who are logged in. !22923 -- Use export icon instead of download for the export button in the Dependencies List. !23094 -- Apply darker color to column headers and scan names in secure features configuration. !23104 -- Redacts quick actions used by support bot. !23353 -- Remove Code Review Analytics feature flag. !23418 -- Delete description change history - Frontend. !23568 -- Support moving the design repository of a project when the project is transferred to a new namespace. !23573 -- Display proper error messages on vulnerabilities fetch failure. !23812 -- Add date range validation for Cycle Analytics at the backend side. !24254 -- Exclude GitLab generated bot users from using a license seat. !24275 -- Changes the standalone vulnerabilty endpoint. !24777 -- Move Productivity Analytics page to the group level. !25329 - -### Performance (1 change) - -- Geo - Fix query to retrieve Job Artifacts when selective sync is disabled. !25388 - -### Added (42 changes, 1 of them is from the community) - -- Create DesignAtVersion model, exposing it with GraphQL. !15260 -- Add Group-level compliance dashboard MVC. !20844 -- Adds sorting to package api. !20963 -- Allow to soft delete issuables description history. !21439 -- Display warning flash if design upload is skipped. !21615 -- Ask if a user is trying GitLab for his company or for his individual usage. !22280 -- Support design tab link references for issues. !22330 -- Allow using custom user name for service desk emails. !22478 -- Raise exception if any namespaces runner minutes were not reset. !22636 -- Adds vulnerability management state dropdown. !22823 -- Add additional license information to admin dashboard. !22866 -- Add sort by date to audit logs and events. !22887 -- Add Group WebHooks API. !22994 (Rajendra Kadam) -- Add API route to confirm a vulnerability. !23099 -- Creates the standalone vulnerability list page. !23438 -- Show license badge for Gitlab.com member overview. !23521 -- Create audit log when username changes. !23576 -- Resolve Disable self-approval at the Instance level. !23731 -- Add time picker to logs page. !23837 -- Introduce Credentials Inventory for Groups that enforce Group Managed Accounts. !23944 -- Add API for protected environments. !23964 -- Prompt users to check their account settings. !23994 -- Allow to pick a subgroup to hold the Insights config. !24053 -- Add health_status column to issues and epics tables. !24202 -- Add a link in dashboard to allow users to go to the logs page. !24240 -- Record audit event when user is deleted. !24257 -- Time Series chart filtered time range (datazoom) becomes reflected in the View logs link. !24343 -- Scope merge request approval rules to protected branches using API search. !24344 -- Add application limit for ES indexed field length. !24345 -- Add affected projects feature to instance security dashboard. !24644 -- Add trial field to namespaces API. !24666 -- Make elasticsearch bulk parameters configurable. !24688 -- Add feature filter for users. !24765 -- Design view: moveable `new comment` pin. !24769 -- Record audit event when user is added. !24855 -- Add group identification headers to epic emails. !24878 -- Record audit event when user is blocked. !24930 -- Moveable design note pins. !24934 -- Add NuGet Repository. !25157 -- Add single-level Epics to EE Premium. !25184 -- Show View logs link in embed metrics. !25217 -- Add usage ping counter for events. !199874 - -### Other (1 change) - -- Prepare DB structure for GMA forking changes. !22002 - - -## 12.7.9 (2020-04-14) - -### Security (1 change) - -- Fix filename bypass when uploading NuGet packages. - - -## 12.7.5 - -### Fixed (1 change) - -- Fix DB connection pool size for Geo database. !24021 - - -## 12.7.3 - -- No changes. - -## 12.7.1 - -### Fixed (1 change) - -- Fix create/delete API calls for approval rules. !23107 - - -## 12.7.0 - -### Removed (2 changes) - -- Remove `project_ci_cd_settings.merge_trains_enabled` column. !19701 -- Remove old pipeline security report view in favor of the Security Dashboard. !22152 - -### Fixed (20 changes, 1 of them is from the community) - -- Add error flashes to Design view. !20889 -- Pending (unsubmitted) review comments with multiple lines now display whitespace before being submitted. !21435 -- Fixed GitLab admin not seeing merge requests in Jira Development Panel Integration. !21467 -- fix CSS shadowbox on focus. !21785 (allenlai18) -- Fix GraphQL access to groups with SAML SSO Enforcement. !21922 -- Remove spinner when approval require input is changed. !22186 -- Add billing plans box to profiles. !22270 -- Use full reference in Epic Issue GraphQL query. !22292 -- Support new Azure SCIM pre-setup check. !22348 -- Show expiry details in Audit events when changing acesss levels. !22412 -- Fix PruneOrphanedGeoEvents to pass in demodulized name to BackgroundMigrationWorker. !22451 -- Update widget on click dropdown item when creating epic from epic. !22511 -- Ensure When userWithId Is Picked User IDs are Sent. !22528 -- Fix initial sorting of non-persisted Cycle Analytics stages. !22541 -- The Active tab on the Admin Users page should include bots. !22543 -- Fix reply emails with attachments for epics. !22547 -- Fix child epics depth validation. !22729 -- Users without a license do not use a seat. !23146 -- Fix access to horizontal scrollbar when zooming in on a design. -- fix positioning of design overlay pins when viewing design. - -### Changed (13 changes) - -- Rename "Production" stage in Cycle Analytics to "Total". !21450 -- Update copy for start a free gold trial screen. !21820 -- Show Geo node's name in admin page. !21876 -- Improve validation message when a design extension is unsupported. !21888 -- Prevent spiders indexing contribution analytics. !21896 -- Replace depricatedModal (Geo) with GlModal. !22125 -- Allow namespaces in a trial to upgrade to any plan. !22273 -- DAST vendored template pins DAST to latest major version. !22371 -- Rename productivity analytics date parameters. !22377 -- Rename Contribution Analytics endpoint URL. !22877 -- Move 'Allow admins to disable users ability to change profile name' feature to Premium tier. !23034 -- Change security dashboard's filters bar background. !23094 -- Add First & last name on the trial form. !33742 - -### Performance (3 changes) - -- Cache vulnerability summary per project/group. !21373 -- Fix N+1 SQL queries with protected environments. !22101 -- Optimize Group#for_epics scope. !22375 - -### Added (26 changes) - -- GitLab Pages - Storage size Limitations by Project or Group. !17725 -- Add Instance Security Dashboard feature. !18008 -- Add NPM dist-tag support. !20636 -- Track resource weight changes. !21515 -- Add support for custom email templates for service desk. !21745 -- members list to group sso page. !21852 -- Alow to filter by saml identity linked for group members API. !21931 -- Added submit_review quick action. !22061 -- Adds project_id and project_path to package group api. !22089 -- Add trial_ends_on to Namespaces API. !22121 -- Uniquifies path slug creation from trial new group name. !22147 -- Capture Release actions in the audit log page. !22167 -- Add ability to cancel a design discussion. !22241 -- Enable License compliance feature for all instances. !22250 -- Add support for license_scanning artifact report. !22277 -- Add trial counters to usage ping. !22279 -- Support gl-license-scanning-report.json file. !22312 -- Includes _link object in packages list api. !22503 -- Geo - Replicate project designs repositories. !22544 -- Add information about epic to Issue list csv export. !22662 -- Scope approval rules by protected branches via API. !22673 -- Prevent a child pipeline to create further child pipelines. !22675 -- Adds pipeline object to package API. !22854 -- Add zooming functionality to designs in Design view. !22863 -- Introduce Code Review Analytics page. !23031 -- Add support for work in progress limits - Max issue count only. - -### Other (3 changes, 1 of them is from the community) - -- Generate appropriate Vue key for licenses list table. !21566 (allenlai18) -- Limit size of search query for non ES searches. !22208 -- Remove "creations" in gitlab_subscription_histories on gitlab.com. !22278 - - -## 12.6.7 - -- No changes. - -## 12.6.6 - -- No changes. - -## 12.6.5 - -- No changes. - -## 12.6.4 - -- No changes. - -## 12.6.2 - -### Security (2 changes) - -- Don't publish drafts if user can't create notes. -- Remove protected tag access when group is removed. - - -## 12.6.1 - -- No changes. - -## 12.6.0 - -### Fixed (32 changes, 5 of them are from the community) - -- Exclude forks from Group Security Dashboard filter. !14667 -- Clarify why Service Desk feature is unavailable. !19244 -- Bump code quality version in template to 0.85.5. !19354 -- Nullify user roles that have been accidentaly set to a value of 0. !19569 -- Display CI Minutes warning only if minutes left is still below last level. !19751 -- Add a unique constraint to `software_licenses.name` column. !19840 -- Link user accounts to new Smartcards identities on login. !20059 -- Allow valid namespace paths with dots for api PUT. !20079 -- Map software license names from the v1 license scan report to an equivalent SPDX identifer. !20195 -- Prefer sending external pull request pipeline statuses over general statuses to GitHub. !20364 -- Abort rendering of security reports that aren't enabled. !20381 -- Fix Infinite Scrolling on Environments Dashboard Project Selector. !20408 -- Link user accounts to new Smartcards certificate ldap identities on login. !20470 -- Handle design repositories when moving a project to a new storage. !20509 -- Resolve Version dropdown goes wrong if versions are not monotonic. !20515 (Tom Quirk) -- Turn auto_complete_issues on by default. !20525 -- Handle design repositories when moving existing projects to Hashed Storage. !20540 -- Fix dependency metadata on the NPM registry responses. !20549 -- Fix the hiding of undismissed vulnerabilities. !20599 -- Fix check for existing ES limited indexing IDs. !20866 -- Show actions area for fixed vulnerabilities in merge requests. !20867 -- Fix typo in Kubernetes GKE setup error message. !21091 -- Include projects in subgroups in group boards relative position. !21189 -- Fix inability to add comments to a discussion in Design Management. !21229 -- Fix Infinity % / Infinity % on Stacked Progress Bar. !21437 -- Fix sort icon direction when sorting by weight. !21447 (Jan Beckmann) -- Auto-focus title text box when creating new epics. !21516 (Jan Beckmann) -- Fix analytics icon alignment. !21555 -- Invalid trial form to remember user & country. !21840 -- Fix styling on contribution analytics dashboard. !207012 (briankabiro) -- Add correct link to milestone in groups for issuables list after refactor. -- Show the proper message when adding a duplicate issue to an epic. (20175) - -### Changed (13 changes, 1 of them is from the community) - -- Make "Learn more about" links for security scanning popovers on merge request page open in new tab. !13333 (Daniel Tian) -- Redirect Admin > Settings > Geo to Admin > Geo > Settings. !19833 -- Expose epic_id parameter in issues API. !19953 -- Allow to login with Smartcard certificates using SAN extensions that only defines one global email identity. !20052 -- Update SAST.gitlab-ci.yml - Add kubesec analyzer. !20129 -- Update start trial CTA in top right banner to only appear if all namespaces are free. !20177 -- Update billing page trial CTAs. !20383 -- Rename software_license_policies.approval_status to software_license_policies.classification. !20414 -- Add ability to edit Group Hooks. !20898 -- Improve the performance of group templates finder. !20947 -- Hide elasticsearch namespaces and projects when too many in rollout. !21225 -- Update Explore Geo Page. !21448 -- Renamed Conversational Development Index feature to DevOps Score. - -### Performance (1 change) - -- Do not trigger count query for pagination without count. !21232 - -### Added (24 changes, 2 of them are from the community) - -- Add new approval rule type which allows anyone to approve. !15378 -- Add Personal access token expiry policy. !17344 -- Expose time logs for group issues via the GraphQL API. !18689 -- Add application settings needed for soft-deletion. !18790 -- Add link to new epic for promoted issues. !18839 (Jan Beckmann) -- Use issue templates on service desk(backend). !19515 -- Log history for gitlab_subscriptions table. !19694 -- Resolve Show plan of root group on subgroup details page. !20218 -- Adjust group members API to include group SAML info. !20357 -- Add user ability to append template to incoming service desk issues. !20476 -- Add audit event when member access is removed due to expiration. !20529 -- Update CI templates to use sitespeed 11.2.0. !20561 -- Added migration for issue link types. !20617 -- Add security configuration navigation item. !20711 -- Create a new database composite index to support cross-project artifacts downloads. !20721 -- Add deployment API updated_at filters. !20731 -- Show loading spinner in design card while design is uploading. !20814 -- Add most affected projects to group security dashboard. !20892 -- Introduce Credentials Inventory. !20912 -- Add GraphQL mutation for changing weight of an issue. !21331 -- Cache vulnerability findings history endpoint for security dashboards. !21349 -- Added Marginalia feature which can generate PostgreSQL query comments to Gitlab. !21364 (BalaKumar) -- Add API for states by country. !21417 -- Improved trials sign up for gitlab.com. !21650 - -### Other (8 changes, 2 of them are from the community) - -- Store and look up design management version authorship from database. !17322 -- Remove redundant ManagedLicenses controller. !20131 (briankabiro) -- Updated board_service.js to use boardStore directly. !20141 (nuwe1) -- Delete any stale deploy access levels by group. !20689 -- Add project webhooks limits on GitLab.com. !20730 -- Remove the design_management_flag feature flag from the codebase. The feature flag toggles the Design Management feature, and has been enabled by default since 12.2. !20883 -- Remove operations_feature_flags_clients.token column. !21016 -- Update the alerts used in the Dependency List to follow GitLab design guidelines. !21760 - - -## 12.5.8 - -- No changes. - -## 12.5.5 - -- No changes. - -## 12.5.4 - -### Security (1 change) - -- Fix stale Elasticsearch permissions when moving group from public group to private parent group. - - -## 12.5.3 - -### Performance (1 change) - -- Geo - Improve query performance to determine job artifacts to sync when selective sync is enabled. !19583 - -### Other (1 change) - -- Geo - Does not schedule duplicated jobs while backfilling uploads, LFS objects and job artifacts. !20324 - - -## 12.5.1 - -### Security (6 changes) - -- Protect Jira integration endpoints from guest users. -- Fix private comment Elasticsearch leak on project search scope. -- Filter snippet search results by feature visibility. -- Hide AWS secret on Admin Integration page. -- Fail pull mirror when mirror user is blocked. -- Prevent IDOR when adding users to protected environments. - - -## 12.5.0 - -### Security (5 changes) - -- Fixes a Open Redirect issue in `InternalRedirect`. -- Filter out packages the user does'nt have permission to see at group level. -- Do not show private cross references in epic notes. -- Redact search results based on Ability.allowed?. -- Do not index system notes for issue update. - -### Removed (2 changes, 1 of them is from the community) - -- Remove the Geo Clone Modal. !18897 (Zack Cuddy) -- Remove Pendo Snippet. !19400 - -### Fixed (17 changes) - -- Fix notification button size in notification settings. !16672 -- Don't store full blob path in ES filename field. !18470 -- Add messages to warn and stop users when attempting to change the path of projects with NPM packages. !18515 -- Pass pipeline variables when expanding Bridge downstream variables. !18875 -- Fix equality operator for Prometheus alerts. !18919 -- Fix rake task to rollback Geo migrations. !18975 -- Default current user to mirror user when creating pipelines for GitHub pull requests. !19072 -- Fix overlapping `Skip Trial` block. !19218 -- Fix Dependency List is empty if last pipeline is retried. !19241 -- SCIM pagination startIndex handles string input. !19331 -- Display packages with multiple licenses. !19333 -- Expose commit sha on Vulnerabilities::Occurrence. !19668 -- Fix admin welcome image not found. !19676 -- Revert ES support for public/internal project snippets. !19715 -- Updated View documentation link on cluster page. !19780 -- Enable pod logs nav menu only for maintainers in projects with k8s environments. !19927 -- Hide labels from issue board cards. !20072 - -### Changed (13 changes) - -- Inherit children epics start and due dates. !14366 -- Update the frontend diffing code to support v2 license scan reports. !18105 -- Implement pod logs page using Vue. !18567 -- Move DAST reports logic for the Merge Request widget to the backend. !18660 -- Add created_before/after filter to audit events. !19035 -- Get rid of unnecessary duplication of alert’s title from Alert Details. !19214 -- Hashed storage is now a requirement for Design Management. !19259 -- Expose epic in issues API. !19300 -- SCIM GET /Users supports requests without a filter. !19421 -- Enable Cycle Analytics Feature by default. !19484 -- Enforce a max size accepted for sentry issues list. !19649 -- Limit input size for Prometheus alert JSON payload. !19940 -- Adds in a URL field for DAST reports modal data. !20162 - -### Performance (2 changes) - -- Fix new project page load performance. !18180 -- Geo - Improve query performance to determine LFS objects to sync when selective sync is enabled. !19051 - -### Added (17 changes, 1 of them is from the community) - -- Add filter for dismissed vulnerabilities on security dashboards. !16692 -- Data API endpoint for tasks by type chart within the analytics workspace. !17944 -- Hide labels from issue board cards. !18533 -- Skip Onboarding feedback when tracking is disabled. !18671 -- API endpoint to list the packages of a group. !18871 -- Allow to create epics with GraphQL. !19030 -- CI_JOB_TOKEN can be accepted with 'Bearer ' prefix to allow for NPM registry usage. !19059 -- Add issue IID to a title of generic alerts with a default title. !19086 -- Update sidebar to differentiate between groups, subgroups, and projects. !19158 -- SCIM can be used to manage group membership. !19329 -- Expose number of sub-epics and epic issues in GraphQL API. !19450 -- Add logs menu item to the sidebar. !19471 -- Add public API for Feature Flags. !19547 -- Ignore project_ci_cd_settings.merge_trains_enabled column. !19695 -- Add a usage ping metric for number of activated Alert Services. !19765 -- New discussions on designs will generate a system note on the issue. !19990 -- Expose SHA of squashed commit via API when fast-forward merge is enabled. (minghuan lei) - -### Other (6 changes, 1 of them is from the community) - -- Migrated contributors charts to echarts. !16677 -- Added autogenerated Markdown support for Vulnerability title and description. !18283 -- Rename user_id to author_id in design_management_versions table. !18506 -- Revert notification for updated privacy policy. !18900 -- Remove plaintext tokens for feature flags clients. !18923 -- Remove IIFEs from jira_connect.js file. !19248 (nuwe1) - - -## 12.4.8 - -- No changes. - -## 12.4.5 - -- No changes. - -## 12.4.3 - -### Fixed (2 changes) - -- Fix admin welcome image not found. !19676 -- Revert ES support for public/internal project snippets. !19715 - - -## 12.4.2 - -### Fixed (1 change) - -- Fix feature flag check for productivity analytics. !19025 - - -## 12.4.1 - -### Security (6 changes) - -- Do not display project labels that are not visible for user accessing group labels. -- Do not index system notes for issue update. -- Redact search results based on Ability.allowed?. -- Do not show private cross references in epic notes. -- Filter out packages the user does'nt have permission to see at group level. -- Fixes a Open Redirect issue in `InternalRedirect`. - - -## 12.4.0 - -### Security (2 changes) - -- Prevent IDOR when adding groups to protected environments. -- Hide approvers if a rule has any hidden groups. - -### Removed (1 change) - -- Remove db_load_balancing_index gauge metric. !17561 - -### Fixed (26 changes, 1 of them is from the community) - -- Admin settings errors now shown in the correct panel. !14374 -- Add missing error handling for epic quick actions. !15648 -- Fix project exports clobbering concurrent export paths. !16280 -- Fixes scroll handle icon in time series. !16354 -- Remove hardcoded Medium confidence for Container Scanning vulnerabilities. !16395 -- Fixed renaming changed files. !16539 -- Fix project-defined metrics dashboards not rendering. !16589 -- Remove duplication of Licenses in Dependency List page. !16946 -- Backfill SPDX identifiers in software_licenses table. !17004 -- Monitor charts: Validate form for creating an alert before submitting. !17109 -- Hide Push rules link when you dont have a license installed. !17530 -- Operations Dashboard: fix minimum query message. !17574 -- Fix page layout for sidebar on designs view. !17579 -- Display error for invalid insights config. !17589 -- Display appropriate approval status icon next to license. !17613 -- Fix deduplication of WASC vulnerabilities in the Security dashboard. !17778 -- Fix burndown negative count edge case. !18053 -- Change design management empty state button style. !18060 (George Tsiolis) -- Decouple dependency list parser from v1.0 license scanning report. !18103 -- Respect Group SSO Enforcement on projects where the user is an owner. !18154 -- Scoped labels do not remove old label in board sidebar. !18313 -- Restrict number of users input to positive numbers. !18381 -- Fix undefined method log_geo_deleted_event for MergeRequestDiff. !18405 -- Add default empty values to prevent parser errors from approving the Vulnerability-Check rule. !18423 -- Fix time tracking info when the sidebar is collapsed. -- Fix Discussion tab counter on Issues. - -### Changed (18 changes, 1 of them is from the community) - -- Style burndown charts with gitlab-ui. !15463 -- Add epic_iid parameter to issues API. !15640 -- Use a single badge to show number of active alerts on metrics dashboards. !15789 -- Allow files with .svg extensions to be uploaded as designs for Design Management. !16160 -- Implement dismissal behaviour when dismissed vulnerabilities are hidden. !16207 -- Remove environment_metrics_show_multiple_dashboards feature flag. !16640 -- Make name an optional parameter of releases. !16647 -- Expose epics closed_at on API. !17156 -- Add static_context API param when editing GitHub project service. !17397 -- Support variable expansion in branch property of bridge jobs. !17430 -- Add environment dropdown to pod logs screen. !17532 -- Parse v2 license scanning reports. !17646 -- Remove broken HTML5 routing behaviour from Pipeline Security Dashboard. !17767 -- Change Prometheus Alert details list from bulleted to description list. !18116 (Vitali Tatarintev) -- Check for software license violations using SPDX identifiers. !18300 -- Move 'Advanced search' message to search page title. !18349 -- Add alert message for feature 'require approval from code owners' being moved. !18715 -- Enable Productivity Analytics feature by default. !18754 - -### Performance (1 change) - -- Reduce excessive GC on pull mirrors. !17931 - -### Added (35 changes) - -- Allow Design Management files and data to be included in the project exporter/importer. !14702 -- Create system notes for design events. !14791 -- Paginate SCIM responses using count and startIndex. !14892 -- Front-End UI for design deletion. !15034 -- Add max issue count to lists. !15116 -- Sign in / sign up step for trial. !15289 -- Add notification for updated privacy policy. !15435 -- Show Billing Plan as Cards in profile and groups. !15437 -- Add Audit Event API. !15698 -- Add configurable Code Owner approvals for protected branches. !15862 -- Add Alerts Service to Projects. !16117 -- Add Conan check_credentials API endpoint. !16215 -- Initial endpoint for exposing Cycle Analytics stages for the new frontend. !16240 -- Add ability to multi select issue board cards. !16317 -- Add License-Check approval UI. !16371 -- Add links to associated releases on Tags page. !16479 -- Frontend implementation for improved trial sign-up experience for GitLab.com (SaaS) users. !16732 -- Return Todos for Designs via the REST API. !16885 -- Set active insights dashboard tab from hash fragment. !16904 -- Extend group IP restriction to Git activity. !16980 -- Inactivate pipeline retries for Merge Trains. !17065 -- Expose time when the build was generated. !17113 -- Add new table for recording commit counts per file. !17277 -- Add vendored template for Browser Performance Testing. !17319 -- Link Gitlab managed Prometheus alerts and issues. !17477 -- Disable insights tab navigation whilst current page loads. !17678 -- Drop all merge requests from merge trains when the project-level setting is disabled. !17774 -- Implement DAST for default branches. !17789 -- Add rack attack settings for prometheus and generic alert endpoint. !17859 -- Add Licenses list backend usage ping. !17925 -- Associate self-managed Prometheus Alerts and Issues. !18046 -- Operator can see all projects using an instance level cluster. !18173 -- Expose subscribed attribute for Epics in GraphQL. !18607 -- Expose epic participants on GraphQL. !18691 -- Adds a generic alert integration which can accept alerts from any source via a generic webhook receiver. - -### Other (4 changes) - -- Productivity analytics: Add scatterplot. !15569 -- Updated sidebar navigation icons to be horizontally centered when bar is condensed. !16820 -- Pin major version of SAST analyzers. !17110 -- Docs for protected branch code owner approval API. !17132 - - -## 12.3.9 - -### Security (1 change) - -- Fix stale Elasticsearch permissions when moving group from public group to private parent group. - - -## 12.3.7 - -### Security (6 changes) - -- Protect Jira integration endpoints from guest users. -- Fix private comment Elasticsearch leak on project search scope. -- Filter snippet search results by feature visibility. -- Hide AWS secret on Admin Integration page. -- Fail pull mirror when mirror user is blocked. -- Prevent IDOR when adding users to protected environments. - - -## 12.3.4 - -### Fixed (2 changes) - -- Fix replies to service desk emails for projects with issue access as Only Project Members. !17401 -- Geo: LFS not being synced. !17633 - - -## 12.3.2 - -### Security (2 changes) - -- Hide approvers if a rule has any hidden groups. -- Prevent IDOR when adding groups to protected environments. - - -## 12.3.1 - -- No changes. - -## 12.3.0 - -### Security (3 changes) - -- Limit number of jobs in running pipelines for the past hour on per plan basis. !1182 -- Filter out old system notes for epics in notes api endpoint response. -- Do not allow creation of projects from group templates if project is not descendant of that group. - -### Removed (1 change) - -- Remove Ruby Elasticsearch indexer. !15641 - -### Fixed (53 changes, 5 of them are from the community) - -- LDAP group sync: check parent group membership and improve performance. !13435 (Alex Lossent) -- Added a migration which fixes discussions for existing promoted epics. !14708 -- Fix Docker Registry access when Group SAML session enforcement is active. !14843 -- Fix missing borders between settings items. !14877 -- SCIM uses fallbacks when name.formatted not present. !14878 -- Fix visibility of link to dependency-list in project sidebar based on permissions. !15066 -- Hide info for unlicensed projects on Ops Dashboard. !15099 -- Fix focus-visibility of vulnerability-actions within security dashboard. !15115 -- Resolve Design viewer does not respect version. !15119 -- Fix bug to display alert menu correctly in dashboards. !15261 -- Allow developer role to access group-level templates when creating a new project. !15364 -- Maintain related issues after moving issue. !15391 -- Fix the documentation link on the empty Dependency List page. !15402 -- Fix broken docs link on security dashboard. !15404 -- Change epics count in sidebar to only count open epics. !15459 -- Include ancestor group labels in autocomplete for epics. !15460 -- Enable target users across all feature flag environment scopes. !15500 -- Change payload for comparing security reports in MR widget. !15531 -- Add space between CI usage warning messages. !15563 (briankabiro) -- Make sure groups with templates finder returns subgroups. !15631 -- Properly delete files when a package is removed. !15634 -- Fix x-axis burndown chart offset by timezone. !15690 -- Resolve SRV records for DB load balancing. !15691 -- Ensure all CI minutes used are reset for all namespaces and relative projects. !15744 -- Show proper error in SCIM create user endpoint. !15756 -- Update permissions on Dependency List page. !15771 -- Allow ancestor group milestones in issue board scope. !15858 -- Show weight on new board issue. !16028 (Lee Tickett) -- Do not show 'automatically removed' suffix for manually removed labels. !16079 -- Link to the embedded doc in the Geo callout about hashed storage. !16114 -- Fix LFS authentication URL in EE. !16146 -- Prevent project's approval rules having same name. !16216 -- Fix create issue for container scanning from security dashboard. !16226 -- Add current_user to security report comparison services. !16252 -- Fix setting of weight of a new issue in board list. !16299 -- Update ExternalPullRequest on :synchronize action to ensure source_sha is updated locally. !16318 -- Fix wrong tier error message for Operations dashboard. !16319 -- Perform case insensitive diff on license names. !16335 -- Moves Buy additional minutes button to the pipelines tab. !16443 -- Update GitHub Importer Personal Access Token field description for CI/CD projects only to reflect latest OAuth changes. !16453 -- Use Pull Request number instead of internal Pull Request ID. !16504 -- Fix service desk emails not creating issues intermittently. !16577 -- Reinitialize metrics files on webserver master process start. !16623 -- Fix the group's epic page. The Paste issue link placeholder shown as 'undefinedundefinedundefined' in Chinese environment. And the error message showed nothing. !16628 (wdmcheng) -- Fix issue redirects going to /issues/:id/designs. !16638 -- Eliminate analytics feature flag requirement for /analytics routes. !16663 -- Match environment names case insensitively for feature flag spec search. !16691 -- Fix merge request redirects going to /commits page. !16705 -- Align text color for edited with issue/mr. !16721 -- Added Packages top item to the group level packages fly out navigation menu. !16791 -- Restores data for assignee changes in merge request webhooks. !16812 (Jesse Hall @jessehall3) -- Fix alignment of comments count in issue and MR lists. !16829 -- Wait until pipeline is completed before checking for software license violations. !16853 - -### Changed (27 changes, 1 of them is from the community) - -- Geo: Refactor data-sources to allow for replication of content in Object Storage. !13997 -- Improve UX multi assignees in MR. !14851 -- Add ability to block API pushes to protected branches when contents match CODEOWNERS rule. !14900 -- Add browser notications to add/edit/delete vulnability dismissal reasons. !15015 -- Geo: Add orphaned project registry cleaner. !15021 -- Update Security Dashboard for improved usability. !15050 -- Present SAST report comparison logic to backend. !15114 -- Ensure design notifications are sent. !15250 -- Apply the group setting "Restrict access by IP address" to API requests. !15282 -- Hide boards-switcher on group boards. !15293 (briankabiro) -- Group Security Dashboard shows projects with security reports only. !15334 -- Use GlEmptyState component for design management empty state. !15374 -- DB Load Balancing: Log Prometheus current number of hosts and current index. !15440 -- Clarify SSO enforcement setting behaviour. !15533 -- DB Load Balancing: Support SRV lookups. !15558 -- Add status checking behaviors to pipeline triggers. !15580 -- Only show Service Desk email address to project members. !15676 -- Use static status check names on GitHub integrations. !15737 -- Display the Security Dashboard in the Security tab of the pipeline view. !15824 -- Remove primary button from feature flags empty state and update text. !15841 -- Extend License Compliance entity for Pipelines and MR view. !15957 -- Improve DB load balancing log to log host offline due to replication lag. !15995 -- Eliminating `analytics` feature flag and introduce separate feature flags for Analytics features. !16102 -- Add asterisk to name field in new feature flag form. !16248 -- Update Container Scanning job template, use klar image. !16342 -- Improve projects list page UI. !16656 -- Add user feedback to exit routine of onboarding tour. - -### Performance (2 changes) - -- Send only necessary fields on mr-widget auto-refresh. !15495 -- Two step Routable lookup. !16621 - -### Added (46 changes, 1 of them is from the community) - -- Public project-level approval rule API. !13895 -- Support reordering issues and epics using Drag&Drop. !14565 -- Add deletion support for designs. !14656 -- Add Epics select dropdown to Issue sidebar. !14763 -- Edit delete vuln dismissal message. !14770 -- add Productivity Analytics page with basic charts. !14772 -- Add License information to the Dependency List based on current license rules. !14905 -- Adds an api to generate suggestions for username. !15048 -- Add Upgrade button to the User Billing page. !15075 -- Enable "only/except: external_pull_request" with GitHub integration when a pull request is open for the given ref. !15082 -- Allow to filter epics by timeframe or state using GraphQL. !15110 -- Support restricting group access by multiple IP subnets. !15142 -- Merge License info to Dependency List report. !15157 -- Add Licenses info into Dependencies response. !15160 -- Add 'License-Check' approval rule to enforce license compliance policy. !15196 -- Added a toggle to show/hide dismissed vulnerabilities in the security dashboard. !15333 -- Add audit event for archiving & unarchiving projects. !15362 -- Pressing the Escape key now closes designs in Design Management. !15379 -- Expose a count of Notes for a Design in a new notes_count property of DesignType in GraphQL. !15433 -- Implement public MR-level approval rules API. !15441 -- Cancel redundant merge train pipelines. !15450 -- Add vulnerabilities to Dependencies API. !15485 -- Expose a new events property of DesignType in GraphQL that represents the change that happened to a Design within a given version. !15561 -- Add new layout for trial. !15630 -- Track repository pushes as audit events. !15667 -- Create Metadata/Tags table. !15770 -- Allow SmartCard authentication to use SAN extensions. !15773 -- Maximum Users metric in Admin Dashboard includes current active user count. !15810 -- Public MR-level approval state API endpoint. !15859 -- Add secondary lag message on Git push over HTTP. !15901 -- Expose epic_iid in issues API. !15998 -- Refresh license approval check when a license is blacklisted. !16070 -- Disable editing of the 'License-Check' approval rule name. !16149 -- Implement Cluster Environments polling. !16316 -- Support creating project from template via API. !16352 -- Add link to additional shared minutes from pipeline quote overview. !16389 -- Add audit events for protected branches. !16399 -- Geo: Exit LogCursor if it has been failing for too long. !16408 -- Implement design comment counts and current-version status icon indicator. !16416 -- Track page view counts for Cycle Analytics and Productivity Analytics features. !16431 -- Update release blocks to support association of milestones. !16562 -- Set default whitespace diff behaviour. !16570 (Lee Tickett) -- Implement `/zoom` and `/remove_zoom` quick actions. !16609 -- Add Snowplow click tracking for issue sidebar. !16833 -- Upgrade pages to 1.9.0. -- Adds total usage information to the usage quotas page. - -### Other (27 changes, 8 of them are from the community) - -- Update Pipelines Minutes expiry banner to Alert Component. !14786 -- Add internal API for group cluster environments. !15096 -- Rename approval rule. !15140 -- Productivity Analytics: Add error handling for reporting on groups which have no plan. !15291 -- Convert Issue Analytics chart into ECharts. !15389 -- Display group's full name when creating a project from custom group-level project templates. !15392 -- Only in ee available selection entries in user settings adapted to match ce. !15452 (Marc Schwede) -- Rename Approvers field and modal title. !15461 -- Add a tooltip to Add Designs button. !15471 -- Show the paths for groups in groups dropdown. !15513 -- Turn epic dates into one clickable block. !15722 (Lee Tickett) -- Add default route for admin/geo. !15726 (Lee Tickett) -- Improve unapproved MR merge button text. !15745 (Lee Tickett) -- Update the ES indexer to v1.3.0. !15821 -- Groups dropdown: Fix group styles in dropdown. !15839 -- Document SRV handling for DB load balancing. !16000 -- Internationalization of shared/promotions/_promote_audit_events.html.haml. !16033 (Takuya Noguchi) -- Remove vue-resource from service_desk_service.js. !16041 (Lee Tickett) -- Remove unused classes for report comparison. !16045 -- Remove vue-resource from related-issues. !16057 (Lee Tickett) -- Add CI variable for repository languages. !16477 -- SAST template that doesn't rely on Docker-in-Docker. !16487 -- Adding docs for Web IDE Default Commit Options. !16629 -- Adding top border back to snippet files. !16709 -- Remove vue-resource from drafts. (Lee Tickett) -- Changing instance of key-modern icon to key icon. -- Fixes style-lint errors and warnings for EE builds.scss file. - - -## 12.2.11 - -### Fixed (1 change) - -- Backport the new reliable fetcher. !21198 - - -## 12.2.8 - -### Fixed (1 change) - -- Geo: LFS not being synced. !17633 - - -## 12.2.7 - -### Security (1 change) - -- Restrict access for security reports in MR widget. - - -## 12.2.6 - -### Security (3 changes) - -- Hide approvers if a rule has any hidden groups. -- Fix Gitaly SearchBlobs flag RPC injection [Gitaly v1.59.3]. -- Prevent IDOR when adding groups to protected environments. - - -## 12.2.5 - -### Security (1 change) - -- Do not allow creation of projects from group templates if project is not descendant of that group. - - -## 12.2.4 - -### Fixed (1 change) - -- Fix group hooks not firing in PostReceive. !15598 - - -## 12.2.3 - -### Security (2 changes) - -- Limit number of jobs in running pipelines for the past hour on per plan basis. !1182 -- Filter out old system notes for epics in notes api endpoint response. - - -## 12.2.2 - -### Security (2 changes) - -- Limit number of jobs in running pipelines for the past hour on per plan basis. !1182 -- Filter out old system notes for epics in notes api endpoint response. - - -## 12.2.1 - -- No changes. - -## 12.2.0 - -### Security (5 changes) - -- Gate MR head_pipeline behind read_pipeline ability. -- Queries for Upload should be scoped by model. -- Grant admin note permissions in epics for maintainers and owners. -- Fix bypass email verification when SCIM user is created via API. -- Do not allow localhost urls in GitHub Integration. - -### Removed (1 change) - -- Removes support for matching on app label for Kubernetes deploy boards, terminals, and pod logs. !14020 - -### Fixed (67 changes, 2 of them are from the community) - -- Fix error when creating issues in scoped boards. !11080 -- Resolve Snowplow tracking for notes does not work in Firefox. !12578 -- Fix License App user count for ultimate. !14055 -- Enable incremental elasticsearch index updates for wikis. !14057 -- Ensure U2F javascript runs on GroupSAML callback. !14262 -- Fix to allow adding multiple instance-level clusters. !14270 -- Initialize chart data in same order as config. !14283 -- Make side-nav expanded when on dependency list. !14314 -- Add anchor to learn-more-button on the dependency list page so it links to the right location in the docs. !14316 -- Un-block UI interactions while Code Quality MR widget is loading. !14323 -- Enforce SSO on subgroups and projects. !14364 -- Fix race condition on merge train that it cannot process merge request sometimes. !14386 -- Fix MWPS/ADMTWPS system notes shows wrong sha. !14397 -- Show position of merge trains in system notes. !14398 -- Respect limited indexing when importing projects. !14413 -- replace dropdown in project cards in Operations Dashboards with a remove icon. !14419 -- Allow blank values for IP restriction setting. !14427 -- Fix weight quick action to support 0 value. !14432 -- Fix cluster health charts on instance level. !14440 -- Fix on_environment scope to not re-order whole query. !14481 -- Tick instance runner after customer purchases additional CI minutes. !14494 -- Fix race condition of `refs/merge` competing overwrite. !14495 -- Fix 'learn more'-link on dependency page. !14496 -- Allow subgroups to use their parent group's custom project templates. !14499 -- Support creating/publishing drafts with commit ID. !14520 -- Do not include milestone attribute when promoting issue to epic. !14532 -- Include Subgroups in Contribution Analytics calcualtions. !14536 -- Fix GeoNode#name backward compatibility. !14564 -- Starting a new discussion only on line without Draft note created on it. !14569 -- Fix reply to discussion on promoted epic. !14576 -- Fix UI breaking on forms on Bootstrap Grid system. !14581 (Takuya Noguchi) -- Geo - Show why node is unhealthy in the rake task to check the health of the secondary node. !14615 -- Fix displaying feature flag names in the audit log. !14621 -- Support emails as ID in SCIM. !14625 -- Fix negative values in burndown charts. !14632 -- Fixes #12780 by avoiding incorrect cached values. !14651 -- Avoid Design Management thumbnails from being distorted/stretched. !14670 -- Support 0 weight in issue sidebar. !14683 -- Adds a downard chevron to Dashboards icon in the header. !14711 -- Handling use case for repeat trial. !14714 -- Fix suggested namespace in deploy boards help text. !14739 -- Fix duplicated issues while sorting by weight. !14750 (Vasiliy Yaklushin) -- Resolve Make sure not to redirect to the onboarding welcome page on mobile devices. !14842 -- Fix Jira DVCS integration not working when project name has dots. !14855 -- Fix the Epics filter bar alignment. !14857 -- Fix max attachment size used in CSV export email messages. !14884 -- Fix issue that caused the "Merge Immediately" option not to be available when merge trains were enabled. !14894 -- Fix error fetching project security dashboard data for maintainers with access to a project but not to its group & fix routing error for project security dashboard for projects not in a group. !14896 -- fix: operation dashboard delete icon tooltip title. !14899 -- Improve help text and docs about custom metrics. !14912 -- Geo - Disable built-in Sidekiq retry for verification workers. !14946 -- Remove visual review app feature flag. !14958 -- Geo - Warn when reusing an existing tracking database. !14981 -- Fix min approvals required for new MR rules. !14988 -- Fix admin notes internationalization text. !15001 -- Batching minutes reset queries to avoid query timeouts. !15002 -- Only show a pull mirror if mirroring is actually enabled. !15049 -- Update epic dates when creating an issue that adds the epic using commands. !15062 -- Show correct historic max user count for a license. !15107 -- Fix job scheduling when extra CI minutes purchased and minutes usage is above application shared Runners minutes limit. !15120 -- Skip ES commit results for deleted projects. !15236 -- Align "New metric" page title correctly to the rest of the page. !15259 -- Bypass push rules for merge to ref service. -- Ensure LDAP Group Sync by Filter normalizes DNs. -- Add support for partial approval in chat message merge request event handler. -- Insights: Only display page config with valid values. -- Shrink empty/loading states for cluster health charts. - -### Changed (33 changes, 2 of them are from the community) - -- Update merge requests section description text on project settings page. !11098 -- First pass at auto remediation changes. !12010 -- Create incident issues by default for alerts. !12814 -- Resolve Move approval user password input from inline to a modal. !14123 -- Add Copy to Clipboard Button to Review App Modal. !14290 -- Remove "Allow merge trains" option from project settings page. !14429 -- Change epics reordering to not update timestamps. !14441 -- Remove feature flag behind MR's multiple assignees. !14506 -- Prioritize mirrors for CI over other mirrors. !14575 -- Move external authorization service API management to EE. !14598 -- Improve default title and description of issues opened from managed Prometheus alerts. !14614 -- Add 'Security & Compliance' as top-level navigation item to the project-sidebar. !14628 -- Add "Security" as nav-item to group-view sidebar. !14639 -- MVC: Group and User Billing Page Improvement - Avatar and Name. !14660 (Ammar Alakkad) -- Geo: Increase HTTP read timeout of proxy requests to 60 s. !14671 -- Show threshold in incident title for gitlab alerts. !14688 -- Expose licence management reports comparison. !14723 -- Move metrics alerts form to modal. !14760 -- Add new documentation and link for automating Visual Review feedback. !14789 -- Expose licence management report for pipeline. !14796 -- Present container scanning report comparison via API. !14898 -- Allow approvals_required to be lower than project. !14902 -- Rename snowplow_collector_uri to snowplow_collector_hostname. !14963 -- Remove duplicated 'New metric' button in prometheus configuration. !14964 -- Remove validation of MR level approval rules in merge requests. !14968 -- Add missing merge request committer approval setting to API. !15019 (jramsay) -- Move dependency scanning comparision logic to backend. !15023 -- Update permissions for Dependency List. !15044 -- Dependency List Job Failed Alert - Hide link to job if payload from API does not include 'job_path'. !15068 -- Use vulnerability message on Dependency list. !15125 -- Rename License Management to License Compliance. !15163 -- Elasticsearch: index snippet content only up to 1 MB. !15215 -- Add note count, updated timestamp, and closed tag to epics list view. - -### Performance (9 changes) - -- Remove support for checking legacy security reports. !14291 -- Cache Geo checks for a certain time period instead of per request. !14513 -- Cache vulnerability history per project. !14619 -- Fix N+1 queries in vulnerabilities API. !14638 -- Improve Elasticsearch database import by retrying only failed cases first. !14657 -- Refactor feature flag scopes for_unleash_client. !14768 -- Split MR widget into cached and non-cached serializers. !15045 -- Geo: Don't wait when exiting the log cursor. !15070 -- Geo: Improve performance of clean up worker for selective sync. - -### Added (60 changes, 1 of them is from the community) - -- Enabled setting the Security Dashboard as a default view for groups. !7889 -- Paginate license management. !10983 -- Allows any user to comment on a dismissed vulnerability. !12067 -- Enable security gates for merge requests. !13109 -- Enable deployment boards and pod logs for instance and group clusters. !13307 -- Support for blocking merge requests. !13506 -- Add the ability to publish and install NPM packages from groups and subgroups. !13986 -- Expose saml_provider_id in the users API. !14045 -- Allow adding groups to CODEOWNERS file. !14071 -- Add group packages page. !14089 -- Add merge train helper text to merge request widget. !14097 -- Support remapping of Git repos via SSH with project aliases. !14108 -- Allow bulk editing group issues. !14141 -- Expose reject_unsigned_commits option via the API. !14165 -- Add instance level analytics. !14173 -- Show design boards at previous versions. !14292 -- Build cascading train refs for parallel execution of Pipelines for merge trains. !14296 -- Add notifications for CI Minutes quota limit approaching. !14328 -- Require session with smartcard login for Git access. !14368 -- Add analytics top navigation link. !14377 -- Add Quick Actions for adding/removing epic parent relations. !14451 -- Geo: Validate file transfers (attachments, LFS objects, artifacts). !14477 -- Create system notes for scoped labels. !14487 -- Show deploy boards for group cluster deployments. !14504 -- Support feature flag gradualRolloutUserId strategy on backend. !14515 -- Add percentage rollout support to feature flag UI. !14538 -- Added new Design Management feature for GitLab Premium. With Design Management, you can upload design assets to issues and view them all together to easily share and collaborate with your team. !14582 -- Add Ability to Enable Feature Flags by User ID. !14596 -- Add ability to view different design versions. !14601 -- Allow bulk editing group merge request milestones. !14616 -- Add cycle analytics on group level. !14627 -- Resolve Add point of interest discussions to designs. !14648 -- Limit creation of the Alert Bot in usage ping. !14649 -- Audit strategies for feature flag scopes. !14652 -- Read and write User Admin notes via API. !14662 -- Add date range dropdown for Analytics. !14681 -- Allow auditors to see the group and project security dashboards. !14695 -- Add `Incident` label to issues created by the Alert Bot. !14705 -- Merge vulnerabilities data into Dependency List report. !14706 -- Support an alert template field to allow for incident customization. !14710 -- Add a rake task to run a LDAP group sync. !14735 (Harish Ramachandran and Cindy Pallares) -- Log impersonation actions in audit log. !14740 -- Support feature flag userWithId strategy on backend. !14752 -- Add vulnerabilities to dependency list. !14761 -- Add project download & project export audit events. !14775 -- Count design usage, in order to meet SMAU OKR. !14779 -- Support multiple sites in DAST reports. !14787 -- Allow adding email domain to group to limit users to ones with email in this particular domain. !14800 -- Allow global search on comments. !14818 -- Add filtering by vulnerabilities to Dependency List. !14825 -- Support for bulk editing labels at a group level. !14827 -- Add an Upgrade button to Group's billings page. !14849 -- Add authorization to the dependency list. !14867 -- Add cycle analytics on a group level - FE. !14891 -- Add Dependency Scanning information to the Dependency List. !14955 -- Tweak Geo node form text. !14957 -- Geo: Make Object Storage synchronization in Geo Nodes configurable via Admin UI. !15000 -- Enable security report approvals by default. !15087 -- Add Collapse buttons to Operations settings. !15117 -- Geo: Support replication for Docker container registries. !15135 - -### Other (19 changes, 2 of them are from the community) - -- Update License Management section information under CI/CD settings. !4295 -- Adds a popover to vulnerability-check approvals. !14038 -- Show warning for deploy boards if legacy app label is used. !14103 -- Change spelling of wildcare to wildcard on feature flag new and edit forms. !14171 -- Rename `TOKEN_TYPES` to `USER_TOKEN_TYPES`. !14209 (Arun Kumar Mohan) -- Improved dependency proxy page with some small UI enhancements. !14448 -- Replace 'JIRA' with 'Jira' for EE-specific code comments. !14479 (Takuya Noguchi) -- Remove unused EE::GitPushService. !14483 -- Improved project level navigation for package features. !14492 -- Add Ability to Remove Projects From the Envivonment Dashboard. !14563 -- Increase rate at which UpdateAllMirrorsWorker schedules jobs and reschedules itself. !14573 -- Cleaned up package list icons to improve consistency inside package section. !14607 -- Limit width for onboarding popovers. !14641 -- Updates the security dashboard documentation link. !14669 -- Add counter columns to geo_node_statuses database table. !14943 -- Geo - Rename recheck actions to reverify. !14979 -- Remove deprecated name sast_container from licensed features. !14980 -- Remove default relative_position from epic_issues. !15008 -- Fix alignment of activity dropdown in epic tabs; add counter to discussion tab. - - -## 12.1.14 - -### Fixed (1 change) - -- Geo: LFS not being synced. !17633 - - -## 12.1.12 - -### Security (4 changes) - -- Hide approvers if a rule has any hidden groups. -- Fix Gitaly SearchBlobs flag RPC injection [Gitaly v1.53.4]. -- Prevent IDOR when adding groups to protected environments. -- Upgrade mermaid to prevent XSS. - - -## 12.1.10 - -- No changes. - -## 12.1.5 - -- No changes. - -## 12.1.4 - -### Fixed (3 changes) - -- Don't send CI usage email notifications when quota is unlimited. !14810 -- Fix variable mismatch in code quality widget. !14829 -- Change package validation scope to fix Maven package naming functionality. !14922 - - -## 12.1.3 - -### Fixed (3 changes) - -- Allow bulk editing group issues for reporter access level and higher. !14744 -- Initialize Application Table on Instance-wide Cluster Details. !14749 -- Hide "Buy additional minutes" button for self-managed installs. !14826 - -### Added (4 changes) - -- Add Vulnerabilities API scoping: pipeline. !14376 -- Add policy for accessing dependencies. !14561 -- Add filtering by package manager for dependencies. !14562 -- Add dependency list public endpoint. !14612 - - -## 12.1.2 - -### Security (1 change) - -- Ensure the Insights configuration project is part of the group and is accessible to the current user. - -### Security (6 changes) - -- Don't override approval rules if not allowed. -- Grant admin note permissions in epics for maintainers and owners. -- Queries for Upload should be scoped by model. -- Fix bypass email verification when SCIM user is created via API. -- Prevent an XSS vector in the add approver email. -- Make vulnerability feedback invisible if limited access to repo. - - -## 12.1.1 - -### Fixed (1 change) - -- Don't send CI usage email notifications for self-hosted instances. !14809 - - -## 12.0.12 - -### Fixed (1 change) - -- Backport the new reliable fetcher to 12.0.9. !20532 - - -## 12.0.10 - -- No changes. -### Fixed (1 change) - -- Backport the new reliable fetcher to 12.0.9. !20532 - - -## 12.0.7 - -### Security (3 changes) - -- Limit number of jobs in running pipelines for the past hour on per plan basis. !1182 -- Queries for Upload should be scoped by model. -- Filter out old system notes for epics in notes api endpoint response. - - -## 12.0.6 - -- No changes. - -## 12.0.2 (2019-06-25) - -### Fixed (1 change) - -- Take into account events created before milestone start. !14184 - - -## 12.0.1 (2019-06-24) - -- No changes. - -## 12.0.0 (2019-06-22) - -### Security (2 changes) - -- Filter relative links in wiki for XSS. -- Fix XSS in Ancestor tooltip title. - -### Removed (2 changes) - -- Remove old approver system in favor of new approval rule system. !12436 -- Geo: Remove deprecated wikis_count and repositories_count fields from the public API. !13025 - -### Fixed (36 changes, 1 of them is from the community) - -- Group SAML identities cleaned up when leaving a group. !5817 -- Make root relative URLs clickable in vulnerability modal. !9767 -- Make burndown chart timezone aware. !10328 -- Prevent files paths from overflowing in vulnerability info modal. !10606 -- Fixed a bug where removing related issues could get stuck. !12316 -- Fix anchor link in UI. !12737 -- Add feature flag to group_scim javascript. !13078 -- Geo - Enable Cron job to perform repository checks on a Geo secondary node. !13103 -- Restrict child_epic and remove_child_epic quick actions when using mysql. !13152 -- Disable licenses_app feature flag by default. !13291 -- Fix security dashboard errors on IE11. !13319 -- Respect limited indexing settings in rake tasks. !13437 -- Geo - Does not redirect user to the custom home page URL on a Geo secondary. !13447 -- Use quarantine size to check push size against repository size limit. !13460 -- Fix SSO Enforcement when used with 2FA. !13473 -- Fix Git over HTTP when using SAML SSO Enforcement. !13485 -- Only use elasticsearch when it is enabled. !13495 -- Add referenced-commands in no overflow list. !13550 -- Hide action buttons while security dashboard is loading. !13576 -- Fix alignment of label for admin notes on admin. !13592 (Takuya Noguchi) -- Use elasticsearch go indexer for wikis. !13743 -- Handle case where site property is an array in DAST report. !13775 -- Fix dast report parsing regression caused by change in zaproxy. !13789 -- Fix port validation in .gitlab-webide.yml. !13846 -- Fix "rule_type does not exist" error during consume_remaining_migrate_approver_to_approval_rules_in_batch_jobs migration. !13947 -- Hide operations nav icon for small screens. !13960 -- Remove free user info from non-ultimate license. !14010 -- Use fallback approval rule if no eligible rules exist. !14042 -- Fix 'Group > Usage Quota' menu item. !14043 -- Fix incorrect epic ancestor links. !14092 -- Show Usage Quotas regardless of namespace subscription. !14135 -- Fix calculation of used extra CI minutes. !14217 -- Remove class hiding spinner in board switcher. -- Fix broken filter by approvers. -- Remove extra spaces in MR list view approval counts. -- Remove extra border on tracing empty state page. - -### Changed (18 changes) - -- Allow merge requests to be merged even when it does not have up-to-date pipeline when merge request pipeline is enabled. !12309 -- Migrate code_owners to rule_type enum on approval_merge_request_rules. !13036 -- Avoid failing pull mirroring if LFS import fails. !13133 -- Updates Pipeline Quota page to accomodate for Storage Quotas. !13139 -- Align group and project level security dashboard UX. !13180 -- Remove shared_runner_minutes_on_root_namespace feature flag. !13208 -- Enable dependency proxy per group by default. !13574 -- Move dependencies API endpoint to "security" namespace. !13897 -- Allow developers to configure dependency proxy. !13899 -- Use real data in `:project/security/dependencies` endpoint. !13906 -- Use bulk-indexing API for project associations. !13917 -- Update response schema for DependencyList endpoint and add status. !13918 -- Geo - Make foreign data wrapper a hard requirement. !13940 -- Polish SAML SSO configuration page. !13982 -- Make Insights Generally Available. !14067 -- Automatically index wikis in elasticsearch. !14095 -- Require Hashed Storage to be enabled to create new Geo Nodes. !14102 -- Changes to default insights charts. - -### Performance (7 changes) - -- Omit page counts in admin audit logs. !1306 -- Improve scheduling of mirror updates to reduce frequency of database queries. !11217 -- Limit count to improve query performance. !12231 -- Avoid loading database objects for Elasticsearch results. !12691 -- Avoid hitting Elasticsearch more than once on search. !13120 -- Add index to count pending mirror updates. !13901 -- Performance improvement when loading epics list. !13904 - -### Added (34 changes, 1 of them is from the community) - -- Provide application-wide LDAP membership lock setting. !4354 -- Added a "Require user password to approve" option on projects for merge request approvals to enable compliance in FDA regulated fields". !10364 (James Davila, Paul Knopf, Greg Smethells) -- Add "Allow merge trains" option to project settings page. !10803 -- Add optional reason when dismissing vulnerabilities. !11226 -- System notes for adding and removing epic relationships. !11416 -- Show if user is using a license seat on admin user page. !11449 -- Allow merge requests to block other MRs from being merged. !11600 -- SSO enforement redirects to group sign in when not using SAML. !12246 -- When a merge request is blocked by other unmerged merge requests, display them on the show page of a merge request. !12357 -- Group SAML can be used to sign into a GitLab instance. !12660 -- IP address restriction for groups. !12669 -- Make the number of Elasticsearch shards and replicas configurable. !12713 -- Add quick actions for adding and removing child epic relations to epic. !12772 -- Adds a confidence filter to the Group Security Dashboard. !12805 -- Expose Design blobs through GraphQL. !13037 -- Expand pipeline variables passed downstream. !13197 -- Add support for querying epics with GraphQL. !13248 -- Add Merge Train auto merge strategy. !13278 -- Adds Storage Counter. !13294 -- Allow design blobs to be stored in Git LFS. !13389 -- JIT users provisioning for group SAML. !13552 -- Add Ability for Maintainers to Rotate Instance Id in Feature Flags. !13722 -- Notify users when their CI minutes quota has run out. !13735 -- Use Flipper as an A/B testing framework. !13755 -- [New Auto Merge Strategy] Add To Merge Train When Pipeline Succeeds. !13767 -- Add `dependency_list` report. !13900 -- Add admin form to enforce a pipeline on an instance. !13923 -- Count usage of DependencyList endpoint. !13962 -- Add preliminary Dependency List frontend implementation. !13968 -- Add Admin settings to disable project deletion. !14002 -- Usage ping: Track amount of incident issues. !14013 -- Sync file changes from Web IDE to Web Terminal. !14035 -- Add report_approver to approval_merge_request_rules. !14050 -- Add merge train position message under pipeline in merge request widget. !14064 - -### Other (9 changes, 2 of them are from the community) - -- New user flow for SSOing into a GitLab.com group. !10338 -- Improve vulnerability API. !12760 (Robert Schilling) -- Add action popover component for user onboarding. !13346 -- Add help content popover component for user onboarding. !13363 -- Expose services in the web ide terminal entity. !13665 -- Rename boards spec name. !13725 (George Tsiolis) -- Fix typos in i18n strings for onboarding tour. !14153 -- Externalize strings of chat page in user profile. !28632 -- Remove commit count from storage quotass. diff --git a/changelogs/archive-ee.md b/changelogs/archive-ee.md deleted file mode 100644 index 0f9568cac6f..00000000000 --- a/changelogs/archive-ee.md +++ /dev/null @@ -1,1799 +0,0 @@ -## 9.5.10 (2017-11-08) - -- [SECURITY] Ensure GitLab Geo JSON web tokens expire after 2 minutes. - -## 9.5.9 (2017-10-16) - -- [SECURITY] Prevent Related Issues from leaking confidential issues. -- Escape user name in filtered search bar. - -## 9.5.8 (2017-10-04) - -- [FIXED] Fix EE delta size check handling with annotated tags. -- [FIXED] Fix delta size check to handle commit or nil objects. - -## 9.5.7 (2017-10-03) - -- No changes. - -## 9.5.6 (2017-09-29) - -- [FIXED] Show group tab if member lock is enabled. - -## 9.5.5 (2017-09-18) - -- [FIXED] Fixes activation of project mirror when new project is created. !2756 -- [FIXED] Geo - Whitelist LFS requests to download objects on a secondary node. !2758 -- [FIXED] Fix unsetting credentials data for pull mirrors. !2810 -- [FIXED] Fix a regression breaking projects with an empty import URL. !2824 -- [FIXED] Fix a 500 error in the SSH host keys lookup action. !2827 -- [FIXED] Ensure #route_setting is available before calling it. !2908 -- [FIXED] Fix branch name regex not saving in /admin/push_rule config. -- [FIXED] Fix the gap in approvals in merge request widget. -- [FIXED] Fix merges not working when project is not licensed for squash. -- Don't put the password in the SSH remote if using public-key authentication. !2837 - -## 9.5.4 (2017-09-06) - -- [FIXED] Validate branch name push rule when pushing branch without commits. !2685 - -## 9.5.3 (2017-09-03) - -- [FIXED] Check if table exists before loading the current license. !2783 -- [FIXED] Extend early adopters feature set. - -## 9.5.2 (2017-08-28) - -- [FIXED] Fix LDAP backwards-compatibility when using "method" or when "verify_certificates" is not defined. !2690 -- [FIXED] Geo - Count projects where wiki sync failed in node status page. - -## 9.5.1 (2017-08-23) - -- [FIXED] Fix url for object store artifacts. -- [CHANGED] Ensure all database queries are routed through the database load balancer when load balancing is enabled -. !2707 - -## 9.5.0 (2017-08-22) - -- [FIXED] Fix Copy to Clipboard for SSH Public Key on Pull Repository settings. !2692 -- [FIXED] Enable mirror repository button. -- [FIXED] Create system notes only if issue was successfully related. -- [FIXED] Fix issue boards focus button not being visible to guest users. -- Namespace license checks Audit Events & Admin Audit Log. !2326 -- Namespace license checks for Repository Mirrors. !2328 -- Automatically link kerberos users to LDAP people. !2405 -- Implement SSH public-key support for repository mirroring. !2423 -- Shows project names for commits in elasticsearch global search. !2434 -- Add admin application setting to allow group owners to manage LDAP. !2529 -- Geo - Selectively choose which namespaces to replicate in DR. !2533 -- Support variables on Trigger API for Cross-project pipeline. !2557 -- Allow excluding sidekiq queues from execution in sidekiq-cluster. !2571 -- Ensure artifacts are moved locally within the filesystem to prevent timeouts. !2572 -- Audit failed login events. !2587 -- Spread load across all nodes in an elasticsearch cluster. !2625 -- Improves handling of stuck imports. !2628 -- Improves handling of the mirror threshold. !2671 -- Allow artifacts access with job_token parameter or CI_JOB_TOKEN header. -- Add initial Groups/Billing and Profile/Billing routing and template. -- Fix rebase from fork when upstream has protected branches. -- Present Related Issues add badge only when user can manage related issues (previously when user could edit issue). -- clean up merge request widget UI. -- Make contextual sidebar collapsible. -- Fix accessing individual files on Object Storage. -- Fix rebase button when merge request is created from a fork. -- Skip oAuth authorization for trusted applications. - -## 9.4.7 (2017-10-16) - -- [SECURITY] Prevent Related Issues from leaking confidential issues. -- Fix when pushing without a branch name. !2879 -- Escape user name in filtered search bar. - -## 9.4.6 (2017-09-06) - -- [FIXED] Validate branch name push rule when pushing branch without commits. !2685 - -## 9.4.5 (2017-08-14) - -- Ensure artifacts are moved locally within the filesystem to prevent timeouts. !2572 -- Fix rebase from fork when upstream has protected branches. -- Present Related Issues add badge only when user can manage related issues (previously when user could edit issue). -- Fix accessing individual files on Object Storage. - -## 9.4.4 (2017-08-09) - -- No changes. - -## 9.4.3 (2017-07-31) - -- Present Related Issues widget for logged-out users when available. - -## 9.4.2 (2017-07-28) - -- Adds lower bound to pull mirror scheduling feature. !2366 -- Add warning and option toggle when rebuilding authorized_keys. !2508 -- Fix CSS for mini graph with downstream pipeline. -- Renamed board to boards in new project sidebar. -- Fix Rebasing not working with Merge Requests. -- Fixed issue boards focus mode when new navigation is turned on. - -## 9.4.1 (2017-07-25) - -- Cleans up mirror capacity in project destroy service if project is a scheduled mirror. !2445 -- Fixes unscoping of imposed capacity limit by find_each method on Mirror scheduler. !2460 -- Remove text underline from suggested approvers. - -## 9.4.0 (2017-07-22) - -- GeoLogCursor is part of a new experimental Geo replication system. !1988 -- Add explicit licensing for Elasticsearch. !2108 -- Add namespace license checks for Service Desk (EEP). !2109 -- Add environment scope to secret variables to specify environments. !2112 -- Namespace license checks for exporting issues (EES). !2164 -- Retry Elasticsearch queries on failure. !2181 -- Introduce namespace license checks for rebase before merge. !2200 -- Geo: fix removal of repositories from disk on secondary nodes. !2210 -- Add license checks for brundown charts. !2219 -- Add namespace license checks for squash before merge. !2249 -- Namespace license checks for fast-forward merge (EES). !2272 -- Empty repository mirror no longer creates master branch with README automatically. !2276 -- Introduce namespace licensing for issue weights (EES). !2291 -- Add namespace license checks for Contribution Analytics. !2302 -- Add license checks for focus mode on the issue board. !2303 -- Add license checks for issue boards with milestones. !2315 -- Add license checks for multiple issue boards. !2317 -- Geo: Fix clone instructions in a secondary node for SSH protocol. !2319 -- Namespace license checks Issue & MR template. !2321 -- Introduce namespace license checks for merge request approvers (EES). !2324 -- Introduce namespace license checks for Push Rules (EES). !2335 -- Geo: Implement alternative to geo_{primary|secondary}_role in gitlab.yml. !2352 -- Geo: Added extra SystemCheck checks. !2354 -- Implement progressive elasticsearch indexing for project mirrors. !2393 -- Fix undefined method quote when database load balancing is used. !2430 -- Improve the performance of the project list API. !12679 -- fix approver placeholder icon in ie11. -- Add public API for listing, creating and deleting Related Issues. -- All artifacts are now browsable. -- Escape symbols in exported CSV columns to prevent command execution in Microsoft Excel. -- Geo - Fix RepositorySyncService when cannot obtain a lease to sync a repository. -- Prevent mirror user to be assigned to users other than the current one. -- Geo - Makes the projects synchronization faster on secondaries nodes. -- Only show the LDAP sync banner on first login. -- Enable service desk be default. -- Fix creation of push rules via POST API. -- Fix Geo middleware to work properly with multiple requests. -- [GitLab.com only] Add Slack applicationq service. -- Speed up checking for approvers when approvers are specified on the MR. -- Allows manually adding bi-directional relationships between issues in the issue page (EES feature). -- Add Geo repository renamed event log. -- Merge states to allow realtime with deploy boards. -- Fix 500 error when approvals are enabled and editing an MR conflicts with another edit. -- add toggle for overriding approvers per MR. -- Add optional sha param when approving a merge request through the API. -- Allow updating shared_runners_minutes_limit on admin Namespace API. -- Allow to Store Artifacts on Object Storage. -- Adding support for AWS ec2 instance profile credentials with elasticsearch. (Matt Gresko) -- Fixed edit issue boards milestone action buttons not sticking to bottom of dropdown. -- Respect the external user setting in Elasticsearch. - -## 9.3.11 (2017-09-06) - -- [FIXED] Validate branch name push rule when pushing branch without commits. !2685 -- Prevent mirror user to be assigned to users other than the current one. - -## 9.3.10 (2017-08-09) - -- No changes. - -## 9.3.9 (2017-07-20) - -- No changes. - -## 9.3.8 (2017-07-19) - -- Escape symbols in exported CSV columns to prevent command execution in Microsoft Excel. -- Prevent mirror user to be assigned to users other than the current one. - -## 9.3.7 (2017-07-18) - -- No changes. - -## 9.3.6 (2017-07-12) - -- Geo: Fix clone instructions in a secondary node for SSH protocol. !2319 -- Implement progressive elasticsearch indexing for project mirrors. !2393 - -## 9.3.5 (2017-07-05) - -- Make admin mirror application setting GitLab.com exclusive. !2307 -- Make Geo::RepositorySyncService force create a repo. - -## 9.3.4 (2017-07-03) - -- Update gitlab-shell to 5.1.1 to fix Post Recieve errors - -## 9.3.3 (2017-06-30) - -- Add metrics to both remote and non remote mirroring. !2118 -- Forces import worker with mirror to insert mirror in front of queue. !2231 -- Fix locked and stale SSH keys file from 9.3.0 upgrade. !2240 -- Fix crash in LDAP sync when user was removed. !2289 -- allow rebase for unapproved merge requests. -- Geo - Fix path_with_namespace for instances of Geo::DeletedProject. - -## 9.3.2 (2017-06-27) - -- Fix GitLab check: Problem with Elastic Search. !2278 - -## 9.3.1 (2017-06-26) - -- Geo: fix removal of repositories from disk on secondary nodes. !2210 -- Fix Geo middleware to work properly with multiple requests. - -## 9.3.0 (2017-06-22) - -- Per user/group access levels for Protected Tags. !1629 -- Add a user's memberships when logging in through LDAP. !1819 -- Add server-wide Audit Log admin screen. !1852 -- Move pull mirroring to adaptive scheduling. !1853 -- Create a push rule to check the branch name. !1896 (Riccardo Padovani) -- Add shared_runners_minutes_limit to groups and users API. !1942 -- Compare codeclimate artifacts on the merge request page. !1984 -- Lookup users by email in LDAP if lookup by DN fails during sync. !2003 -- Update mirror_user for project when mirror_user is deleted. !2013 (Athar Hameed) -- Geo: persist clone url prefix in the database. !2015 -- Geo: prevent Gitlab::Git::Repository::NoRepository from stucking replication. !2115 -- Geo: fixed Dynamic Backoff strategy that was not being used by workers. !2128 -- [Elasticsearch] Improve code search for camel case. -- Fixed header being over issue boards when in focus mode. -- Fix: Approvals not reset if changing target branch. -- Fix bug where files over 2 GB would not be saved in Geo tracking DB. -- Add primary node clone URL to Geo secondary 'How to work faster with Geo' popover. -- Fix broken time sync leeway with Geo. -- Gracefully handle case when Geo secondary does not have the right db_key_base. -- Use the current node configuration to populate suggested new URL for Geo node. -- Check if a merge request is approved when merging from API or slash command. -- Add closed_at field to issue CSV export. -- Geo - Properly set tracking database connection and cron jobs on secondary nodes. -- Add push events to Geo event log. -- fix Rebase being disabled for unapproved MRs. -- Fix approvers dropdown when creating a merge request from a fork. -- Add relation between Pipelines. -- Allow to Trigger Pipeline using CI Job Token. -- Allow to view Personal pipelines quota. -- Geo - Use GeoNode#clone_url_prefix for the Geo::RepositorySyncService. -- Elasticsearch searches through the project description. -- Fix: /unassign by default unassigns everyone. Implement /reassign command. -- Speed up checking for approvers remaining. - -## 9.2.10 (2017-08-09) - -- No changes. - -## 9.2.9 (2017-07-20) - -- No changes. - -## 9.2.8 (2017-07-19) - -- Escape symbols in exported CSV columns to prevent command execution in Microsoft Excel. -- Prevent mirror user to be assigned to users other than the current one. - -## 9.2.7 (2017-06-21) - -- Geo: fixed Dynamic Backoff strategy that was not being used by workers. !2128 -- fix Rebase being disabled for unapproved MRs. - -## 9.2.6 (2017-06-16) - -- Geo: backported fix from 9.3 for big repository sync issues. !2000 -- Geo - Properly set tracking database connection and cron jobs on secondary nodes. -- Fix approvers dropdown when creating a merge request from a fork. -- Fixed header being over issue boards when in focus mode. -- Fix bug where files over 2 GB would not be saved in Geo tracking DB. - -## 9.2.5 (2017-06-07) - -- No changes. - -## 9.2.4 (2017-06-02) - -- No changes. -- No changes. - -## 9.2.3 (2017-05-31) - -- No changes. -- No changes. -- Respect the external user setting in Elasticsearch. - -## 9.2.2 (2017-05-25) - -- No changes. - -## 9.2.1 (2017-05-23) - -- No changes. - -## 9.2.0 (2017-05-22) - -- Stop using sidekiq cron for push mirrors. !1616 -- Inline RSS button with Export Issues button for mobile. !1637 -- Highlight Contribution Analytics tab under groups when active, remove sub-nav items. !1677 -- Uses etag polling for deployboards. !1713 -- Support more elasticsearch versions. !1716 -- Support advanced search queries using elasticsearch. !1770 -- Remove superfluous wording on push rules. !1811 -- Geo - Fix signing out from secondary node when "Remember me" option is checked. !1903 -- Add global wiki search using Elasticsearch. -- Remove warning about protecting Service Desk email from form. -- Geo: Resync repositories that have been updated recently. -- Respect project features when searching alternative branches with elasticsearch enabled. -- Backfill projects where the last attempt to backfill failed. -- Fix MR approvals sentence when all approvers need to approve the MR. -- Fix for XSS in project mirror errors caused by Hamlit filter usage. -- Feature availability check using feature list AND license addons. -- Disable mirror workers for Geo secondaries. - -## 9.1.10 (2017-08-09) - -- No changes. - -## 9.1.9 (2017-07-20) - -- No changes. - -## 9.1.8 (2017-07-19) - -- Escape symbols in exported CSV columns to prevent command execution in Microsoft Excel. -- Prevent mirror user to be assigned to users other than the current one. - -## 9.1.7 (2017-06-07) - -- No changes. - -## 9.1.6 (2017-06-02) - -- No changes. - -## 9.1.5 (2017-05-31) - -- Respect the external user setting in Elasticsearch. - -## 9.1.4 (2017-05-12) - -- Remove warning about protecting Service Desk email from form. -- Backfill projects where the last attempt to backfill failed. - -## 9.1.3 (2017-05-05) - -- No changes. -- No changes. -- No changes. -- Respect project features when searching alternative branches with elasticsearch enabled. -- Fix for XSS in project mirror errors caused by Hamlit filter usage. - -## 9.1.2 (2017-05-01) - -- No changes. -- No changes. -- No changes. -- Fix commit search on some elasticsearch indexes. !1745 -- Fix emailing issues to projects when Service Desk is enabled. -- Fix bug where Geo secondary Sidekiq cron jobs would not be activated if settings changed. - -## 9.1.1 (2017-04-26) - -- No changes. - -## 9.1.0 (2017-04-22) - -- Fix rake gitlab:env:info elasticsearch datum. !1422 -- Fix 500 errors caused by elasticsearch results referencing garbage-collected commits. !1430 -- Adds timeout option to push mirrors. !1439 -- elasticsearch: Add support for an experimental repository indexer. !1483 -- Update color palette to a more harmonious and consistent one. !1500 -- Cache Gitlab::Geo queries. !1507 -- Add Service Desk feature. !1508 -- Fix pre-receive hooks when using Git 2.11 or later. !1525 -- Geo: Add support to sync avatars and attachments. !1562 -- Fix Elasticsearch not working when URL ends with a forward slash. !1566 -- Allow admins to perform global searches with Elasticsearch. !1578 -- Periodically persists users activity to users.last_activity_on. !1597 -- Removes duplicate count of LFS objects from repository_and_lfs_size method. !1599 -- Fix searching notes and snippets as an auditor. !1674 -- Fix searching for notes with elasticsearch when a user is a member of many projects. !1675 -- Fix type declarations for spend/estimate values. -- Speed up suggested approvers on MR creation. -- Fix squashing MRs when the repository contains a ref named HEAD. -- Fix approver count reset when editing assignee or labels. -- Geo: handle git failures on GeoRepositoryFetchWorker. -- Give each elasticsearch worker its own sidekiq queue. -- Fixes broken link to pipeline quota. -- Prevent filtering issues by multiple Milestones or Authors. -- Fix 500 error when selecting a mirror user. -- Add index to approvals.merge_request_id. -- Added mock data for Deployboard. -- Add uuid to usage ping. -- Expose board project and milestone on boards API. -- Fix active user count to ignore internal users. -- Add warning when burndown data is not accurate. -- Check if incoming emails and email key are available for service desk. -- Add burndown chart to milestones. -- Make deployboard to be visible by default. -- Add a Rake task to make the current node the primary Geo node. -- Return 404 instead of a 500 error on API status endpoint if Geo tracking DB is not enabled. -- Remove N+1 queries for Groups::AnalyticsController. -- Show user cohorts data when usage ping is enabled. -- Visualise Canary Deployments. - -## 9.0.13 (2017-08-09) - -- No changes. - -## 9.0.12 (2017-07-20) - -- No changes. - -## 9.0.11 (2017-07-19) - -- Escape symbols in exported CSV columns to prevent command execution in Microsoft Excel. -- Prevent mirror user to be assigned to users other than the current one. - -## 9.0.10 (2017-06-07) - -- No changes. - -## 9.0.9 (2017-06-02) - -- No changes. - -## 9.0.8 (2017-05-31) - -- Respect the external user setting in Elasticsearch. - -## 9.0.7 (2017-05-05) - -- Respect project features when searching alternative branches with elasticsearch enabled. -- Fix for XSS in project mirror errors caused by Hamlit filter usage. - -## 9.0.6 (2017-04-21) - -- Cache Gitlab::Geo queries. !1507 -- Fix searching for notes with elasticsearch when a user is a member of many projects. !1675 -- Fix 500 error when selecting a mirror user. -- Fix active user count to ignore internal users. - -## 9.0.5 (2017-04-10) - -- Return 404 instead of a 500 error on API status endpoint if Geo tracking DB is not enabled. - -## 9.0.4 (2017-04-05) - -- No changes. - -## 9.0.3 (2017-04-05) - -- Allow to edit pipelines quota for user. -- Fixed label resetting when sorting by weight. (James Clark) -- Fixed issue boards milestone toggle text not updating when filtering. -- Fixed mirror user dropdown not displaying. - -## 9.0.2 (2017-03-29) - -- No changes. - -## 9.0.1 (2017-03-28) - -- No changes. - -## 9.0.0 (2017-03-22) - -- Geo: Replicate repository creation in Geo secondary node. !952 -- Make approval system notes lowercase. !1125 -- Issues can be exported as CSV, via email. !1126 -- Try to update mirrors again after 15 minutes if the previous update failed. !1183 -- Adds abitlity to render deploy boards in the frontend side. !1233 -- Add filtered search to MR page. !1243 -- Update project list API returns with approvals_before_merge attribute. !1245 (Geoff Webster) -- Catch Net::LDAP::DN exceptions in EE::Gitlab::Auth::LDAP::Group. !1260 -- API: Use `post ":id/#{type}/:subscribable_id/subscribe"` to subscribe and `post ":id/#{type}/:subscribable_id/unsubscribe"` to unsubscribe from a resource. !1274 (Robert Schilling) -- API: Remove deprecated fields Notes#upvotes and Notes#downvotes. !1275 (Robert Schilling) -- Deploy board backend. !1278 -- API: Remove the ProjectGitHook API. !1301 (Robert Schilling) -- Expose elasticsearch client params for AWS signing and HTTPS. !1305 (Matt Gresko) -- Fix LDAP DN case-mismatch bug in LDAP group sync. !1337 -- Remove es6 file extension from JavaScript files. !1344 (winniehell) -- Geo: Don't load dependent models when fetching an existing GeoNode from the database. !1348 -- Parallelise the gitlab:elastic:index_database Rake task. !1361 -- Robustify reading attributes for elasticsearch. !1365 -- Introduce one additional thread into bin/elastic_repo_indexer. !1372 -- Show hook errors for fast-forward merges. !1375 -- Allow all parameters of group webhooks to be set through the UI. !1376 -- Fix Elasticsearch queries when a group_id is specified. !1423 -- Check the right index mapping based on Rails environment for rake gitlab:elastic:add_feature_visibility_levels_to_project. !1473 -- Fix issues with another milestone that has a matching list label could not be added to a board. -- Only admins or group owners can set LDAP overrides. -- Add support for load balancing database queries. -- Only replace non-approval mr-widget-footer on getMergeStatus. -- Remove repository_storage from V4 "/application/settings" settings API. -- Added headers to protected branches access dropdowns. -- Remove support for Git Annex. -- Repositioned multiple issue boards selector. -- Added back weight in issue rows on issue list. -- Add basic support for GitLab Geo file transfers over HTTP. -- Added weight slash command. -- Set deployment status invalid when the environments does not match a k8s label. -- Combined deploy keys, push rules, protect branches and mirror repository settings options into a single one called Repository. -- Rebase - fix commiter email & name. -- Adds a EE specific dev favicon. -- Elastic security fix: Respect feature visibility level. -- Update Elasticsearch to 5.1. -- [Elasticsearch] More efficient search. -- Get Geo secondaries nodes statuses over AJAX. - -## 8.17.8 (2017-08-09) - -- No changes. - -## 8.17.7 (2017-07-19) - -- Prevent mirror user to be assigned to users other than the current one. - -## 8.17.6 (2017-05-05) - -- Respect project features when searching alternative branches with elasticsearch enabled. - -## 8.17.5 (2017-04-05) - -- No changes. - -## 8.17.4 (2017-03-19) - -- Elastic security fix: Respect feature visibility level. - -## 8.17.3 (2017-03-07) - -- No changes. - -## 8.17.2 (2017-03-01) - -- No changes. - -## 8.17.1 (2017-02-28) - -- Fix admin email notification recipient group select list. -- Add repository_storage field back to projects API for admin users. -- Don't try to update a project's external service caches on a secondary Geo node. -- Fixed merge request state not updating when approvals feature is active. -- Improve error messages when squashing fails. - -## 8.17.0 (2017-02-22) - -- Read-only "auditor" user role. !998 -- Also reset approvals on push when merge request is closed. !1051 -- Copy commit SHA to clipboard. !1066 -- Pull EE specific Gitlab::Auth code in to its own module. !1112 -- Geo: Added `gitlab:geo:check` and improved `gitlab:envinfo` rake tasks. !1120 -- Geo: send the new event type with the backfill function. !1157 -- Re-add removed params from projects and issues V3 API. !1209 -- Add configurable minimum mirror sync time in admin section. !1217 -- Move RepositoryUpdateRemoteMirrorWorker jobs to project_mirror Sidekiq queue. !1234 -- Change Builds word to Pipelines in Mirror settings page. -- Fix bundle tag in anaytics page. -- Support v4 API for GitLab Geo endpoints. -- Fixed merge request environment link not displaying. -- Reduce queries needed to check if node is a primary or secondary Geo node. -- Allow squashing merge requests into a single commit. - -## 8.16.9 (2017-04-05) - -- No changes. - -## 8.16.8 (2017-03-19) - -- No changes. -- No changes. -- No changes. -- Elastic security fix: Respect feature visibility level. - -## 8.16.7 (2017-02-27) - -- Fixed merge request state not updating when approvals feature is active. - -## 8.16.6 (2017-02-17) - -- Geo: send the new event type with the backfill function. !1157 -- Move RepositoryUpdateRemoteMirrorWorker jobs to project_mirror Sidekiq queue. !1234 -- Fixed merge request environment link not displaying. -- Reduce queries needed to check if node is a primary or secondary Geo node. -- Read true-up info from license and validate it. !1159 - -## 8.16.5 (2017-02-14) - -- No changes. - -## 8.16.4 (2017-02-02) - -- Disable all merge acceptance buttons pending MR approval. - -## 8.16.3 (2017-01-27) - -- Fix sidekiq cluster mishandling of queue names. !1117 - -## 8.16.2 (2017-01-25) - -- Track Mattermost usage in usage ping. !1071 -- Fix count of required approvals displayed on MR edit form. !1082 -- Fix updating approvals count when editing an MR. !1106 -- Don't try to show assignee in approved_merge_request_email if there's no assignee. - -## 8.16.1 (2017-01-23) - -- No changes. - -## 8.16.0 (2017-01-22) - -- Allow to limit shared runners minutes quota for group. !965 -- About GitLab link in sidebar that links to help page. !1008 -- Prevent 500 error when uploading/entering a blank license. !1016 -- Add more push rules to the API. !1022 (Robert Schilling) -- Expose issue weight in the API. !1023 (Robert Schilling) -- Copy <some text> to clipboard. !1048 - -## 8.15.8 (2017-03-19) - -- No changes. -- No changes. -- Elastic security fix: Respect feature visibility level. - -## 8.15.7 (2017-02-15) - -- No changes. - -## 8.15.6 (2017-02-14) - -- No changes. - -## 8.15.5 (2017-01-20) - -- No changes. - -## 8.15.4 (2017-01-09) - -- No changes. - -## 8.15.3 (2017-01-06) - -- Disable LDAP permission override in project members edit list. -- Perform only one fetch per push on Geo secondary nodes. - -## 8.15.2 (2016-12-27) - -- No changes. -- Fix ES search for non-default branches. - -## 8.15.1 (2016-12-23) - -- Fix 404/500 error while navigating to the 'show/destroy' pages. !993 - -## 8.15.0 (2016-12-22) - -- Adds a check ensure only active, ie. non-blocked users can be emailed from the admin panel. -- Add user activities API. -- Add milestone total weight to the milestone summary. -- Allow master/owner to change permission levels when LDAP group sync is enabled. !822 -- Geo: Improve project view UI to teach users how to clone from a secondary Geo node and push to a primary. !905 -- Technical debt follow-up from restricting pushes / merges by group. !927 -- Geo: Enables nodes to be removed even without proper license. !978 -- Update validates_hostname to 1.0.6 to fix a bug in parsing hexadecimal-looking domain names. !982 - -## 8.14.10 (2017-02-15) - -- No changes. - -## 8.14.9 (2017-02-14) - -- No changes. - -## 8.14.8 (2017-01-25) - -- No changes. - -## 8.14.7 (2017-01-21) - -- No changes. - -## 8.14.6 (2017-01-10) - -- No changes. - -## 8.14.5 (2016-12-14) - -- Add milestone total weight to the milestone summary. - -## 8.14.4 (2016-12-08) - -- No changes. - -## 8.14.3 (2016-12-02) - -- No changes. - -## 8.14.2 (2016-12-01) - -- No changes. - -## 8.14.1 (2016-11-28) - -- Fix: MergeRequestSerializer breaks on MergeRequest#rebase_dir_path when source_project doesn't exist anymore. - -## 8.14.0 (2016-11-22) - -- Added Backfill service for Geo. !861 -- Fix for autosuggested approvers(https://gitlab.com/gitlab-org/gitlab/issues/1273). -- Gracefully recover from previously failed rebase. -- Disable retries for remote mirror update worker. !848 -- Fix Approvals API documentation. -- Add ability to set approvals_before_merge for project through the API. -- gitlab:check rake task checks ES version according to requirements -- Convert ASCII-8BIT LDAP DNs to UTF-8 to avoid unnecessary user deletions -- [Fix] Only owner can see "Projects" button in group edit menu - -## 8.13.12 (2017-01-21) - -- No changes. - -## 8.13.11 (2017-01-10) - -- No changes. - -## 8.13.10 (2016-12-14) - -- No changes. - -## 8.13.9 (2016-12-08) - -- No changes. - -## 8.13.8 (2016-12-02) - -- No changes. - -## 8.13.7 (2016-11-28) - -- No changes. - -## 8.13.6 (2016-11-17) - -- Disable retries for remote mirror update worker. !848 -- Fixed cache clearing on secondary Geo nodes. !869 -- Geo: fix a problem that prevented git cloning from secondary node. !873 - -## 8.13.5 (2016-11-08) - -- No changes - -## 8.13.4 (2016-11-07) - -- Weight dropdown in issue filter form does not stay selected. !826 - -## 8.13.3 (2016-11-02) - -- No changes - -## 8.13.2 (2016-10-31) - -- Don't pass a current user to Member#add_user in LDAP group sync. !830 - -## 8.13.1 (2016-10-25) - -- Hide multiple board actions if user doesnt have permissions. !816 -- Fix Elasticsearch::Transport::Transport::Errors::BadRequest when ES is enabled. !818 - -## 8.13.0 (2016-10-22) - -- Cache the last usage data to avoid unicorn timeouts -- Add user activity table and service to query for active users -- Fix 500 error updating mirror URLs for projects -- Restrict protected branch access to specific groups !645 -- Fix validations related to mirroring settings form. !773 -- Add multiple issue boards. !782 -- Fix Git access panel for Wikis when Kerberos authentication is enabled (Borja Aparicio) -- Decrease maximum time that GitLab waits for a mirror to finish !791 (Borja Aparicio) -- User groups (that can be assigned as approvers) -- Fix a search for non-default branches when ES is enabled -- Re-organized the Sidekiq queues for EE specific workers - -## 8.12.12 (2016-12-08) - -- No changes. - -## 8.12.11 (2016-12-02) - -- No changes. - -## 8.12.10 (2016-11-28) - -- No changes. - -## 8.12.9 (2016-11-07) - -- No changes - -## 8.12.8 (2016-11-02) - -- No changes - -## 8.12.7 - - - No EE-specific changes - -## 8.12.6 - - - No EE-specific changes - -## 8.12.5 - - - No EE-specific changes - -## 8.12.4 - - - [ES] Indexer works with smaller batches of repositories to not exceed NOFILE limit. !774 - -## 8.12.3 - - - Fix prevent_secrets checkbox on admin view - -## 8.12.2 - - - Fix bug when protecting a branch due to missing url paramenter in request !760 - - Ignore unknown project ID in RepositoryUpdateMirrorWorker - -## 8.12.1 - - - Prevent secrets to be pushed to the repository - - Prevent secrets to be pushed to the repository - -## 8.12.0 (2016-09-22) - - - Include more data in EE usage ping - - Reduce UPDATE queries when moving between import states on projects - - [ES] Instrument Elasticsearch::Git::Repository - - Request only the LDAP attributes we need - - Add 'Sync now' to group members page !704 - - Add repository size limits and enforce them !740 - - [ES] Instrument other Gitlab::Elastic classes - - [ES] Fix: Elasticsearch does not find partial matches in project names - - Faster Active Directory group membership resolution !719 - - [ES] Global code search - - [ES] Improve logging - - Fix projects with remote mirrors asynchronously destruction - -## 8.11.11 (2016-11-07) - -- No changes - -## 8.11.10 (2016-11-02) - -- No changes - -## 8.11.9 - - - No EE-specific changes - -## 8.11.8 - - - No EE-specific changes - -## 8.11.7 - - - Refactor Protected Branches dropdown. !687 - - Fix mirrored projects allowing empty import urls. !700 - -## 8.11.6 - - - Exclude blocked users from potential MR approvers. - -## 8.11.5 - - - API: Restore backward-compatibility for POST /projects/:id/members when membership is locked - -## 8.11.4 - - - No EE-specific changes - -## 8.11.3 - - - [ES] Add logging to indexer - - Fix missing EE-specific service parameters for Jenkins CI - - Set the correct `GL_PROTOCOL` when rebasing !691 - - [ES] Elasticsearch workers checks ES settings before running - -## 8.11.2 - - - Additional documentation on protected branches for EE - - Change slash commands docs location - -## 8.11.1 - - - Pulled due to packaging error. - -## 8.11.0 (2016-08-22) - - - Allow projects to be moved between repository storages - - Add rake task to remove old repository copies from repositories moved to another storage - - Performance improvement of push rules - - Temporary fix for #825 - LDAP sync converts access requests to members. !655 - - Optimize commit and diff changes access check to reduce git operations - - Allow syncing a group against all providers at once - - Change LdapGroupSyncWorker to use new LDAP group sync classes - - Allow LDAP `sync_ssh_keys` setting to be set to `true` - - Removed unused GitLab GEO database index - - Restrict protected branch access to specific users !581 - - Enable monitoring for ES classes - - [Elastic] Improve code search - - [Elastic] Significant improvement of global search performance - - [Fix] Push rules check existing commits in some cases - - [ES] Limit amount of retries for sidekiq jobs - - Fix Projects::UpdateMirrorService to allow tags pointing to blob objects - -## 8.10.12 - - - No EE-specific changes - -## 8.10.11 - - - No EE-specific changes - -## 8.10.10 - - - No EE-specific changes - -## 8.10.9 - - - Exclude blocked users from potential MR approvers. - -## 8.10.8 - - - No EE-specific changes - -## 8.10.7 - - - No EE-specific changes - -## 8.10.6 - - - Fix race condition with UpdateMirrorWorker Lease. !641 - -## 8.10.5 - - - Used cached value of project count in `Elastic::RepositoriesSearch` to reduce DB load. !637 - -## 8.10.4 - - - Fix available users in userselect dropdown when there is more than one userselect on the page. !604 (Rik de Groot) - - Fix updating skipped approvers in search list on removal. !604 (Rik de Groot) - -## 8.10.3 - - - Fix regression in Git Annex permission check. !599 - - [Elastic] Fix commit search for some URLs. !605 - - [Elastic][Fix] Commit search breaks for some URLs on gitlab-ce project - -## 8.10.2 - - - Fix pagination on search result page when ES search is enabled. !592 - - Decouple an ES index update from `RepositoryUpdateMirrorWorker`. !593 - - Fix broken `user_allowed?` check in Git Annex push. !597 - -## 8.10.1 - - - No EE-specific changes - -## 8.10.0 (2016-07-22) - - - Add EE license usage ping !557 - - Rename Git Hooks to Push Rules - - Fix EE keys fingerprint add index migration if came from CE - - Add todos for MR approvers !547 - - Replace LDAP group sync exclusive lease with state machine - - Prevent the author of an MR from being on the approvers list - - Isolate EE LDAP library code in EE module (Part 1) !511 - - Make Elasticsearch indexer run as an async task - - Fix of removing wiki data from index when project is deleted - - Ticket-based Kerberos authentication (SPNEGO) - - [Elastic] Suppress ActiveRecord::RecordNotFound error in ElasticIndexWorker - -## 8.9.10 - - - No EE-specific changes - -## 8.9.9 - - - No EE-specific changes - -## 8.9.8 - - - No EE-specific changes - -## 8.9.7 - - - No EE-specific changes - -## 8.9.6 - - - Avoid adding index for key fingerprint if it already exists. !539 - -## 8.9.5 - - - Fix of quoted text in lock tooltip. !518 - -## 8.9.4 - - - Improve how File Lock feature works with nested items. !497 - -## 8.9.3 - - - Fix encrypted data backwards compatibility after upgrading attr_encrypted gem. !502 - - Fix creating MRs on forks of deleted projects. !503 - - Roll back Grack::Auth to fix Git HTTP SPNEGO. !504 - -## 8.9.2 - - - [Elastic] Fix visibility of snippets when searching. - -## 8.9.1 - - - Improve Geo documentation. !431 - - Fix remote mirror stuck on started issue. !491 - - Fix MR creation from forks where target project has approvals enabled. !496 - - Fix MR edit where target project has approvals enabled. !496 - - Fix vertical alignment of git-hooks page. !499 - -## 8.9.0 (2016-06-22) - - - Fix JenkinsService test button - - Fix nil user handling in UpdateMirrorService - - Allow overriding the number of approvers for a merge request - - Allow LDAP to mark users as external based on their group membership. !432 - - Instrument instance methods of Gitlab::InsecureKeyFingerprint class - - Add API endpoint for Merge Request Approvals !449 - - Send notification email when merge request is approved - - Distribute RepositoryUpdateMirror jobs in time and add exclusive lease on them by project_id - - [Elastic] Move ES settings to application settings - - Always allow merging a merge request whenever fast-forward is possible. !454 - - Disable mirror flag for projects without import_url - - UpdateMirror service return an error status when no mirror - - Don't reset approvals when rebasing an MR from the UI - - Show flash notice when Git Hooks are updated successfully - - Remove explicit Gitlab::Metrics.action assignments, are already automatic. - - [Elastic] Project members with guest role can't access confidential issues - - Ability to lock file or folder in the repository - - Fix: Git hooks don't fire when committing from the UI - -## 8.8.9 - - - No EE-specific changes - -## 8.8.8 - - - No EE-specific changes - -## 8.8.7 - - - No EE-specific changes - -## 8.8.6 - - - [Elastic] Fix visibility of snippets when searching. - -## 8.8.5 - - - Make sure OAuth routes that we generate for Geo matches with the ones in Rails routes !444 - -## 8.8.4 - - - Remove license overusage message - -## 8.8.3 - - - Add standard web hook headers to Jenkins CI post. !374 - - Gracefully handle malformed DNs in LDAP group sync. !392 - - Reduce load on DB for license upgrade check. !421 - - Make it clear the license overusage message is visible only to admins. !423 - - Fix Git hook validations for fast-forward merges. !427 - - [Elastic] In search results, only show notes on confidential issues that the user has access to. - -## 8.8.2 - - - Fix repository mirror updates for new imports stuck in started - - [Elastic] Search through the filenames. !409 - - Fix repository mirror updates for new imports stuck in "started" state. !416 - -## 8.8.1 - - - No EE-specific changes - -## 8.8.0 (2016-05-22) - - - [Elastic] Database indexer prints its status - - [Elastic][Fix] Database indexer skips projects with invalid HEAD reference - - Fix skipping pages when restoring backups - - Add EE license via API !400 - - [Elastic] More efficient snippets search - - [Elastic] Add rake task for removing all indexes - - [Elastic] Add rake task for clearing indexing status - - [Elastic] Improve code search - - [Elastic] Fix encoding issues during indexing - - Warn admin if current active count exceeds license - - [Elastic] Search through the filenames - - Set KRB5 as default clone protocol when Kerberos is enabled and user is logged in (Borja Aparicio) - - Add support for Admin Groups to SAML - - Reduce emails-on-push HTML size by using a simple monospace font - - API requests to /internal/authorized_keys are now tagged properly - - Geo: Single Sign Out support !380 - -## 8.7.9 - - - No EE-specific changes - -## 8.7.8 - - - [Elastic] Fix visibility of snippets when searching. - -## 8.7.7 - - - No EE-specific changes - -## 8.7.6 - - - Bump GitLab Pages to 0.2.4 to fix Content-Type for predefined 404 - -## 8.7.5 - - - No EE-specific changes - -## 8.7.4 - - - Delete ProjectImportData record only if Project is not a mirror !370 - - Fixed typo in GitLab GEO license check alert !379 - - Fix LDAP access level spillover bug !499 - -## 8.7.3 - - - No EE-specific changes - -## 8.7.2 - - - Fix MR notifications for slack and hipchat when approvals are fullfiled. !325 - - GitLab Geo: Merge requests on Secondary should not check mergeable status - -## 8.7.1 - - - No EE-specific changes - -## 8.7.0 (2016-04-22) - - - Update GitLab Pages to 0.2.1: support user-defined 404 pages - - Refactor group sync to pull access level logic to its own class. !306 - - [Elastic] Stabilize database indexer if database is inconsistent - - Add ability to sync to remote mirrors. !249 - - GitLab Geo: Many replication improvements and fixes !354 - -## 8.6.9 - - - No EE-specific changes - -## 8.6.8 - - - No EE-specific changes - -## 8.6.7 - - - No EE-specific changes - -## 8.6.6 - - - Concat AD group recursive member results with regular member results. !333 - - Fix LDAP group sync regression for groups with member value `uid=<username>`. !335 - - Don't attempt to include too large diffs in e-mail-on-push messages (Stan Hu). !338 - -## 8.6.5 - - - No EE-specific changes - -## 8.6.4 - - - No EE-specific changes - -## 8.6.3 - - - Fix other cases where git hooks would fail due to old commits. !310 - - Exit ElasticIndexerWorker's job happily if record cannot be found. !311 - - Fix "Reload with full diff" button not working (Stan Hu). !313 - -## 8.6.2 - - - Fix old commits triggering git hooks on new branches branched off another branch. !281 - - Fix issue with deleted user in audit event (Stan Hu). !284 - - Mark pending todos as done when approving a merge request. !292 - - GitLab Geo: Display Attachments from Primary node. !302 - -## 8.6.1 - - - Only rename the `light_logo` column in the `appearances` table if its not there yet. !290 - - Fix diffs in text part of email-on-push messages (Stan Hu). !293 - - Fix an issue with methods not accessible in some controllers. !295 - - Ensure Projects::ApproversController inherits from Projects::ApplicationController. !296 - -## 8.6.0 (2016-03-22) - - - Handle duplicate appearances table creation issue with upgrade from CE to EE - - Add confidential issues - - Improve weight filter for issues - - Update settings and documentation for per-install LDAP sync time - - Fire merge request webhooks when a merge request is approved - - Add full diff highlighting to Email on push - - Clear "stuck" mirror updates before periodically updating all mirrors - - LDAP: Don't render Linked LDAP groups forms when LDAP is disabled - - [Elastic] Add elastic checker to gitlab:check - - [Elastic] Added UPDATE_INDEX option to rake task - - [Elastic] Removing repository and wiki index after removing project - - [Elastic] Update index on push to wiki - - [Elastic] Use subprocesses for ElasticSearch index jobs - - [Elastic] More accurate as_indexed_json (More stable database indexer) - - [Elastic] Fix: Don't index newly created system messages and awards - - [Elastic] Fixed exception on branch removing - - [Elastic] Fix bin/elastic_repo_indexer to follow config - - GitLab Geo: OAuth authentication - - GitLab Geo: Wiki synchronization - - GitLab Geo: ReadOnly Middleware improvements - - GitLab Geo: SSH Keys synchronization - - Allow SSL verification to be configurable when importing GitHub projects - - Disable git-hooks for git annex commits - -## 8.5.13 - - - No EE-specific changes - -## 8.5.12 - - - No EE-specific changes - -## 8.5.11 - - - Fix vulnerability that made it possible to enumerate private projects belonging to group - -## 8.5.10 - - - No EE-specific changes - -## 8.5.9 - - - No EE-specific changes - -## 8.5.8 - - - GitLab Geo: Documentation - -## 8.5.7 - - - No EE-specific changes - -## 8.5.6 - - - No EE-specific changes - -## 8.5.5 - - - GitLab Geo: Repository synchronization between primary and secondary nodes - - Add documentation for GitLab Pages - - Fix importing projects from GitHub Enterprise Edition - - Fix syntax error in init file - - Only show group member roles if explicitly requested - - GitLab Geo: Improve GeoNodes Admin screen - - GitLab Geo: Avoid locking yourself out when adding a GeoNode - -## 8.5.4 - - - [Elastic][Security] Notes exposure - -## 8.5.3 - - - Prevent LDAP from downgrading a group's last owner - - Update gitlab-elastic-search gem to 0.0.11 - -## 8.5.2 - - - Update LDAP groups asynchronously - - Fix an issue when weight text was displayed in Issuable collapsed sidebar -## 8.5.2 - - - Fix importing projects from GitHub Enterprise Edition. - -## 8.5.1 - - - Fix adding pages domain to projects in groups - -## 8.5.0 (2016-02-22) - - - Fix Elasticsearch blob results linking to the wrong reference ID (Stan Hu) - - Show warning when mirror repository default branch could not be updated because it has diverged from upstream. - - More reliable wiki indexer - - GitLab Pages gets support for custom domain and custom certificate - - Fix of Elastic indexer. It should not trigger record validation for projects - - Fix of Elastic indexer. Stabilze indexer when serialized data is corrupted - - [Elastic] Don't index unnecessary data into elastic - -## 8.4.11 - - - No EE-specific changes - -## 8.4.10 - - - No EE-specific changes - -## 8.4.9 - - - Fix vulnerability that made it possible to enumerate private projects belonging to group - -## 8.4.8 - - - No EE-specific changes - -## 8.4.7 - - - No EE-specific changes - -## 8.4.6 - - - No EE-specific changes - -## 8.4.5 - - - Update LDAP groups asynchronously - -## 8.4.4 - - - Re-introduce "Send email to users" link in Admin area - - Fix category values for Jenkins and JenkinsDeprecated services - - Fix Elasticsearch indexing for newly added snippets - - Make Elasticsearch indexer more stable - - Update gitlab-elasticsearch-git to 0.0.10 which contain a few important fixes - -## 8.4.3 - - - Elasticsearch: fix partial blob indexing on push - - Elasticsearch: added advanced indexer for repositories - - Fix Mirror User dropdown - -## 8.4.2 - - - Elasticsearch indexer performance improvements - - Don't redirect away from Mirror Repository settings when repo is empty - - Fix updating of branches in mirrored repository - - Fix a 500 error preventing LDAP users with 2FA enabled from logging in - - Rake task gitlab:elastic:index_repositories handles errors and shows progress - - Partial indexing of repo on push (indexing changes only) - -## 8.4.1 - - - No EE-specific changes - -## 8.4.0 (2016-01-22) - - - Add ability to create a note for user by admin - - Fix "Commit was rejected by git hook", when max_file_size was set null in project's Git hooks - - Fix "Approvals are not reset after a new push is made if the request is coming from a fork" - - Fix "User is not automatically removed from suggested approvers list if user is deleted" - - Add option to enforce a semi-linear history by only allowing merge requests to be merged that have been rebased - - Add option to trigger builds when branches or tags are updated from a mirrored upstream repository - - Ability to use Elasticsearch as a search engine - -## 8.3.10 - - - No EE-specific changes - -## 8.3.9 - - - No EE-specific changes - -## 8.3.8 - - - Fix vulnerability that made it possible to enumerate private projects belonging to group - -## 8.3.7 - - - No EE-specific changes - -## 8.3.6 - - - No EE-specific changes - -## 8.3.5 - - - No EE-specific changes - -## 8.3.4 - - - No EE-specific changes - -## 8.3.3 - - - Fix undefined method call in Jenkins integration service - -## 8.3.2 - - - No EE-specific changes - -## 8.3.1 - - - Rename "Group Statistics" to "Contribution Analytics" - -## 8.3.0 (2015-12-22) - - - License information can now be retrieved via the API - - Show Kerberos clone url when Kerberos enabled and url different than HTTP url (Borja Aparicio) - - Fix bug with negative approvals required - - Add group contribution analytics page - - Add GitLab Pages - - Add group contribution statistics page - - Automatically import Kerberos identities from Active Directory when Kerberos is enabled (Alex Lossent) - - Canonicalization of Kerberos identities to always include realm (Alex Lossent) - -## 8.2.6 - - - No EE-specific changes - -## 8.2.5 - - - No EE-specific changes - -## 8.2.4 - - - No EE-specific changes - -## 8.2.3 - - - No EE-specific changes - -## 8.2.2 - - - Fix 404 in redirection after removing a project (Stan Hu) - - Ensure cached application settings are refreshed at startup (Stan Hu) - - Fix Error 500 when viewing user's personal projects from admin page (Stan Hu) - - Fix: Raw private snippets access workflow - - Prevent "413 Request entity too large" errors when pushing large files with LFS - - Ensure GitLab fires custom update hooks after commit via UI - -## 8.2.1 - - - Forcefully update builds that didn't want to update with state machine - - Fix: saving GitLabCiService as Admin Template - -## 8.2.0 (2015-11-22) - - - Invalidate stored jira password if the endpoint URL is changed - - Fix: Page is not reloaded periodically to check if rebase is finished - - When someone as marked as a required approver for a merge request, an email should be sent - - Allow configuring the Jira API path (Alex Lossent) - - Fix "Rebase onto master" - - Ensure a comment is properly recorded in JIRA when a merge request is accepted - - Allow groups to appear in the `Share with group` share if the group owner allows it - - Add option to mirror an upstream repository. - -## 8.1.4 - - - Fix bug in JIRA integration which prevented merge requests from being accepted when using issue closing pattern - -## 8.1.3 - - - Fix "Rebase onto master" - -## 8.1.2 - - - Prevent a 500 error related to the JIRA external issue tracker service - -## 8.1.1 - - - Removed, see 8.1.2 - -## 8.1.0 (2015-10-22) - - - Add documentation for "Share project with group" API call - - Added an issues template (Hannes Rosenögger) - - Add documentation for "Share project with group" API call - - Ability to disable 'Share with Group' feature (via UI and API) - -## 8.0.6 - - - No EE-specific changes - -## 8.0.5 - - - "Multi-project" and "Treat unstable builds as passing" parameters for - the Jenkins CI service are now correctly persisted. - - Correct the build URL when "Multi-project" is enabled for the Jenkins CI - service. - -## 8.0.4 - - - Fix multi-project setup for Jenkins - -## 8.0.3 - - - No EE-specific changes - -## 8.0.2 - - - No EE-specific changes - -## 8.0.1 - - - Correct gem dependency versions - - Re-add the "Help Text" feature that was inadvertently removed - -## 8.0.0 (2015-09-22) - - - Fix navigation issue when viewing Group Settings pages - - Guests and Reporters can approve merge request as well - - Add fast-forward merge option in project settings - - Separate rebase & fast-forward merge features - -## 7.14.3 - - - No changes - -## 7.14.2 - - - Fix the rebase before merge feature - -## 7.14.1 - - - Fix sign in form when just Kerberos is enabled - -## 7.14.0 (2015-08-22) - - - Disable adding, updating and removing members from a group that is synced with LDAP - - Don't send "Added to group" notifications when group is LDAP synched - - Fix importing projects from GitHub Enterprise Edition. - - Automatic approver suggestions (based on an authority of the code) - - Add support for Jenkins unstable status - - Automatic approver suggestions (based on an authority of the code) - - Support Kerberos ticket-based authentication for Git HTTP access - -## 7.13.3 - - - Merge community edition changes for version 7.13.3 - - Improved validation for an approver - - Don't resend admin email to everyone if one delivery fails - - Added migration for removing of invalid approvers - -## 7.13.2 - - - Fix group web hook - - Don't resend admin email to everyone if one delivery fails - -## 7.13.1 - - - Merge community edition changes for version 7.13.1 - - Fix: "Rebase before merge" doesn't work when source branch is in the same project - -## 7.13.0 (2015-07-22) - - - Fix git hook validation on initial push to master branch. - - Reset approvals on push - - Fix 500 error when the source project of an MR is deleted - - Ability to define merge request approvers - -## 7.12.2 - - - Fixed the alignment of project settings icons - -## 7.12.1 - - - No changes specific to EE - -## 7.12.0 (2015-06-22) - - - Fix error when viewing merge request with a commit that includes "Closes #<issue id>". - - Enhance LDAP group synchronization to check also for member attributes that only contain "uid=<username>" - - Enhance LDAP group synchronization to check also for submember attributes - - Prevent LDAP group sync from removing a group's last owner - - Add Git hook to validate maximum file size. - - Project setting: approve merge request by N users before accept - - Support automatic branch jobs created by Jenkins in CI Status - - Add API support for adding and removing LDAP group links - -## 7.11.4 - - - no changes specific to EE - -## 7.11.3 - - - Fixed an issue with git annex - -## 7.11.2 - - - Fixed license upload and verification mechanism - -## 7.11.0 (2015-05-22) - - - Skip git hooks commit validation when pushing new tag. - - Add Two-factor authentication (2FA) for LDAP logins - -## 7.10.1 - - - Check if comment exists in Jira before sending a reference - -## 7.10.0 (2015-04-22) - - - Improve UI for next pages: Group LDAP sync, Project git hooks, Project share with groups, Admin -> Appearance settigns - - Default git hooks for new projects - - Fix LDAP group links page by using new group members route. - - Skip email confirmation when updated via LDAP. - -## 7.9.0 (2015-03-22) - - - Strip prefixes and suffixes from synced SSH keys: - `SSHKey:ssh-rsa keykeykey` and `ssh-rsa keykeykey (SSH key)` will now work - - Check if LDAP admin group exists before querying for user membership - - Use one custom header logo for all GitLab themes in appearance settings - - Escape wildcards when searching LDAP by group name. - - Group level Web Hooks - - Don't allow project to be shared with the group it is already in. - -## 7.8.0 (2015-02-22) - - - Improved Jira issue closing integration - - Improved message logging for Jira integration - - Added option of referencing JIRA issues from GitLab - - Update Sidetiq to 0.6.3 - - Added Github Enterprise importer - - When project has MR rebase enabled, MR will have rebase checkbox selected by default - - Minor UI fixes for sidebar navigation - - Manage large binaries with git annex - -## 7.7.0 (2015-01-22) - - - Added custom header logo support (Drew Blessing) - - Fixed preview appearance bug - - Improve performance for selectboxes: project share page, admin email users page - -## 7.6.2 - - - Fix failing migrations for MySQL, LDAP - -## 7.6.1 - - - No changes - -## 7.6.0 (2014-12-22) - - - Added Audit events related to membership changes for groups and projects - - Added option to attempt a rebase before merging merge request - - Dont show LDAP groups settings if LDAP disabled - - Added member lock for groups to disallow membership additions on project level - - Rebase on merge request. Introduced merge request option to rebase before merging - - Better message for failed pushes because of git hooks - - Kerberos support for web interface and git HTTP - -## 7.5.3 - - - Only set up Sidetiq from a Sidekiq server process (fixes Redis::InheritedError) - -## 7.5.0 (2014-11-22) - - - Added an ability to check each author commit's email by regex - - Added an ability to restrict commit authors to existing GitLab users - - Add an option for automatic daily LDAP user sync - - Added git hook for preventing tag removal to API - - Added git hook for setting commit message regex to API - - Added an ability to block commits with certain filenames by regex expression - - Improved a jenkins parser - -## 7.4.4 - - - Fix broken ldap migration - -## 7.4.0 (2014-10-22) - - - Support for multiple LDAP servers - - Skip AD specific LDAP checks - - Do not show ldap users in dropdowns for groups with enabled ldap-sync - - Update the JIRA integration documentation - - Reset the homepage to show the GitLab logo by deleting the custom logo. - -## 7.3.0 (2014-09-22) - - - Add an option to change the LDAP sync time from default 1 hour - - User will receive an email when unsubscribed from admin notifications - - Show group sharing members on /my/project/team - - Improve explanation of the LDAP permission reset - - Fix some navigation issues - - Added support for multiple LDAP groups per GitLab group - -## 7.2.0 (2014-08-22) - - - Improve Redmine integration - - Better logging for the JIRA issue closing service - - Administrators can now send email to all users through the admin interface - - JIRA issue transition ID is now customizable - - LDAP group settings are now visible in admin group show page and group members page - -## 7.1.0 (2014-07-22) - - - Synchronize LDAP-enabled GitLab administrators with an LDAP group (Marvin Frick, sponsored by SinnerSchrader) - - Synchronize SSH keys with LDAP (Oleg Girko (Jolla) and Marvin Frick (SinnerSchrader)) - - Support Jenkins jobs with multiple modules (Marvin Frick, sponsored by SinnerSchrader) - -## 7.0.0 (2014-06-22) - - - Fix: empty brand images are displayed as empty image_tag on login page (Marvin Frick, sponsored by SinnerSchrader) - -## 6.9.4 - - - Fix bug in JIRA Issue closing triggered by commit messages - - Fix JIRA issue reference bug - -## 6.9.3 - - - Fix check CI status only when CI service is enabled(Daniel Aquino) - -## 6.9.2 - - - Merge community edition changes for version 6.9.2 - -## 6.9.1 - - - Merge community edition changes for version 6.9.1 - -## 6.9.0 (2014-05-22) - - - Add support for closing Jira tickets with commits and MR - - Template for Merge Request description can be added in project settings - - Jenkins CI service - - Fix LDAP email upper case bug - -## 6.8.0 (2014-04-22) - - - Customise sign-in page with custom text and logo - -## 6.7.1 - - - Handle LDAP errors in Adapter#dn_matches_filter? - -## 6.7.0 (2014-03-22) - - - Improve LDAP sign-in speed by reusing connections - - Add support for Active Directory nested LDAP groups - - Git hooks: Commit message regex - - Git hooks: Deny git tag removal - - Fix group edit in admin area - -## 6.6.0 (2014-02-22) - - - Permission reset button for LDAP groups - - Better performance with large numbers of users with access to one project - -## 6.5.0 (2014-01-22) - - - Add reset permissions button to Group#members page - -## 6.4.0 (2013-12-22) - - - Respect existing group permissions during sync with LDAP group (d3844662ec7ce816b0a85c8b40f66ee6c5ae90a1) - -## 6.3.0 (2013-11-22) - - - When looking up a user by DN, use single scope (bc8a875df1609728f1c7674abef46c01168a0d20) - - Try sAMAccountName if omniauth nickname is nil (9b7174c333fa07c44cc53b80459a115ef1856e38) - -## 6.2.0 (2013-10-22) - - - API: expose ldap_cn and ldap_access group attributes - - Use omniauth-ldap nickname attribute as GitLab username - - Improve group sharing UI for installation with many groups - - Fix empty LDAP group raises exception - - Respect LDAP user filter for git access diff --git a/changelogs/unreleased/202261-migrate-spinner-for-app-assets-javascripts-ajax_loading_spinner-js.yml b/changelogs/unreleased/202261-migrate-spinner-for-app-assets-javascripts-ajax_loading_spinner-js.yml new file mode 100644 index 00000000000..43f38c1bbb8 --- /dev/null +++ b/changelogs/unreleased/202261-migrate-spinner-for-app-assets-javascripts-ajax_loading_spinner-js.yml @@ -0,0 +1,5 @@ +--- +title: Migrate '.fa-spinner' to '.spinner' for 'app/assets/javascripts/ajax_loading_spinner.js' +merge_request: 41147 +author: Gilang Gumilar +type: changed diff --git a/changelogs/unreleased/225166-adjust-the-package-registry-breadcrumb-to-match-navigation.yml b/changelogs/unreleased/225166-adjust-the-package-registry-breadcrumb-to-match-navigation.yml new file mode 100644 index 00000000000..066e9d1c3b9 --- /dev/null +++ b/changelogs/unreleased/225166-adjust-the-package-registry-breadcrumb-to-match-navigation.yml @@ -0,0 +1,5 @@ +--- +title: Adjust the Package Registry breadcrumb to match navigation +merge_request: 41264 +author: +type: changed diff --git a/changelogs/unreleased/241492-check-pypi-metadata-size.yml b/changelogs/unreleased/241492-check-pypi-metadata-size.yml new file mode 100644 index 00000000000..4f91cefa953 --- /dev/null +++ b/changelogs/unreleased/241492-check-pypi-metadata-size.yml @@ -0,0 +1,5 @@ +--- +title: Validates pypi required_python size to avoid 500 error +merge_request: 40803 +author: +type: fixed diff --git a/changelogs/unreleased/241879-Replace-v-html.yml b/changelogs/unreleased/241879-Replace-v-html.yml new file mode 100644 index 00000000000..3f839e943a8 --- /dev/null +++ b/changelogs/unreleased/241879-Replace-v-html.yml @@ -0,0 +1,5 @@ +--- +title: Replace v-html with v-safe-html in note_signed_out_widget_spec.js +merge_request: 41219 +author: Kev @KevSlashNull +type: other diff --git a/changelogs/unreleased/241897-Replace-v-html.yml b/changelogs/unreleased/241897-Replace-v-html.yml new file mode 100644 index 00000000000..3ce994036fa --- /dev/null +++ b/changelogs/unreleased/241897-Replace-v-html.yml @@ -0,0 +1,5 @@ +--- +title: Replace v-html with v-safe-html in delete_project_modal.vue +merge_request: 41130 +author: Kev @KevSlashNull +type: other diff --git a/changelogs/unreleased/241941-Replace-v-html.yml b/changelogs/unreleased/241941-Replace-v-html.yml new file mode 100644 index 00000000000..c65ef3ad5d9 --- /dev/null +++ b/changelogs/unreleased/241941-Replace-v-html.yml @@ -0,0 +1,5 @@ +--- +title: Replace v-html with v-safe-html in list.vue +merge_request: 41145 +author: Kev @KevSlashNull +type: other diff --git a/changelogs/unreleased/241966-Replace-v-html.yml b/changelogs/unreleased/241966-Replace-v-html.yml new file mode 100644 index 00000000000..cc72de64e38 --- /dev/null +++ b/changelogs/unreleased/241966-Replace-v-html.yml @@ -0,0 +1,5 @@ +--- +title: Replace v-html with v-safe-html in suggestions.vue +merge_request: 41200 +author: Kev @KevSlashNull +type: other diff --git a/changelogs/unreleased/eb-update-workhorse-8-45-0.yml b/changelogs/unreleased/eb-update-workhorse-8-45-0.yml new file mode 100644 index 00000000000..a4d59eff47f --- /dev/null +++ b/changelogs/unreleased/eb-update-workhorse-8-45-0.yml @@ -0,0 +1,5 @@ +--- +title: Update Workhorse to v8.45.0 +merge_request: 41293 +author: +type: other diff --git a/changelogs/unreleased/kp-fix-missing-create-manage-labels-issue-board.yml b/changelogs/unreleased/kp-fix-missing-create-manage-labels-issue-board.yml new file mode 100644 index 00000000000..9de8e58846a --- /dev/null +++ b/changelogs/unreleased/kp-fix-missing-create-manage-labels-issue-board.yml @@ -0,0 +1,5 @@ +--- +title: Fix create & manage label actions in Labels dropdown +merge_request: 40511 +author: +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-17.yml b/changelogs/unreleased/rails-save-bang-17.yml new file mode 100644 index 00000000000..f77cb7beae1 --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-17.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for spec/serializers/* +merge_request: 41309 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-18.yml b/changelogs/unreleased/rails-save-bang-18.yml new file mode 100644 index 00000000000..6b375b3f132 --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-18.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for spec/services/issues/* +merge_request: 41312 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-22.yml b/changelogs/unreleased/rails-save-bang-22.yml new file mode 100644 index 00000000000..34cba15c115 --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-22.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for spec/requests/api/pages/* +merge_request: 41324 +author: +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-23.yml b/changelogs/unreleased/rails-save-bang-23.yml new file mode 100644 index 00000000000..c46b361b8d0 --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-23.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for spec/models/cycle_analytics/* +merge_request: 41326 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-25.yml b/changelogs/unreleased/rails-save-bang-25.yml new file mode 100644 index 00000000000..021fabf7ffa --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-25.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for ee/spec/services/projects/* +merge_request: 41332 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-27.yml b/changelogs/unreleased/rails-save-bang-27.yml new file mode 100644 index 00000000000..2f91c28322d --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-27.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for ee/spec/lib/ee/gitlab/background_migration/* +merge_request: 41357 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/rails-save-bang-28.yml b/changelogs/unreleased/rails-save-bang-28.yml new file mode 100644 index 00000000000..c39e47951aa --- /dev/null +++ b/changelogs/unreleased/rails-save-bang-28.yml @@ -0,0 +1,5 @@ +--- +title: Fix Rails/SaveBang offenses for spec/requests/api/* +merge_request: 41362 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/redundant-sort-cop.yml b/changelogs/unreleased/redundant-sort-cop.yml new file mode 100644 index 00000000000..594dfc8d232 --- /dev/null +++ b/changelogs/unreleased/redundant-sort-cop.yml @@ -0,0 +1,5 @@ +--- +title: Fix Style/RedundantSort cop +merge_request: 41108 +author: Rajendra Kadam +type: fixed diff --git a/changelogs/unreleased/sh-log-psql-errors.yml b/changelogs/unreleased/sh-log-psql-errors.yml new file mode 100644 index 00000000000..9c51f838f96 --- /dev/null +++ b/changelogs/unreleased/sh-log-psql-errors.yml @@ -0,0 +1,5 @@ +--- +title: Flag errors from psql when restoring from backups +merge_request: 40911 +author: +type: fixed diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile index 41ca2aa1978..ca4b151faf9 100644 --- a/danger/database/Dangerfile +++ b/danger/database/Dangerfile @@ -59,11 +59,9 @@ if gitlab.mr_labels.include?('database') || db_paths_to_review.any? markdown(DB_MESSAGE) markdown(DB_FILES_MESSAGE + helper.markdown_list(db_paths_to_review)) if db_paths_to_review.any? - database_labels = helper.missing_database_labels(gitlab.mr_labels) - - if database_labels.any? + unless has_database_scoped_labels?(gitlab.mr_labels) gitlab.api.update_merge_request(gitlab.mr_json['project_id'], - gitlab.mr_json['iid'], - labels: (gitlab.mr_labels + database_labels).join(',')) + gitlab.mr_json['iid'], + add_labels: 'database::review pending') end end diff --git a/danger/documentation/Dangerfile b/danger/documentation/Dangerfile index 1dd6d484968..16d22969fbd 100644 --- a/danger/documentation/Dangerfile +++ b/danger/documentation/Dangerfile @@ -25,9 +25,3 @@ markdown(<<~MARKDOWN) - [Technical Writers assignments](https://about.gitlab.com/handbook/engineering/technical-writing/#designated-technical-writers) for the appropriate technical writer for this review. - [Documentation workflows](https://docs.gitlab.com/ee/development/documentation/workflow.html) for information on when to assign a merge request for review. MARKDOWN - -unless gitlab.mr_labels.include?('documentation') - gitlab.api.update_merge_request(gitlab.mr_json['project_id'], - gitlab.mr_json['iid'], - labels: (gitlab.mr_labels + ['documentation']).join(',')) -end diff --git a/danger/specialization_labels/Dangerfile b/danger/specialization_labels/Dangerfile new file mode 100644 index 00000000000..b12771b9807 --- /dev/null +++ b/danger/specialization_labels/Dangerfile @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +gitlab_danger = GitlabDanger.new(helper.gitlab_helper) + +return unless gitlab_danger.ci? + +SPECIALIZATIONS = { + database: 'database', + backend: 'backend', + frontend: 'frontend', + docs: 'documentation', + qa: 'QA', + engineering_productivity: 'Engineering Productivity' +}.freeze + +labels_to_add = helper.changes_by_category.each_with_object([]) do |(category, _changes), memo| + label = SPECIALIZATIONS.fetch(category, category.to_s) + memo << label unless gitlab.mr_labels.include?(label) +end + +if labels_to_add.any? + gitlab.api.update_merge_request(gitlab.mr_json['project_id'], + gitlab.mr_json['iid'], + add_labels: labels_to_add.join(',')) +end diff --git a/doc/api/README.md b/doc/api/README.md index 66d7076a125..8aef8500cd7 100644 --- a/doc/api/README.md +++ b/doc/api/README.md @@ -123,7 +123,7 @@ Read more about [GitLab as an OAuth2 provider](oauth2.md). ### Personal/project access tokens Access tokens can be used to authenticate with the API by passing it in either the `private_token` parameter -or the `Private-Token` header. +or the `PRIVATE-TOKEN` header. Example of using the personal/project access token in a parameter: @@ -134,7 +134,7 @@ curl "https://gitlab.example.com/api/v4/projects?private_token=<your_access_toke Example of using the personal/project access token in a header: ```shell -curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects" +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects" ``` You can also use personal/project access tokens with OAuth-compliant headers: @@ -178,7 +178,7 @@ For more information, refer to the [users API](users.md#create-an-impersonation-token) docs. Impersonation tokens are used exactly like regular personal access tokens, and can be passed in either the -`private_token` parameter or the `Private-Token` header. +`private_token` parameter or the `PRIVATE-TOKEN` header. #### Disable impersonation @@ -266,7 +266,7 @@ GET /projects?private_token=<your_access_token>&sudo=username ``` ```shell -curl --header "Private-Token: <your_access_token>" --header "Sudo: username" "https://gitlab.example.com/api/v4/projects" +curl --header "PRIVATE-TOKEN: <your_access_token>" --header "Sudo: username" "https://gitlab.example.com/api/v4/projects" ``` Example of a valid API call and a request using cURL with sudo request, @@ -277,7 +277,7 @@ GET /projects?private_token=<your_access_token>&sudo=23 ``` ```shell -curl --header "Private-Token: <your_access_token>" --header "Sudo: 23" "https://gitlab.example.com/api/v4/projects" +curl --header "PRIVATE-TOKEN: <your_access_token>" --header "Sudo: 23" "https://gitlab.example.com/api/v4/projects" ``` ## Status codes diff --git a/doc/api/freeze_periods.md b/doc/api/freeze_periods.md index e6a5e69497f..7a2f88e9f00 100644 --- a/doc/api/freeze_periods.md +++ b/doc/api/freeze_periods.md @@ -31,7 +31,7 @@ GET /projects/:id/freeze_periods Example request: ```shell -curl --header "PRIVATE-TOKEN: gVWYVHDRzXiRpN1rUC8T" "https://gitlab.example.com/api/v4/projects/19/freeze_periods" +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/19/freeze_periods" ``` Example response: @@ -65,7 +65,7 @@ GET /projects/:id/freeze_periods/:freeze_period_id Example request: ```shell -curl --header "PRIVATE-TOKEN: gVWYVHDRzXiRpN1rUC8T" "https://gitlab.example.com/api/v4/projects/19/freeze_periods/1" +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/19/freeze_periods/1" ``` Example response: @@ -99,7 +99,7 @@ POST /projects/:id/freeze_periods Example request: ```shell -curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: gVWYVHDRzXiRpN1rUC8T" \ +curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: <your_access_token>" \ --data '{ "freeze_start": "0 23 * * 5", "freeze_end": "0 7 * * 1", "cron_timezone": "UTC" }' \ --request POST https://gitlab.example.com/api/v4/projects/19/freeze_periods ``` @@ -136,7 +136,7 @@ PUT /projects/:id/freeze_periods/:tag_name Example request: ```shell -curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: gVWYVHDRzXiRpN1rUC8T" \ +curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: <your_access_token>" \ --data '{ "freeze_end": "0 8 * * 1" }' \ --request PUT https://gitlab.example.com/api/v4/projects/19/freeze_periods/1 ``` @@ -170,6 +170,6 @@ DELETE /projects/:id/freeze_periods/:freeze_period_id Example request: ```shell -curl --request DELETE --header "PRIVATE-TOKEN: gVWYVHDRzXiRpN1rUC8T" "https://gitlab.example.com/api/v4/projects/19/freeze_periods/1" +curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/19/freeze_periods/1" ``` diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 34d26008972..86bc0b57344 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -1803,6 +1803,36 @@ type ClusterAgentTokenCreatePayload { } """ +Autogenerated input type of ClusterAgentTokenDelete +""" +input ClusterAgentTokenDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Global ID of the cluster agent token that will be deleted + """ + id: ClustersAgentTokenID! +} + +""" +Autogenerated return type of ClusterAgentTokenDelete +""" +type ClusterAgentTokenDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! +} + +""" Identifier of Clusters::Agent """ scalar ClustersAgentID @@ -10030,6 +10060,7 @@ type Mutation { boardListUpdateLimitMetrics(input: BoardListUpdateLimitMetricsInput!): BoardListUpdateLimitMetricsPayload clusterAgentDelete(input: ClusterAgentDeleteInput!): ClusterAgentDeletePayload clusterAgentTokenCreate(input: ClusterAgentTokenCreateInput!): ClusterAgentTokenCreatePayload + clusterAgentTokenDelete(input: ClusterAgentTokenDeleteInput!): ClusterAgentTokenDeletePayload commitCreate(input: CommitCreateInput!): CommitCreatePayload configureSast(input: ConfigureSastInput!): ConfigureSastPayload createAlertIssue(input: CreateAlertIssueInput!): CreateAlertIssuePayload diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index fdffa810044..b526f0f7361 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -4945,6 +4945,94 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "ClusterAgentTokenDeleteInput", + "description": "Autogenerated input type of ClusterAgentTokenDelete", + "fields": null, + "inputFields": [ + { + "name": "id", + "description": "Global ID of the cluster agent token that will be deleted", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ClustersAgentTokenID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ClusterAgentTokenDeletePayload", + "description": "Autogenerated return type of ClusterAgentTokenDelete", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "SCALAR", "name": "ClustersAgentID", "description": "Identifier of Clusters::Agent", @@ -28344,6 +28432,33 @@ "deprecationReason": null }, { + "name": "clusterAgentTokenDelete", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "ClusterAgentTokenDeleteInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ClusterAgentTokenDeletePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "commitCreate", "description": null, "args": [ diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 9c88d802987..bceaf4bde4f 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -314,6 +314,15 @@ Autogenerated return type of ClusterAgentTokenCreate | `secret` | String | Token secret value. Make sure you save it - you won't be able to access it again | | `token` | ClusterAgentToken | Token created after mutation | +## ClusterAgentTokenDeletePayload + +Autogenerated return type of ClusterAgentTokenDelete + +| Name | Type | Description | +| --- | ---- | ---------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | + ## Commit | Name | Type | Description | diff --git a/doc/ci/environments/protected_environments.md b/doc/ci/environments/protected_environments.md index b6141ddc7ac..5dda0cc81f6 100644 --- a/doc/ci/environments/protected_environments.md +++ b/doc/ci/environments/protected_environments.md @@ -47,6 +47,37 @@ To protect an environment: The protected environment will now appear in the list of protected environments. +## Environment access by group membership + +A user may be granted access to protected environments as part of +[group membership](../../user/group/index.md). Users with +[Reporter permissions](../../user/permissions.md), can only be granted access to +protected environments with this method. + +## Deployment branch access + +Users with [Developer permissions](../../user/permissions.md) can be granted +access to a protected environment through any of these methods: + +- As an individual contributor, through a role. +- Through a group membership. + +If the user also has push or merge access to the branch deployed on production, +they have the following privileges: + +- [Stopping an environment](index.md#stopping-an-environment). +- [Delete a stopped environment](index.md#delete-a-stopped-environment). +- [Create an environment terminal](index.md#web-terminals). + +## Deployment-only access to protected environments + +Users granted access to a protected environment, but not push or merge access +to the branch deployed to it, are only granted access to deploy the environment. + +NOTE: **Note:** +Deployment-only access is the only possible access level for users with +[Reporter permissions](../../user/permissions.md). + ## Modifying and unprotecting environments Maintainers can: @@ -55,6 +86,10 @@ Maintainers can: **Allowed to Deploy** dropdown menu. - Unprotect a protected environment by clicking the **Unprotect** button for that environment. +NOTE: **Note:** +After an environment is unprotected, all access entries are deleted and must +be re-entered if the environment is re-protected. + For more information, see [Deployment safety](deployment_safety.md). <!-- ## Troubleshooting diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 402d0a486da..5fc4e85bbf8 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -2448,7 +2448,7 @@ You can set the period with `start_in` key. The value of `start_in` key is an el provided. `start_in` key must be less than or equal to one week. Examples of valid values include: - `'5'` -- `10 seconds` +- `5 seconds` - `30 minutes` - `1 day` - `1 week` @@ -3269,7 +3269,8 @@ and are not accessible anymore. The value of `expire_in` is an elapsed time in seconds, unless a unit is provided. Examples of valid values: -- `42` +- `'42'` +- `42 seconds` - `3 mins 4 sec` - `2 hrs 20 min` - `2h20min` diff --git a/doc/development/documentation/styleguide.md b/doc/development/documentation/styleguide.md index 949b6c19563..81f6ef43372 100644 --- a/doc/development/documentation/styleguide.md +++ b/doc/development/documentation/styleguide.md @@ -305,7 +305,7 @@ Do not include the same information in multiple places. ### References across documents -- Give each folder an index.md page that introduces the topic, introduces the +- Give each folder an `index.md` page that introduces the topic, introduces the pages within, and links to the pages within (including to the index pages of any next-level subpaths). - To ensure discoverability, ensure each new or renamed doc is linked from its @@ -642,8 +642,8 @@ Additional examples are available in the [Pajamas guide for punctuation](https:/ ### Placeholder text -Often in examples, a writer will provide a command or configuration that is -complete apart from a value specific to the reader. +Often in examples, a writer will provide a command or configuration that +uses values specific to the reader. In these cases, use [`<` and `>`](https://en.wikipedia.org/wiki/Usage_message#Pattern) to call out where a reader must replace text with their own value. @@ -1943,7 +1943,7 @@ METHOD /endpoint Example request: ```shell -curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/endpoint?parameters' +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/endpoint?parameters" ``` Example response: @@ -2038,7 +2038,7 @@ you can use in the API documentation. Get the details of a group: ```shell -curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/groups/gitlab-org +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/gitlab-org" ``` #### cURL example with parameters passed in the URL @@ -2066,7 +2066,7 @@ In this example we create a new group. Watch carefully the single and double quotes. ```shell -curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{"path": "my-group", "name": "My group"}' https://gitlab.example.com/api/v4/groups +curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{"path": "my-group", "name": "My group"}' "https://gitlab.example.com/api/v4/groups" ``` #### Post data using form-data @@ -2075,7 +2075,7 @@ Instead of using JSON or urlencode you can use multipart/form-data which properly handles data encoding: ```shell -curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "title=ssh-key" --form "key=ssh-rsa AAAAB3NzaC1yc2EA..." https://gitlab.example.com/api/v4/users/25/keys +curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "title=ssh-key" --form "key=ssh-rsa AAAAB3NzaC1yc2EA..." "https://gitlab.example.com/api/v4/users/25/keys" ``` The above example is run by and administrator and will add an SSH public key @@ -2101,7 +2101,7 @@ exclude specific users when requesting a list of users for a project, you would do something like this: ```shell -curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --data "skip_users[]=<user_id>" --data "skip_users[]=<user_id>" https://gitlab.example.com/api/v4/projects/<project_id>/users +curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --data "skip_users[]=<user_id>" --data "skip_users[]=<user_id>" "https://gitlab.example.com/api/v4/projects/<project_id>/users" ``` ## GraphQL API diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md index 52254abf5b3..9d814abb3c2 100644 --- a/doc/development/testing_guide/best_practices.md +++ b/doc/development/testing_guide/best_practices.md @@ -524,6 +524,48 @@ for modifications. If you have no other choice, an `around` block similar to the example for global variables, above, can be used, but this should be avoided if at all possible. +#### Test Snowplow events + +CAUTION: **Warning:** +Snowplow performs **runtime type checks** by using the [contracts gem](https://rubygems.org/gems/contracts). +Since Snowplow is **by default disabled in tests and development**, it can be hard to +**catch exceptions** when mocking `Gitlab::Tracking`. + +To catch runtime errors due to type checks, you can enable Snowplow in tests by marking the spec with +`:snowplow` and use the `expect_snowplow_event` helper which will check for +calls to `Gitlab::Tracking#event`. + +```ruby +describe '#show', :snowplow do + it 'tracks snowplow events' do + get :show + + expect_snowplow_event( + category: 'Experiment', + action: 'start', + ) + expect_snowplow_event( + category: 'Experiment', + action: 'sent', + property: 'property', + label: 'label' + ) + end +end +``` + +When you want to ensure that no event got called, you can use `expect_no_snowplow_event`. + +```ruby + describe '#show', :snowplow do + it 'does not track any snowplow events' do + get :show + + expect_no_snowplow_event + end + end +``` + ### Table-based / Parameterized tests This style of testing is used to exercise one piece of code with a comprehensive diff --git a/doc/operations/incident_management/alert_details.md b/doc/operations/incident_management/alert_details.md index 2c5a8d704e4..16a11f3863a 100644 --- a/doc/operations/incident_management/alert_details.md +++ b/doc/operations/incident_management/alert_details.md @@ -11,6 +11,12 @@ Navigate to the Alert details view by visiting the list. You need least Developer [permissions](../../user/permissions.md) to access alerts. +TIP: **Tip:** +To review live examples of GitLab alerts, visit the +[alert list](https://gitlab.com/gitlab-examples/ops/incident-setup/everyone/tanuki-inc/-/alert_management) +for this demo project. Click any alert in the list to examine its alert details +page. + Alerts provide **Overview** and **Alert details** tabs to give you the right amount of information you need. diff --git a/doc/operations/incident_management/alerts.md b/doc/operations/incident_management/alerts.md index e7d81068858..d908af63000 100644 --- a/doc/operations/incident_management/alerts.md +++ b/doc/operations/incident_management/alerts.md @@ -31,6 +31,10 @@ The alert list displays the following information: - **Triggered**: No one has begun investigation. - **Acknowledged**: Someone is actively investigating the problem. - **Resolved**: No further work is required. + +TIP: **Tip:** +Check out a [live example](https://gitlab.com/gitlab-examples/ops/incident-setup/everyone/tanuki-inc/-/alert_management) +in GitLab to examine alerts in action. ## Enable Alerts diff --git a/doc/operations/incident_management/incidents.md b/doc/operations/incident_management/incidents.md index 103bc9c0264..f48b6a12f49 100644 --- a/doc/operations/incident_management/incidents.md +++ b/doc/operations/incident_management/incidents.md @@ -33,6 +33,10 @@ The Incident list displays incidents sorted by incident created date. To see if a column is sortable, point your mouse at the header. Sortable columns display an arrow next to the column name. +TIP: **Tip:** +For a live example of the incident list in action, visit this +[demo project](https://gitlab.com/gitlab-examples/ops/incident-setup/everyone/tanuki-inc/-/incidents). + NOTE: **Note:** Incidents share the [Issues API](../../user/project/issues/index.md). diff --git a/doc/raketasks/backup_restore.md b/doc/raketasks/backup_restore.md index 2163cf22944..adbc6e151f3 100644 --- a/doc/raketasks/backup_restore.md +++ b/doc/raketasks/backup_restore.md @@ -295,6 +295,24 @@ For installations from source: sudo -u git -H bundle exec rake gitlab:backup:create SKIP=tar RAILS_ENV=production ``` +#### Disabling prompts during restore + +During a restore from backup, the restore script may ask for confirmation before +proceeding. If you wish to disable these prompts, you can set the `GITLAB_ASSUME_YES` +environment variable to `1`. + +For Omnibus GitLab packages: + +```shell +sudo GITLAB_ASSUME_YES=1 gitlab-backup restore +``` + +For installations from source: + +```shell +sudo -u git -H GITLAB_ASSUME_YES=1 bundle exec rake gitlab:backup:restore RAILS_ENV=production +``` + #### Back up Git repositories concurrently > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37158) in GitLab 13.3. diff --git a/doc/user/gitlab_com/index.md b/doc/user/gitlab_com/index.md index aa9e6715335..2e16e9fd73e 100644 --- a/doc/user/gitlab_com/index.md +++ b/doc/user/gitlab_com/index.md @@ -68,7 +68,7 @@ Below are the settings for [GitLab Pages](https://about.gitlab.com/stages-devops | IP address | `35.185.44.232` | - | | Custom domains support | yes | no | | TLS certificates support | yes | no | -| Maximum size (uncompressed) | 1G | 100M | +| Maximum size (compressed) | 1G | 100M | NOTE: **Note:** The maximum size of your Pages site is regulated by the artifacts maximum size @@ -80,7 +80,7 @@ Below are the current settings regarding [GitLab CI/CD](../../ci/README.md). | Setting | GitLab.com | Default | | ----------- | ----------------- | ------------- | -| Artifacts maximum size (uncompressed) | 1G | 100M | +| Artifacts maximum size (compressed) | 1G | 100M | | Artifacts [expiry time](../../ci/yaml/README.md#artifactsexpire_in) | From June 22, 2020, deleted after 30 days unless otherwise specified (artifacts created before that date have no expiry). | deleted after 30 days unless otherwise specified | | Scheduled Pipeline Cron | `*/5 * * * *` | `19 * * * *` | | [Max jobs in active pipelines](../../administration/instance_limits.md#number-of-jobs-in-active-pipelines) | `500` for Free tier, unlimited otherwise | Unlimited diff --git a/lib/api/helpers/packages_manager_clients_helpers.rb b/lib/api/helpers/packages_manager_clients_helpers.rb index a30396bf07a..e7662b03577 100644 --- a/lib/api/helpers/packages_manager_clients_helpers.rb +++ b/lib/api/helpers/packages_manager_clients_helpers.rb @@ -6,16 +6,6 @@ module API extend Grape::API::Helpers include ::API::Helpers::PackagesHelpers - params :workhorse_upload_params do - optional 'file.path', type: String, desc: 'Path to locally stored body (generated by Workhorse)' - optional 'file.name', type: String, desc: 'Real filename as send in Content-Disposition (generated by Workhorse)' - optional 'file.type', type: String, desc: 'Real content type as send in Content-Type (generated by Workhorse)' - optional 'file.size', type: Integer, desc: 'Real size of file (generated by Workhorse)' - optional 'file.md5', type: String, desc: 'MD5 checksum of the file (generated by Workhorse)' - optional 'file.sha1', type: String, desc: 'SHA1 checksum of the file (generated by Workhorse)' - optional 'file.sha256', type: String, desc: 'SHA256 checksum of the file (generated by Workhorse)' - end - def find_job_from_http_basic_auth return unless request.headers @@ -36,12 +26,6 @@ module API DeployToken.active.find_by_token(token) end - def uploaded_package_file(param_name = :file) - uploaded_file = UploadedFile.from_params(params, param_name, ::Packages::PackageFileUploader.workhorse_local_upload_path) - bad_request!('Missing package file!') unless uploaded_file - uploaded_file - end - private def decode_token diff --git a/lib/backup/database.rb b/lib/backup/database.rb index ddddd57bd60..6c0029df27f 100644 --- a/lib/backup/database.rb +++ b/lib/backup/database.rb @@ -8,10 +8,10 @@ module Backup attr_reader :progress attr_reader :config, :db_file_name - def initialize(progress) + def initialize(progress, filename: nil) @progress = progress @config = YAML.load_file(File.join(Rails.root, 'config', 'database.yml'))[Rails.env] - @db_file_name = File.join(Gitlab.config.backup.path, 'db', 'database.sql.gz') + @db_file_name = filename || File.join(Gitlab.config.backup.path, 'db', 'database.sql.gz') end def dump @@ -57,26 +57,63 @@ module Backup decompress_pid = spawn(*%w(gzip -cd), out: decompress_wr, in: db_file_name) decompress_wr.close - restore_pid = + status, errors = case config["adapter"] when "postgresql" then progress.print "Restoring PostgreSQL database #{config['database']} ... " pg_env - spawn('psql', config['database'], in: decompress_rd) + execute_and_track_errors(pg_restore_cmd, decompress_rd) end decompress_rd.close - success = [decompress_pid, restore_pid].all? do |pid| - Process.waitpid(pid) - $?.success? + Process.waitpid(decompress_pid) + success = $?.success? && status.success? + + if errors.present? + progress.print "------ BEGIN ERRORS -----".color(:yellow) + progress.print errors.join.color(:yellow) + progress.print "------ END ERRORS -------".color(:yellow) end report_success(success) - abort 'Restore failed' unless success + raise Backup::Error, 'Restore failed' unless success + + errors end protected + def execute_and_track_errors(cmd, decompress_rd) + errors = [] + + Open3.popen3(ENV, *cmd) do |stdin, stdout, stderr, thread| + stdin.binmode + + Thread.new do + data = stdout.read + $stdout.write(data) + end + + Thread.new do + until (raw_line = stderr.gets).nil? + warn(raw_line) + # Recent database dumps will use --if-exists with pg_dump + errors << raw_line unless raw_line =~ /does not exist$/ + end + end + + begin + IO.copy_stream(decompress_rd, stdin) + rescue Errno::EPIPE + end + + stdin.close + + thread.join + [thread.value, errors] + end + end + def pg_env args = { 'username' => 'PGUSER', @@ -101,5 +138,11 @@ module Backup progress.puts '[FAILED]'.color(:red) end end + + private + + def pg_restore_cmd + ['psql', config['database']] + end end end diff --git a/lib/gitlab/danger/helper.rb b/lib/gitlab/danger/helper.rb index 9ba5df89a35..878f11eb9ce 100644 --- a/lib/gitlab/danger/helper.rb +++ b/lib/gitlab/danger/helper.rb @@ -206,16 +206,6 @@ module Gitlab usernames.map { |u| Gitlab::Danger::Teammate.new('username' => u) } end - def missing_database_labels(current_mr_labels) - labels = if has_database_scoped_labels?(current_mr_labels) - ['database'] - else - ['database', 'database::review pending'] - end - - labels - current_mr_labels - end - def sanitize_mr_title(title) title.gsub(DRAFT_REGEX, '').gsub(/`/, '\\\`') end @@ -259,8 +249,6 @@ module Gitlab all_changed_files.grep(regex) end - private - def has_database_scoped_labels?(current_mr_labels) current_mr_labels.any? { |label| label.start_with?('database::') } end diff --git a/lib/gitlab/task_helpers.rb b/lib/gitlab/task_helpers.rb index 73187d8dea8..c702c6f1add 100644 --- a/lib/gitlab/task_helpers.rb +++ b/lib/gitlab/task_helpers.rb @@ -24,6 +24,8 @@ module Gitlab # Returns "yes" the user chose to continue # Raises Gitlab::TaskAbortedByUserError if the user chose *not* to continue def ask_to_continue + return if Gitlab::Utils.to_boolean(ENV['GITLAB_ASSUME_YES']) + answer = prompt("Do you want to continue (yes/no)? ".color(:blue), %w{yes no}) raise Gitlab::TaskAbortedByUserError unless answer == "yes" end diff --git a/lib/gitlab/tracking.rb b/lib/gitlab/tracking.rb index 37688d6e0e7..2a0d902295e 100644 --- a/lib/gitlab/tracking.rb +++ b/lib/gitlab/tracking.rb @@ -56,12 +56,19 @@ module Gitlab def snowplow @snowplow ||= SnowplowTracker::Tracker.new( - SnowplowTracker::AsyncEmitter.new(Gitlab::CurrentSettings.snowplow_collector_hostname, protocol: 'https'), + emitter, SnowplowTracker::Subject.new, SNOWPLOW_NAMESPACE, Gitlab::CurrentSettings.snowplow_app_id ) end + + def emitter + SnowplowTracker::AsyncEmitter.new( + Gitlab::CurrentSettings.snowplow_collector_hostname, + protocol: 'https' + ) + end end end end diff --git a/lib/gitlab_danger.rb b/lib/gitlab_danger.rb index a98ac9200da..5537bd81f10 100644 --- a/lib/gitlab_danger.rb +++ b/lib/gitlab_danger.rb @@ -22,6 +22,7 @@ class GitlabDanger roulette ce_ee_vue_templates sidekiq_queues + specialization_labels ].freeze MESSAGE_PREFIX = '==>'.freeze diff --git a/lib/tasks/gitlab/backup.rake b/lib/tasks/gitlab/backup.rake index 70d22837335..2a3713ed85c 100644 --- a/lib/tasks/gitlab/backup.rake +++ b/lib/tasks/gitlab/backup.rake @@ -136,7 +136,21 @@ namespace :gitlab do task restore: :gitlab_environment do puts_time "Restoring database ... ".color(:blue) - Backup::Database.new(progress).restore + errors = Backup::Database.new(progress).restore + + if errors.present? + warning = <<~MSG + There were errors in restoring the schema. This may cause + issues if this results in missing indexes, constraints, or + columns. Please record the errors above and contact GitLab + Support if you have questions: + https://about.gitlab.com/support/ + MSG + + warn warning.color(:red) + ask_to_continue + end + puts_time "done".color(:green) end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 01dd4e7b62e..c300275746c 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -7734,12 +7734,21 @@ msgstr "" msgid "DastProfiles|Could not create the site profile. Please try again." msgstr "" +msgid "DastProfiles|Could not delete scanner profile. Please refresh the page, or try again later." +msgstr "" + +msgid "DastProfiles|Could not delete scanner profiles:" +msgstr "" + msgid "DastProfiles|Could not delete site profile. Please refresh the page, or try again later." msgstr "" msgid "DastProfiles|Could not delete site profiles:" msgstr "" +msgid "DastProfiles|Could not fetch scanner profiles. Please refresh the page, or try again later." +msgstr "" + msgid "DastProfiles|Could not fetch site profiles. Please refresh the page, or try again later." msgstr "" @@ -7752,6 +7761,9 @@ msgstr "" msgid "DastProfiles|Do you want to discard your changes?" msgstr "" +msgid "DastProfiles|Edit feature will come soon. Please create a new profile if changes needed" +msgstr "" + msgid "DastProfiles|Edit site profile" msgstr "" @@ -7794,6 +7806,9 @@ msgstr "" msgid "DastProfiles|Scanner Profile" msgstr "" +msgid "DastProfiles|Scanner Profiles" +msgstr "" + msgid "DastProfiles|Site Profile" msgstr "" diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index 31821f734bb..99caf24cbf1 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -40,7 +40,7 @@ FactoryBot.define do forward_deployment_enabled { nil } end - after(:create) do |project, evaluator| + before(:create) do |project, evaluator| # Builds and MRs can't have higher visibility level than repository access level. builds_access_level = [evaluator.builds_access_level, evaluator.repository_access_level].min merge_requests_access_level = [evaluator.merge_requests_access_level, evaluator.repository_access_level].min @@ -56,8 +56,10 @@ FactoryBot.define do pages_access_level: evaluator.pages_access_level } - project.project_feature.update!(hash) + project.build_project_feature(hash) + end + after(:create) do |project, evaluator| # Normally the class Projects::CreateService is used for creating # projects, and this class takes care of making sure the owner and current # user have access to the project. Our specs don't use said service class, diff --git a/spec/frontend/ajax_loading_spinner_spec.js b/spec/frontend/ajax_loading_spinner_spec.js index 8ed2ee49ff8..c5d66eb2143 100644 --- a/spec/frontend/ajax_loading_spinner_spec.js +++ b/spec/frontend/ajax_loading_spinner_spec.js @@ -19,8 +19,9 @@ describe('Ajax Loading Spinner', () => { req.beforeSend(xhr, { dataType: 'text/html' }); expect(icon).not.toHaveClass('fa-trash-o'); - expect(icon).toHaveClass('fa-spinner'); - expect(icon).toHaveClass('fa-spin'); + expect(icon).toHaveClass('gl-spinner'); + expect(icon).toHaveClass('gl-spinner-orange'); + expect(icon).toHaveClass('gl-spinner-sm'); expect(icon.dataset.icon).toEqual('fa-trash-o'); expect(ajaxLoadingSpinner.getAttribute('disabled')).toEqual(''); @@ -44,8 +45,9 @@ describe('Ajax Loading Spinner', () => { const icon = ajaxLoadingSpinner.querySelector('i'); expect(icon).toHaveClass('fa-trash-o'); - expect(icon).not.toHaveClass('fa-spinner'); - expect(icon).not.toHaveClass('fa-spin'); + expect(icon).not.toHaveClass('gl-spinner'); + expect(icon).not.toHaveClass('gl-spinner-orange'); + expect(icon).not.toHaveClass('gl-spinner-sm'); expect(ajaxLoadingSpinner.getAttribute('disabled')).toEqual(null); done(); diff --git a/spec/frontend/boards/components/board_form_spec.js b/spec/frontend/boards/components/board_form_spec.js index 05d9b721d96..65d8070192c 100644 --- a/spec/frontend/boards/components/board_form_spec.js +++ b/spec/frontend/boards/components/board_form_spec.js @@ -11,6 +11,7 @@ describe('board_form.vue', () => { const propsData = { canAdminBoard: false, labelsPath: `${TEST_HOST}/labels/path`, + labelsWebUrl: `${TEST_HOST}/-/labels`, }; const findModal = () => wrapper.find(DeprecatedModal); diff --git a/spec/frontend/boards/components/boards_selector_spec.js b/spec/frontend/boards/components/boards_selector_spec.js index 4cab044bd79..2b7605a3f7c 100644 --- a/spec/frontend/boards/components/boards_selector_spec.js +++ b/spec/frontend/boards/components/boards_selector_spec.js @@ -86,6 +86,7 @@ describe('BoardsSelector', () => { canAdminBoard: true, multipleIssueBoardsAvailable: true, labelsPath: `${TEST_HOST}/labels/path`, + labelsWebUrl: `${TEST_HOST}/labels`, projectId: 42, groupId: 19, scopedIssueBoardFeatureEnabled: true, diff --git a/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap b/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap index a24069ac47f..f1cd4b045ff 100644 --- a/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap +++ b/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap @@ -67,7 +67,7 @@ exports[`Project remove modal initialized matches the snapshot 1`] = ` <p> <code - class="ws-pre-wrap" + class="gl-white-space-pre-wrap" > foo </code> diff --git a/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap b/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap index 0ed48e7c311..692b8f6cf52 100644 --- a/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap +++ b/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap @@ -56,7 +56,7 @@ exports[`Project remove modal intialized matches the snapshot 1`] = ` <p> <code - class="ws-pre-wrap" + class="gl-white-space-pre-wrap" > foo </code> diff --git a/spec/frontend/snippets/components/__snapshots__/snippet_visibility_edit_spec.js.snap b/spec/frontend/snippets/components/__snapshots__/snippet_visibility_edit_spec.js.snap index be75a5bfbdc..8446f0f50c4 100644 --- a/spec/frontend/snippets/components/__snapshots__/snippet_visibility_edit_spec.js.snap +++ b/spec/frontend/snippets/components/__snapshots__/snippet_visibility_edit_spec.js.snap @@ -20,6 +20,7 @@ exports[`Snippet Visibility Edit component rendering matches the snapshot 1`] = </label> <gl-form-group-stub + class="gl-mb-0" id="visibility-level-setting" > <gl-form-radio-group-stub @@ -90,5 +91,12 @@ exports[`Snippet Visibility Edit component rendering matches the snapshot 1`] = </gl-form-radio-stub> </gl-form-radio-group-stub> </gl-form-group-stub> + + <div + class="text-muted" + data-testid="restricted-levels-info" + > + <!----> + </div> </div> `; diff --git a/spec/frontend/snippets/components/edit_spec.js b/spec/frontend/snippets/components/edit_spec.js index 33152591d42..b6abb9f389a 100644 --- a/spec/frontend/snippets/components/edit_spec.js +++ b/spec/frontend/snippets/components/edit_spec.js @@ -102,6 +102,13 @@ describe('Snippet Edit app', () => { markdownDocsPath: 'http://docs.foo.bar', ...props, }, + data() { + return { + snippet: { + visibilityLevel: SNIPPET_VISIBILITY_PRIVATE, + }, + }; + }, }); } diff --git a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js index 4ba3e906fc3..3919e4d7993 100644 --- a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js +++ b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js @@ -1,31 +1,55 @@ import { GlFormRadio, GlIcon, GlFormRadioGroup, GlLink } from '@gitlab/ui'; import { mount, shallowMount } from '@vue/test-utils'; import SnippetVisibilityEdit from '~/snippets/components/snippet_visibility_edit.vue'; +import { defaultSnippetVisibilityLevels } from '~/snippets/utils/blob'; import { SNIPPET_VISIBILITY, SNIPPET_VISIBILITY_PRIVATE, SNIPPET_VISIBILITY_INTERNAL, SNIPPET_VISIBILITY_PUBLIC, + SNIPPET_LEVELS_RESTRICTED, + SNIPPET_LEVELS_DISABLED, } from '~/snippets/constants'; describe('Snippet Visibility Edit component', () => { let wrapper; const defaultHelpLink = '/foo/bar'; const defaultVisibilityLevel = 'private'; - - function createComponent(propsData = {}, deep = false) { + const defaultVisibility = defaultSnippetVisibilityLevels([0, 10, 20]); + + function createComponent({ + propsData = {}, + visibilityLevels = defaultVisibility, + multipleLevelsRestricted = false, + deep = false, + } = {}) { const method = deep ? mount : shallowMount; + const $apollo = { + queries: { + defaultVisibility: { + loading: false, + }, + }, + }; + wrapper = method.call(this, SnippetVisibilityEdit, { + mock: { $apollo }, propsData: { helpLink: defaultHelpLink, isProjectSnippet: false, value: defaultVisibilityLevel, ...propsData, }, + data() { + return { + visibilityLevels, + multipleLevelsRestricted, + }; + }, }); } - const findLabel = () => wrapper.find('label'); + const findLink = () => wrapper.find('label').find(GlLink); const findRadios = () => wrapper.find(GlFormRadioGroup).findAll(GlFormRadio); const findRadiosData = () => findRadios().wrappers.map(x => { @@ -47,60 +71,84 @@ describe('Snippet Visibility Edit component', () => { expect(wrapper.element).toMatchSnapshot(); }); - it('renders visibility options', () => { - createComponent({}, true); + it('renders label help link', () => { + createComponent(); + + expect(findLink().attributes('href')).toBe(defaultHelpLink); + }); + + it('when helpLink is not defined, does not render label help link', () => { + createComponent({ propsData: { helpLink: null } }); - expect(findRadiosData()).toEqual([ - { + expect(findLink().exists()).toBe(false); + }); + + describe('Visibility options', () => { + const findRestrictedInfo = () => wrapper.find('[data-testid="restricted-levels-info"]'); + const RESULTING_OPTIONS = { + 0: { value: SNIPPET_VISIBILITY_PRIVATE, icon: SNIPPET_VISIBILITY.private.icon, text: SNIPPET_VISIBILITY.private.label, description: SNIPPET_VISIBILITY.private.description, }, - { + 10: { value: SNIPPET_VISIBILITY_INTERNAL, icon: SNIPPET_VISIBILITY.internal.icon, text: SNIPPET_VISIBILITY.internal.label, description: SNIPPET_VISIBILITY.internal.description, }, - { + 20: { value: SNIPPET_VISIBILITY_PUBLIC, icon: SNIPPET_VISIBILITY.public.icon, text: SNIPPET_VISIBILITY.public.label, description: SNIPPET_VISIBILITY.public.description, }, - ]); - }); - - it('when project snippet, renders special private description', () => { - createComponent({ isProjectSnippet: true }, true); + }; - expect(findRadiosData()[0]).toEqual({ - value: SNIPPET_VISIBILITY_PRIVATE, - icon: SNIPPET_VISIBILITY.private.icon, - text: SNIPPET_VISIBILITY.private.label, - description: SNIPPET_VISIBILITY.private.description_project, + it.each` + levels | resultOptions + ${undefined} | ${[]} + ${''} | ${[]} + ${[]} | ${[]} + ${[0]} | ${[RESULTING_OPTIONS[0]]} + ${[0, 10]} | ${[RESULTING_OPTIONS[0], RESULTING_OPTIONS[10]]} + ${[0, 10, 20]} | ${[RESULTING_OPTIONS[0], RESULTING_OPTIONS[10], RESULTING_OPTIONS[20]]} + ${[0, 20]} | ${[RESULTING_OPTIONS[0], RESULTING_OPTIONS[20]]} + ${[10, 20]} | ${[RESULTING_OPTIONS[10], RESULTING_OPTIONS[20]]} + `('renders correct visibility options for $levels', ({ levels, resultOptions }) => { + createComponent({ visibilityLevels: defaultSnippetVisibilityLevels(levels), deep: true }); + expect(findRadiosData()).toEqual(resultOptions); }); - }); - it('renders label help link', () => { - createComponent(); - - expect( - findLabel() - .find(GlLink) - .attributes('href'), - ).toBe(defaultHelpLink); - }); + it.each` + levels | levelsRestricted | resultText + ${[]} | ${false} | ${SNIPPET_LEVELS_DISABLED} + ${[]} | ${true} | ${SNIPPET_LEVELS_DISABLED} + ${[0]} | ${true} | ${SNIPPET_LEVELS_RESTRICTED} + ${[0]} | ${false} | ${''} + ${[0, 10, 20]} | ${false} | ${''} + `( + 'renders correct information about restricted visibility levels for $levels', + ({ levels, levelsRestricted, resultText }) => { + createComponent({ + visibilityLevels: defaultSnippetVisibilityLevels(levels), + multipleLevelsRestricted: levelsRestricted, + }); + expect(findRestrictedInfo().text()).toBe(resultText); + }, + ); - it('when helpLink is not defined, does not render label help link', () => { - createComponent({ helpLink: null }); + it('when project snippet, renders special private description', () => { + createComponent({ propsData: { isProjectSnippet: true }, deep: true }); - expect( - findLabel() - .find(GlLink) - .exists(), - ).toBe(false); + expect(findRadiosData()[0]).toEqual({ + value: SNIPPET_VISIBILITY_PRIVATE, + icon: SNIPPET_VISIBILITY.private.icon, + text: SNIPPET_VISIBILITY.private.label, + description: SNIPPET_VISIBILITY.private.description_project, + }); + }); }); }); @@ -108,7 +156,7 @@ describe('Snippet Visibility Edit component', () => { it('pre-selects correct option in the list', () => { const value = SNIPPET_VISIBILITY_INTERNAL; - createComponent({ value }); + createComponent({ propsData: { value } }); expect(wrapper.find(GlFormRadioGroup).attributes('checked')).toBe(value); }); diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js index edec3b138b3..296f8d7c1e2 100644 --- a/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js +++ b/spec/frontend/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js @@ -14,6 +14,7 @@ const createComponent = headerTitle => { }; describe('DropdownCreateLabelComponent', () => { + const colorsCount = Object.keys(mockSuggestedColors).length; let vm; beforeEach(() => { @@ -27,7 +28,7 @@ describe('DropdownCreateLabelComponent', () => { describe('created', () => { it('initializes `suggestedColors` prop on component from `gon.suggested_color_labels` object', () => { - expect(vm.suggestedColors.length).toBe(mockSuggestedColors.length); + expect(vm.suggestedColors.length).toBe(colorsCount); }); }); @@ -78,11 +79,11 @@ describe('DropdownCreateLabelComponent', () => { const colorsListContainerEl = vm.$el.querySelector('.suggest-colors.suggest-colors-dropdown'); expect(colorsListContainerEl).not.toBe(null); - expect(colorsListContainerEl.querySelectorAll('a').length).toBe(mockSuggestedColors.length); + expect(colorsListContainerEl.querySelectorAll('a').length).toBe(colorsCount); const colorItemEl = colorsListContainerEl.querySelectorAll('a')[0]; - expect(colorItemEl.dataset.color).toBe(vm.suggestedColors[0]); + expect(colorItemEl.dataset.color).toBe(vm.suggestedColors[0].colorCode); expect(colorItemEl.getAttribute('style')).toBe('background-color: rgb(0, 51, 204);'); }); diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select/mock_data.js b/spec/frontend/vue_shared/components/sidebar/labels_select/mock_data.js index 6564c012e67..648ba84fe8f 100644 --- a/spec/frontend/vue_shared/components/sidebar/labels_select/mock_data.js +++ b/spec/frontend/vue_shared/components/sidebar/labels_select/mock_data.js @@ -15,29 +15,29 @@ export const mockLabels = [ }, ]; -export const mockSuggestedColors = [ - '#0033CC', - '#428BCA', - '#44AD8E', - '#A8D695', - '#5CB85C', - '#69D100', - '#004E00', - '#34495E', - '#7F8C8D', - '#A295D6', - '#5843AD', - '#8E44AD', - '#FFECDB', - '#AD4363', - '#D10069', - '#CC0033', - '#FF0000', - '#D9534F', - '#D1D100', - '#F0AD4E', - '#AD8D43', -]; +export const mockSuggestedColors = { + '#0033CC': 'UA blue', + '#428BCA': 'Moderate blue', + '#44AD8E': 'Lime green', + '#A8D695': 'Feijoa', + '#5CB85C': 'Slightly desaturated green', + '#69D100': 'Bright green', + '#004E00': 'Very dark lime green', + '#34495E': 'Very dark desaturated blue', + '#7F8C8D': 'Dark grayish cyan', + '#A295D6': 'Slightly desaturated blue', + '#5843AD': 'Dark moderate blue', + '#8E44AD': 'Dark moderate violet', + '#FFECDB': 'Very pale orange', + '#AD4363': 'Dark moderate pink', + '#D10069': 'Strong pink', + '#CC0033': 'Strong red', + '#FF0000': 'Pure red', + '#D9534F': 'Soft red', + '#D1D100': 'Strong yellow', + '#F0AD4E': 'Soft orange', + '#AD8D43': 'Dark moderate orange', +}; export const mockConfig = { showCreate: true, diff --git a/spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb b/spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb index c19b7b63eec..3c40859da21 100644 --- a/spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb +++ b/spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb @@ -86,36 +86,4 @@ RSpec.describe API::Helpers::PackagesManagerClientsHelpers do it_behaves_like 'invalid auth header' end - - describe '#uploaded_package_file' do - let_it_be(:params) { {} } - - subject { helper.uploaded_package_file } - - before do - allow(helper).to receive(:params).and_return(params) - end - - context 'with valid uploaded package file' do - let_it_be(:uploaded_file) { Object.new } - - before do - allow(UploadedFile).to receive(:from_params).and_return(uploaded_file) - end - - it { is_expected.to be uploaded_file } - end - - context 'with invalid uploaded package file' do - before do - allow(UploadedFile).to receive(:from_params).and_return(nil) - end - - it 'fails with bad_request!' do - expect(helper).to receive(:bad_request!) - - expect(subject).to be nil - end - end - end end diff --git a/spec/lib/backup/database_spec.rb b/spec/lib/backup/database_spec.rb new file mode 100644 index 00000000000..95883062fa0 --- /dev/null +++ b/spec/lib/backup/database_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Backup::Database do + let(:progress) { StringIO.new } + let(:output) { progress.string } + + describe '#restore' do + let(:cmd) { %W[#{Gem.ruby} -e $stdout.puts(1)] } + let(:data) { Rails.root.join("spec/fixtures/pages_empty.tar.gz").to_s } + + subject { described_class.new(progress, filename: data) } + + before do + allow(subject).to receive(:pg_restore_cmd).and_return(cmd) + end + + context 'with an empty .gz file' do + let(:data) { Rails.root.join("spec/fixtures/pages_empty.tar.gz").to_s } + + it 'returns successfully' do + expect(subject.restore).to eq([]) + + expect(output).to include("Restoring PostgreSQL database") + expect(output).to include("[DONE]") + expect(output).not_to include("ERRORS") + end + end + + context 'with a corrupted .gz file' do + let(:data) { Rails.root.join("spec/fixtures/big-image.png").to_s } + + it 'raises a backup error' do + expect { subject.restore }.to raise_error(Backup::Error) + end + end + + context 'when the restore command prints errors' do + let(:visible_error) { "This is a test error\n" } + let(:noise) { "Table projects does not exist\n" } + let(:cmd) { %W[#{Gem.ruby} -e $stderr.write("#{noise}#{visible_error}")] } + + it 'filters out noise from errors' do + expect(subject.restore).to eq([visible_error]) + expect(output).to include("ERRORS") + expect(output).not_to include(noise) + expect(output).to include(visible_error) + end + end + end +end diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb index e5018e46634..0e66bf8691e 100644 --- a/spec/lib/gitlab/danger/helper_spec.rb +++ b/spec/lib/gitlab/danger/helper_spec.rb @@ -371,22 +371,6 @@ RSpec.describe Gitlab::Danger::Helper do end end - describe '#missing_database_labels' do - subject { helper.missing_database_labels(current_mr_labels) } - - context 'when current merge request has ~database::review pending' do - let(:current_mr_labels) { ['database::review pending', 'feature'] } - - it { is_expected.to match_array(['database']) } - end - - context 'when current merge request does not have ~database::review pending' do - let(:current_mr_labels) { ['feature'] } - - it { is_expected.to match_array(['database', 'database::review pending']) } - end - end - describe '#sanitize_mr_title' do where(:mr_title, :expected_mr_title) do 'My MR title' | 'My MR title' diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 30d323b32d0..297afd4d3ad 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -2945,6 +2945,22 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do describe '#has_coverage_reports?' do subject { pipeline.has_coverage_reports? } + context 'when pipeline has a code coverage artifact' do + let(:pipeline) { create(:ci_pipeline, :with_coverage_report_artifact, :running, project: project) } + + it { expect(subject).to be_truthy } + end + + context 'when pipeline does not have a code coverage artifact' do + let(:pipeline) { create(:ci_pipeline, :success, project: project) } + + it { expect(subject).to be_falsey } + end + end + + describe '#can_generate_coverage_reports?' do + subject { pipeline.can_generate_coverage_reports? } + context 'when pipeline has builds with coverage reports' do before do create(:ci_build, :coverage_reports, pipeline: pipeline, project: project) diff --git a/spec/models/cycle_analytics/issue_spec.rb b/spec/models/cycle_analytics/issue_spec.rb index 9372ef5f0e6..5857365ceab 100644 --- a/spec/models/cycle_analytics/issue_spec.rb +++ b/spec/models/cycle_analytics/issue_spec.rb @@ -15,17 +15,17 @@ RSpec.describe 'CycleAnalytics#issue' do generate_cycle_analytics_spec( phase: :issue, data_fn: -> (context) { { issue: context.build(:issue, project: context.project) } }, - start_time_conditions: [["issue created", -> (context, data) { data[:issue].save }]], + start_time_conditions: [["issue created", -> (context, data) { data[:issue].save! }]], end_time_conditions: [["issue associated with a milestone", -> (context, data) do if data[:issue].persisted? - data[:issue].update(milestone: context.create(:milestone, project: context.project)) + data[:issue].update!(milestone: context.create(:milestone, project: context.project)) end end], ["list label added to issue", -> (context, data) do if data[:issue].persisted? - data[:issue].update(label_ids: [context.create(:list).label_id]) + data[:issue].update!(label_ids: [context.create(:list).label_id]) end end]], post_fn: -> (context, data) do @@ -35,7 +35,7 @@ RSpec.describe 'CycleAnalytics#issue' do it "returns nil" do regular_label = create(:label) issue = create(:issue, project: project) - issue.update(label_ids: [regular_label.id]) + issue.update!(label_ids: [regular_label.id]) create_merge_request_closing_issue(user, project, issue) merge_merge_requests_closing_issue(user, project, issue) diff --git a/spec/models/cycle_analytics/plan_spec.rb b/spec/models/cycle_analytics/plan_spec.rb index 364694a11e1..2b9be64da2b 100644 --- a/spec/models/cycle_analytics/plan_spec.rb +++ b/spec/models/cycle_analytics/plan_spec.rb @@ -22,11 +22,11 @@ RSpec.describe 'CycleAnalytics#plan' do end, start_time_conditions: [["issue associated with a milestone", -> (context, data) do - data[:issue].update(milestone: context.create(:milestone, project: context.project)) + data[:issue].update!(milestone: context.create(:milestone, project: context.project)) end], ["list label added to issue", -> (context, data) do - data[:issue].update(label_ids: [context.create(:list).label_id]) + data[:issue].update!(label_ids: [context.create(:list).label_id]) end]], end_time_conditions: [["issue mentioned in a commit", -> (context, data) do @@ -40,7 +40,7 @@ RSpec.describe 'CycleAnalytics#plan' do branch_name = generate(:branch) label = create(:label) issue = create(:issue, project: project) - issue.update(label_ids: [label.id]) + issue.update!(label_ids: [label.id]) create_commit_referencing_issue(issue, branch_name: branch_name) create_merge_request_closing_issue(user, project, issue, source_branch: branch_name) diff --git a/spec/models/cycle_analytics/production_spec.rb b/spec/models/cycle_analytics/production_spec.rb index cf4d57d6b73..358934460e7 100644 --- a/spec/models/cycle_analytics/production_spec.rb +++ b/spec/models/cycle_analytics/production_spec.rb @@ -15,7 +15,7 @@ RSpec.describe 'CycleAnalytics#production' do generate_cycle_analytics_spec( phase: :production, data_fn: -> (context) { { issue: context.build(:issue, project: context.project) } }, - start_time_conditions: [["issue is created", -> (context, data) { data[:issue].save }]], + start_time_conditions: [["issue is created", -> (context, data) { data[:issue].save! }]], before_end_fn: lambda do |context, data| context.create_merge_request_closing_issue(context.user, context.project, data[:issue]) context.merge_merge_requests_closing_issue(context.user, context.project, data[:issue]) diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index bb0b3748b76..433ede97b82 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -854,8 +854,8 @@ RSpec.describe Environment, :use_clean_rails_memory_store_caching do end it 'overrides reactive_cache_limit_enabled? with a FF' do - environment_with_enabled_ff = FactoryBot.build(:environment) - environment_with_disabled_ff = FactoryBot.build(:environment) + environment_with_enabled_ff = build(:environment, project: create(:project)) + environment_with_disabled_ff = build(:environment, project: create(:project)) stub_feature_flags(reactive_caching_limit_environment: environment_with_enabled_ff.project) diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index 97a48096d66..3b453a11090 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -67,7 +67,7 @@ RSpec.describe Note do end context 'when noteable is a personal snippet' do - subject { build(:note_on_personal_snippet) } + subject { build(:note_on_personal_snippet, noteable: create(:personal_snippet)) } it 'is valid without project' do is_expected.to be_valid @@ -109,7 +109,8 @@ RSpec.describe Note do describe 'callbacks' do describe '#notify_after_create' do it 'calls #after_note_created on the noteable' do - note = build(:note) + noteable = create(:issue) + note = build(:note, project: noteable.project, noteable: noteable) expect(note).to receive(:notify_after_create).and_call_original expect(note.noteable).to receive(:after_note_created).with(note) @@ -840,7 +841,8 @@ RSpec.describe Note do let(:html) { '<p>some html</p>'} context 'note for a project snippet' do - let(:note) { build(:note_on_project_snippet) } + let(:snippet) { create(:project_snippet) } + let(:note) { build(:note_on_project_snippet, project: snippet.project, noteable: snippet) } before do expect(Banzai::Renderer).to receive(:cacheless_render_field) @@ -855,7 +857,8 @@ RSpec.describe Note do end context 'note for a personal snippet' do - let(:note) { build(:note_on_personal_snippet) } + let(:snippet) { create(:personal_snippet) } + let(:note) { build(:note_on_personal_snippet, noteable: snippet) } before do expect(Banzai::Renderer).to receive(:cacheless_render_field) @@ -889,7 +892,7 @@ RSpec.describe Note do context 'for a note on a commit' do it 'returns true' do - note = build(:note_on_commit) + note = build(:note_on_commit, project: create(:project, :repository)) expect(note.can_be_discussion_note?).to be_truthy end @@ -913,7 +916,7 @@ RSpec.describe Note do context 'for a diff note on commit' do it 'returns false' do - note = build(:diff_note_on_commit) + note = build(:diff_note_on_commit, project: create(:project, :repository)) expect(note.can_be_discussion_note?).to be_falsey end @@ -1143,7 +1146,8 @@ RSpec.describe Note do end describe 'expiring ETag cache' do - let(:note) { build(:note_on_issue) } + let_it_be(:issue) { create(:issue) } + let(:note) { build(:note, project: issue.project, noteable: issue) } def expect_expiration(noteable) expect_any_instance_of(Gitlab::EtagCaching::Store) diff --git a/spec/models/remote_mirror_spec.rb b/spec/models/remote_mirror_spec.rb index c7dbf3c0e92..6e18002a190 100644 --- a/spec/models/remote_mirror_spec.rb +++ b/spec/models/remote_mirror_spec.rb @@ -442,16 +442,18 @@ RSpec.describe RemoteMirror, :mailer do end describe '#disabled?' do + let_it_be(:project) { create(:project, :repository) } + subject { remote_mirror.disabled? } context 'when disabled' do - let(:remote_mirror) { build(:remote_mirror, enabled: false) } + let(:remote_mirror) { build(:remote_mirror, project: project, enabled: false) } it { is_expected.to be_truthy } end context 'when enabled' do - let(:remote_mirror) { build(:remote_mirror, enabled: true) } + let(:remote_mirror) { build(:remote_mirror, project: project, enabled: true) } it { is_expected.to be_falsy } end diff --git a/spec/presenters/packages/nuget/search_results_presenter_spec.rb b/spec/presenters/packages/nuget/search_results_presenter_spec.rb index 29ec8579dc1..fed20c8e39d 100644 --- a/spec/presenters/packages/nuget/search_results_presenter_spec.rb +++ b/spec/presenters/packages/nuget/search_results_presenter_spec.rb @@ -37,7 +37,7 @@ RSpec.describe Packages::Nuget::SearchResultsPresenter do expect(package_json[:summary]).to be_blank expect(package_json[:total_downloads]).to eq 0 expect(package_json[:verified]).to be - expect(package_json[:version]).to eq VersionSorter.sort(versions).last # rubocop: disable Style/UnneededSort + expect(package_json[:version]).to eq VersionSorter.sort(versions).last # rubocop: disable Style/RedundantSort versions.zip(package_json[:versions]).each do |version, version_json| expect(version_json[:json_url]).to end_with("#{version}.json") expect(version_json[:downloads]).to eq 0 diff --git a/spec/requests/api/access_requests_spec.rb b/spec/requests/api/access_requests_spec.rb index 223d740a004..2af6c438fc9 100644 --- a/spec/requests/api/access_requests_spec.rb +++ b/spec/requests/api/access_requests_spec.rb @@ -90,7 +90,7 @@ RSpec.describe API::AccessRequests do context 'when authenticated as a stranger' do context "when access request is disabled for the #{source_type}" do before do - source.update(request_access_enabled: false) + source.update!(request_access_enabled: false) end it 'returns 403' do diff --git a/spec/requests/api/boards_spec.rb b/spec/requests/api/boards_spec.rb index f0d3afd0af7..a63198c5407 100644 --- a/spec/requests/api/boards_spec.rb +++ b/spec/requests/api/boards_spec.rb @@ -41,7 +41,7 @@ RSpec.describe API::Boards do it 'creates a new issue board list for group labels' do group = create(:group) group_label = create(:group_label, group: group) - board_parent.update(group: group) + board_parent.update!(group: group) post api(url, user), params: { label_id: group_label.id } @@ -54,7 +54,7 @@ RSpec.describe API::Boards do group = create(:group) sub_group = create(:group, parent: group) group_label = create(:group_label, group: group) - board_parent.update(group: sub_group) + board_parent.update!(group: sub_group) group.add_developer(user) sub_group.add_developer(user) diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb index 4b9b82b3a5b..5298f93886d 100644 --- a/spec/requests/api/branches_spec.rb +++ b/spec/requests/api/branches_spec.rb @@ -181,7 +181,7 @@ RSpec.describe API::Branches do context 'when unauthenticated', 'and project is public' do before do - project.update(visibility_level: Gitlab::VisibilityLevel::PUBLIC) + project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC) end it_behaves_like 'repository branches' @@ -289,7 +289,7 @@ RSpec.describe API::Branches do context 'when unauthenticated', 'and project is public' do before do - project.update(visibility_level: Gitlab::VisibilityLevel::PUBLIC) + project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC) end it_behaves_like 'repository branch' diff --git a/spec/requests/api/pages/internal_access_spec.rb b/spec/requests/api/pages/internal_access_spec.rb index c894a2d3ca4..4ac47f17b7e 100644 --- a/spec/requests/api/pages/internal_access_spec.rb +++ b/spec/requests/api/pages/internal_access_spec.rb @@ -72,7 +72,7 @@ RSpec.describe "Internal Project Pages Access" do with_them do before do - project.project_feature.update(pages_access_level: pages_access_level) + project.project_feature.update!(pages_access_level: pages_access_level) end it "correct return value" do if !with_user.nil? diff --git a/spec/requests/api/pages/private_access_spec.rb b/spec/requests/api/pages/private_access_spec.rb index ea5db691b14..c1c0e406508 100644 --- a/spec/requests/api/pages/private_access_spec.rb +++ b/spec/requests/api/pages/private_access_spec.rb @@ -72,7 +72,7 @@ RSpec.describe "Private Project Pages Access" do with_them do before do - project.project_feature.update(pages_access_level: pages_access_level) + project.project_feature.update!(pages_access_level: pages_access_level) end it "correct return value" do if !with_user.nil? diff --git a/spec/requests/api/pages/public_access_spec.rb b/spec/requests/api/pages/public_access_spec.rb index ae73cee91d5..c45b3a4c55e 100644 --- a/spec/requests/api/pages/public_access_spec.rb +++ b/spec/requests/api/pages/public_access_spec.rb @@ -72,7 +72,7 @@ RSpec.describe "Public Project Pages Access" do with_them do before do - project.project_feature.update(pages_access_level: pages_access_level) + project.project_feature.update!(pages_access_level: pages_access_level) end it "correct return value" do if !with_user.nil? diff --git a/spec/requests/api/pypi_packages_spec.rb b/spec/requests/api/pypi_packages_spec.rb index 2c33db45e93..0ac1d96bb3e 100644 --- a/spec/requests/api/pypi_packages_spec.rb +++ b/spec/requests/api/pypi_packages_spec.rb @@ -117,7 +117,8 @@ RSpec.describe API::PypiPackages do let_it_be(:file_name) { 'package.whl' } let(:url) { "/projects/#{project.id}/packages/pypi" } let(:headers) { {} } - let(:base_params) { { requires_python: '>=3.7', version: '1.0.0', name: 'sample-project', sha256_digest: '123' } } + let(:requires_python) { '>=3.7' } + let(:base_params) { { requires_python: requires_python, version: '1.0.0', name: 'sample-project', sha256_digest: '123' } } let(:params) { base_params.merge(content: temp_file(file_name)) } let(:send_rewritten_field) { true } @@ -169,6 +170,19 @@ RSpec.describe API::PypiPackages do end end + context 'with required_python too big' do + let(:requires_python) { 'x' * 51 } + let(:token) { personal_access_token.token } + let(:user_headers) { basic_auth_header(user.username, token) } + let(:headers) { user_headers.merge(workhorse_header) } + + before do + project.update!(visibility_level: Gitlab::VisibilityLevel::PRIVATE) + end + + it_behaves_like 'process PyPi api request', :developer, :bad_request, true + end + context 'with an invalid package' do let(:token) { personal_access_token.token } let(:user_headers) { basic_auth_header(user.username, token) } diff --git a/spec/requests/projects/metrics_dashboard_spec.rb b/spec/requests/projects/metrics_dashboard_spec.rb index 0b6e2ef5151..2f78d104529 100644 --- a/spec/requests/projects/metrics_dashboard_spec.rb +++ b/spec/requests/projects/metrics_dashboard_spec.rb @@ -38,16 +38,17 @@ RSpec.describe 'Projects::MetricsDashboardController' do context 'with anonymous user and public dashboard visibility' do let(:anonymous_user) { create(:user) } - let(:project) do - create(:project, :public, metrics_dashboard_access_level: 'enabled') - end + let(:project) { create(:project, :public) } before do + project.update!(metrics_dashboard_access_level: 'enabled') + login_as(anonymous_user) end it 'returns 200' do send_request + expect(response).to have_gitlab_http_status(:ok) end end diff --git a/spec/serializers/environment_status_entity_spec.rb b/spec/serializers/environment_status_entity_spec.rb index a940c4b465e..77ef06f90c2 100644 --- a/spec/serializers/environment_status_entity_spec.rb +++ b/spec/serializers/environment_status_entity_spec.rb @@ -17,7 +17,7 @@ RSpec.describe EnvironmentStatusEntity do subject { entity.as_json } before do - deployment.update(sha: merge_request.diff_head_sha) + deployment.update!(sha: merge_request.diff_head_sha) allow(request).to receive(:current_user).and_return(user) end diff --git a/spec/serializers/issue_entity_spec.rb b/spec/serializers/issue_entity_spec.rb index 5c5ac184778..82ea26fae40 100644 --- a/spec/serializers/issue_entity_spec.rb +++ b/spec/serializers/issue_entity_spec.rb @@ -112,7 +112,7 @@ RSpec.describe IssueEntity do context 'when project is archived' do before do - project.update(archived: true) + project.update!(archived: true) end it 'returns archived true' do diff --git a/spec/serializers/job_entity_spec.rb b/spec/serializers/job_entity_spec.rb index 02262be9511..adfda36a9dc 100644 --- a/spec/serializers/job_entity_spec.rb +++ b/spec/serializers/job_entity_spec.rb @@ -45,7 +45,7 @@ RSpec.describe JobEntity do context 'when job is retryable' do before do - job.update(status: :failed) + job.update!(status: :failed) end it 'contains cancel path' do @@ -55,7 +55,7 @@ RSpec.describe JobEntity do context 'when job is cancelable' do before do - job.update(status: :running) + job.update!(status: :running) end it 'contains cancel path' do diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb index 7000d4bdb9f..161940dd01a 100644 --- a/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -265,7 +265,7 @@ RSpec.describe MergeRequestPollWidgetEntity do context 'when is not up to date' do it 'returns nil' do - pipeline.update(sha: "not up to date") + pipeline.update!(sha: "not up to date") expect(subject[:pipeline]).to eq(nil) end diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb index 47ec014d4c9..1432c4499ae 100644 --- a/spec/serializers/merge_request_widget_entity_spec.rb +++ b/spec/serializers/merge_request_widget_entity_spec.rb @@ -210,7 +210,7 @@ RSpec.describe MergeRequestWidgetEntity do context 'when build feature is disabled' do before do - project.project_feature.update(builds_access_level: ProjectFeature::DISABLED) + project.project_feature.update!(builds_access_level: ProjectFeature::DISABLED) end it 'has no path' do @@ -346,7 +346,7 @@ RSpec.describe MergeRequestWidgetEntity do it 'returns a blank rebase_path' do allow(merge_request).to receive(:should_be_rebased?).and_return(true) - forked_project.destroy + forked_project.destroy! merge_request.reload entity = described_class.new(merge_request, request: request).as_json diff --git a/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb b/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb index bfbbf03370d..1c96be42a2f 100644 --- a/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb +++ b/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb @@ -146,8 +146,8 @@ RSpec.describe Ci::DestroyExpiredJobArtifactsService, :clean_gitlab_redis_shared end context 'when artifacts are not expired' do - let!(:pipeline_artifact_1) { create(:ci_pipeline_artifact, expire_at: 2.days) } - let!(:pipeline_artifact_2) { create(:ci_pipeline_artifact, expire_at: 2.days) } + let!(:pipeline_artifact_1) { create(:ci_pipeline_artifact, expire_at: 2.days.from_now) } + let!(:pipeline_artifact_2) { create(:ci_pipeline_artifact, expire_at: 2.days.from_now) } before do [pipeline_artifact_1, pipeline_artifact_2].each { |pipeline_artifact| pipeline_artifact.pipeline.unlocked! } diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb index 7ca7d3be99c..8e1f092978b 100644 --- a/spec/services/issues/close_service_spec.rb +++ b/spec/services/issues/close_service_spec.rb @@ -288,7 +288,7 @@ RSpec.describe Issues::CloseService do end it 'deletes milestone issue counters cache' do - issue.update(milestone: create(:milestone, project: project)) + issue.update!(milestone: create(:milestone, project: project)) expect_next_instance_of(Milestones::ClosedIssuesCountService, issue.milestone) do |service| expect(service).to receive(:delete_cache).and_call_original diff --git a/spec/services/issues/create_service_spec.rb b/spec/services/issues/create_service_spec.rb index 4edbbf4d4d8..794da96ed11 100644 --- a/spec/services/issues/create_service_spec.rb +++ b/spec/services/issues/create_service_spec.rb @@ -119,7 +119,7 @@ RSpec.describe Issues::CreateService do end before do - project.update(group: group) + project.update!(group: group) end it 'assigns group labels' do @@ -295,7 +295,7 @@ RSpec.describe Issues::CreateService do context "when issuable feature is private" do before do - project.project_feature.update(issues_access_level: ProjectFeature::PRIVATE, + project.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE, merge_requests_access_level: ProjectFeature::PRIVATE) end @@ -303,7 +303,7 @@ RSpec.describe Issues::CreateService do levels.each do |level| it "removes not authorized assignee when project is #{Gitlab::VisibilityLevel.level_name(level)}" do - project.update(visibility_level: level) + project.update!(visibility_level: level) opts = { title: 'Title', description: 'Description', assignee_ids: [assignee.id] } issue = described_class.new(project, user, opts).execute diff --git a/spec/services/issues/export_csv_service_spec.rb b/spec/services/issues/export_csv_service_spec.rb index 76381fe525b..8072b7a478e 100644 --- a/spec/services/issues/export_csv_service_spec.rb +++ b/spec/services/issues/export_csv_service_spec.rb @@ -38,8 +38,8 @@ RSpec.describe Issues::ExportCsvService do before do # Creating a timelog touches the updated_at timestamp of issue, # so create these first. - issue.timelogs.create(time_spent: 360, user: user) - issue.timelogs.create(time_spent: 200, user: user) + issue.timelogs.create!(time_spent: 360, user: user) + issue.timelogs.create!(time_spent: 200, user: user) issue.update!(milestone: milestone, assignees: [user], description: 'Issue with details', diff --git a/spec/services/issues/reopen_service_spec.rb b/spec/services/issues/reopen_service_spec.rb index f7416203259..47baaff2fce 100644 --- a/spec/services/issues/reopen_service_spec.rb +++ b/spec/services/issues/reopen_service_spec.rb @@ -44,7 +44,7 @@ RSpec.describe Issues::ReopenService do end it 'deletes milestone issue counters cache' do - issue.update(milestone: create(:milestone, project: project)) + issue.update!(milestone: create(:milestone, project: project)) expect_next_instance_of(Milestones::ClosedIssuesCountService, issue.milestone) do |service| expect(service).to receive(:delete_cache).and_call_original diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb index 81fac33a3c7..b5811077acf 100644 --- a/spec/services/issues/update_service_spec.rb +++ b/spec/services/issues/update_service_spec.rb @@ -354,7 +354,7 @@ RSpec.describe Issues::UpdateService, :mailer do end it 'does not update assignee_id with unauthorized users' do - project.update(visibility_level: Gitlab::VisibilityLevel::PUBLIC) + project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC) update_issue(confidential: true) non_member = create(:user) original_assignees = issue.assignees @@ -457,7 +457,7 @@ RSpec.describe Issues::UpdateService, :mailer do it 'sends notifications for subscribers of changed milestone', :sidekiq_might_not_need_inline do issue.milestone = create(:milestone, project: project) - issue.save + issue.save! perform_enqueued_jobs do update_issue(milestone_id: "") @@ -470,7 +470,7 @@ RSpec.describe Issues::UpdateService, :mailer do it 'clears milestone issue counters cache' do issue.milestone = create(:milestone, project: project) - issue.save + issue.save! expect_next_instance_of(Milestones::IssuesCountService, issue.milestone) do |service| expect(service).to receive(:delete_cache).and_call_original @@ -718,7 +718,7 @@ RSpec.describe Issues::UpdateService, :mailer do let(:params) { { label_ids: [label.id], add_label_ids: [label3.id] } } before do - issue.update(labels: [label2]) + issue.update!(labels: [label2]) end it 'replaces the labels with the ones in label_ids and adds those in add_label_ids' do @@ -730,7 +730,7 @@ RSpec.describe Issues::UpdateService, :mailer do let(:params) { { label_ids: [label.id, label2.id, label3.id], remove_label_ids: [label.id] } } before do - issue.update(labels: [label, label3]) + issue.update!(labels: [label, label3]) end it 'replaces the labels with the ones in label_ids and removes those in remove_label_ids' do @@ -742,7 +742,7 @@ RSpec.describe Issues::UpdateService, :mailer do let(:params) { { add_label_ids: [label3.id], remove_label_ids: [label.id] } } before do - issue.update(labels: [label]) + issue.update!(labels: [label]) end it 'adds the passed labels' do @@ -759,7 +759,7 @@ RSpec.describe Issues::UpdateService, :mailer do context 'for a label assigned to an issue' do it 'removes the label' do - issue.update(labels: [label]) + issue.update!(labels: [label]) expect(result.label_ids).to be_empty end @@ -808,7 +808,7 @@ RSpec.describe Issues::UpdateService, :mailer do levels.each do |level| it "does not update with unauthorized assignee when project is #{Gitlab::VisibilityLevel.level_name(level)}" do assignee = create(:user) - project.update(visibility_level: level) + project.update!(visibility_level: level) feature_visibility_attr = :"#{issue.model_name.plural}_access_level" project.project_feature.update_attribute(feature_visibility_attr, ProjectFeature::PRIVATE) diff --git a/spec/services/packages/pypi/create_package_service_spec.rb b/spec/services/packages/pypi/create_package_service_spec.rb index bfecb32f9ef..69905478879 100644 --- a/spec/services/packages/pypi/create_package_service_spec.rb +++ b/spec/services/packages/pypi/create_package_service_spec.rb @@ -6,12 +6,14 @@ RSpec.describe Packages::Pypi::CreatePackageService do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } - let_it_be(:params) do + + let(:requires_python) { '>=2.7' } + let(:params) do { name: 'foo', version: '1.0', content: temp_file('foo.tgz'), - requires_python: '>=2.7', + requires_python: requires_python, sha256_digest: '123', md5_digest: '567' } @@ -37,6 +39,14 @@ RSpec.describe Packages::Pypi::CreatePackageService do end end + context 'with an invalid metadata' do + let(:requires_python) { 'x' * 51 } + + it 'raises an error' do + expect { subject }.to raise_error(ActiveRecord::RecordInvalid) + end + end + context 'with an existing package' do before do described_class.new(project, user, params).execute diff --git a/spec/services/projects/overwrite_project_service_spec.rb b/spec/services/projects/overwrite_project_service_spec.rb index e4495da9807..a03746d0271 100644 --- a/spec/services/projects/overwrite_project_service_spec.rb +++ b/spec/services/projects/overwrite_project_service_spec.rb @@ -16,6 +16,8 @@ RSpec.describe Projects::OverwriteProjectService do subject { described_class.new(project_to, user) } before do + project_to.project_feature.reload + allow(project_to).to receive(:import_data).and_return(double(data: { 'original_path' => project_from.path })) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 06ec97d65b2..9e3e4cc6d64 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -115,6 +115,7 @@ RSpec.configure do |config| config.include StubExperiments config.include StubGitlabCalls config.include StubGitlabData + config.include SnowplowHelpers config.include NextFoundInstanceOf config.include NextInstanceOf config.include TestEnv diff --git a/spec/support/helpers/features/releases_helpers.rb b/spec/support/helpers/features/releases_helpers.rb index b9706bad821..0d46918b05c 100644 --- a/spec/support/helpers/features/releases_helpers.rb +++ b/spec/support/helpers/features/releases_helpers.rb @@ -18,7 +18,9 @@ module Spec module Helpers module Features module ReleasesHelpers - # Returns the element that currently has keyboard focus + # Returns the element that currently has keyboard focus. + # Reminder that this returns a Selenium::WebDriver::Element + # _not_ a Capybara::Node::Element def focused_element page.driver.browser.switch_to.active_element end @@ -39,7 +41,8 @@ module Spec # Wait for the dropdown to be rendered page.find('.ref-selector .dropdown-menu') - focused_element.send_keys(branch_name) + # Pressing Enter in the search box shouldn't submit the form + focused_element.send_keys(branch_name, :enter) # Wait for the search to return page.find('.ref-selector .dropdown-item', text: branch_name, match: :first) @@ -63,12 +66,16 @@ module Spec focused_element.send_keys(:enter) # Wait for the dropdown to be rendered - page.find('.gl-new-dropdown .dropdown-menu') + page.find('.project-milestone-combobox .dropdown-menu') - focused_element.send_keys(:tab, milestone_title) + # Clear any existing input + focused_element.attribute('value').length.times { focused_element.send_keys(:backspace) } + + # Pressing Enter in the search box shouldn't submit the form + focused_element.send_keys(milestone_title, :enter) # Wait for the search to return - page.find('.gl-new-dropdown .dropdown-item', text: milestone_title, match: :first) + page.find('.project-milestone-combobox .dropdown-item', text: milestone_title, match: :first) focused_element.send_keys(:arrow_down, :arrow_down, :enter) diff --git a/spec/support/helpers/snowplow_helpers.rb b/spec/support/helpers/snowplow_helpers.rb new file mode 100644 index 00000000000..6e80c99cf7a --- /dev/null +++ b/spec/support/helpers/snowplow_helpers.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +module SnowplowHelpers + # Asserts call for one snowplow event from `Gitlab::Tracking#event`. + # + # @param [Hash] + # + # Examples: + # + # describe '#show', :snowplow do + # it 'tracks snowplow events' do + # get :show + # + # expect_snowplow_event(category: 'Experiment', action: 'start') + # end + # end + # + # describe '#create', :snowplow do + # it 'tracks snowplow events' do + # post :create + # + # expect_snowplow_event( + # category: 'Experiment', + # action: 'created', + # ) + # expect_snowplow_event( + # category: 'Experiment', + # action: 'accepted', + # property: 'property', + # label: 'label' + # ) + # end + # end + def expect_snowplow_event(category:, action:, **kwargs) + expect(Gitlab::Tracking).to have_received(:event) + .with(category, action, **kwargs) + end + + # Asserts that no call to `Gitlab::Tracking#event` was made. + # + # Example: + # + # describe '#show', :snowplow do + # it 'does not track any snowplow events' do + # get :show + # + # expect_no_snowplow_event + # end + # end + def expect_no_snowplow_event + expect(Gitlab::Tracking).not_to have_received(:event) + end +end diff --git a/spec/support/snowplow.rb b/spec/support/snowplow.rb new file mode 100644 index 00000000000..58812b8f4e6 --- /dev/null +++ b/spec/support/snowplow.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +RSpec.configure do |config| + config.before(:each, :snowplow) do + # Using a high buffer size to not cause early flushes + buffer_size = 100 + # WebMock is set up to allow requests to `localhost` + host = 'localhost' + + allow(Gitlab::Tracking) + .to receive(:emitter) + .and_return(SnowplowTracker::Emitter.new(host, buffer_size: buffer_size)) + + stub_application_setting(snowplow_enabled: true) + + allow(Gitlab::Tracking).to receive(:event).and_call_original + end + + config.after(:each, :snowplow) do + Gitlab::Tracking.send(:snowplow).flush + end +end |