diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 707d98a0ad9..4ef74436cc8 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -1220,127 +1220,126 @@ lib/gitlab/checks/** @proglottis @toon /lib/tasks/gitlab/password.rake @gitlab-org/manage/authentication-and-authorization/approvers /lib/tasks/tokens.rake @gitlab-org/manage/authentication-and-authorization/approvers -^[Verify] -/app/**/ci/ @gitlab-org/maintainers/cicd-verify -/app/controllers/admin/jobs_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/admin/runner_projects_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/admin/runners_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/artifacts_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/build_artifacts_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/builds_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/jobs_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/runner_setup_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/pipeline_schedules_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/pipelines_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/pipelines_settings_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/runner_projects_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/runners_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/triggers_controller.rb @gitlab-org/maintainers/cicd-verify -/app/controllers/projects/variables_controller.rb @gitlab-org/maintainers/cicd-verify -/app/models/commit_status.rb @gitlab-org/maintainers/cicd-verify -/app/models/external_pull_request.rb @gitlab-org/maintainers/cicd-verify -/app/models/generic_commit_status.rb @gitlab-org/maintainers/cicd-verify -/app/models/namespace_ci_cd_setting.rb @gitlab-org/maintainers/cicd-verify -/app/models/project_ci_cd_setting.rb @gitlab-org/maintainers/cicd-verify -/app/presenters/commit_status_presenter.rb @gitlab-org/maintainers/cicd-verify -/app/presenters/generic_commit_status_presenter.rb @gitlab-org/maintainers/cicd-verify -/app/validators/json_schemas/build_metadata_id_tokens.json @gitlab-org/maintainers/cicd-verify -/app/views/projects/artifacts/ @gitlab-org/maintainers/cicd-verify -/app/views/projects/generic_commit_statuses/ @gitlab-org/maintainers/cicd-verify -/app/views/projects/jobs/ @gitlab-org/maintainers/cicd-verify -/app/views/projects/pipeline_schedules/ @gitlab-org/maintainers/cicd-verify -/app/views/projects/pipelines/ @gitlab-org/maintainers/cicd-verify -/app/views/projects/triggers/ @gitlab-org/maintainers/cicd-verify -/app/workers/build_hooks_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/build_queue_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/build_success_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/ci_platform_metrics_update_cron_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/create_pipeline_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/expire_build_artifacts_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/pipeline_hooks_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/pipeline_metrics_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/pipeline_notification_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/pipeline_process_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/pipeline_schedule_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/run_pipeline_schedule_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/stuck_ci_jobs_worker.rb @gitlab-org/maintainers/cicd-verify -/app/workers/update_external_pull_requests_worker.rb @gitlab-org/maintainers/cicd-verify -/lib/**/ci/ @gitlab-org/maintainers/cicd-verify -/lib/api/commit_statuses.rb @gitlab-org/maintainers/cicd-verify -/ee/app/**/ci/ @gitlab-org/maintainers/cicd-verify -/ee/app/**/merge_trains/ @gitlab-org/maintainers/cicd-verify -/ee/app/models/merge_train.rb @gitlab-org/maintainers/cicd-verify -/ee/app/finders/merge_trains_finder.rb @gitlab-org/maintainers/cicd-verify -/ee/app/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service.rb @gitlab-org/maintainers/cicd-verify -/ee/app/services/auto_merge/merge_train_service.rb @gitlab-org/maintainers/cicd-verify -/ee/app/services/system_notes/merge_train_service.rb @gitlab-org/maintainers/cicd-verify -/ee/app/controllers/ee/admin/runners_controller.rb @gitlab-org/maintainers/cicd-verify -/ee/app/controllers/ee/projects/pipelines_controller.rb @gitlab-org/maintainers/cicd-verify -/ee/app/controllers/projects/pipelines/ @gitlab-org/maintainers/cicd-verify -/ee/app/controllers/projects/subscriptions_controller.rb @gitlab-org/maintainers/cicd-verify -/ee/app/models/merge_train.rb @gitlab-org/maintainers/cicd-verify -/ee/app/helpers/ee/projects/pipeline_helper.rb @gitlab-org/maintainers/cicd-verify -/ee/app/views/ci_minutes_usage_mailer/ @gitlab-org/maintainers/cicd-verify -/ee/app/views/projects/pipelines/ @gitlab-org/maintainers/cicd-verify -/ee/app/views/projects/settings/ci_cd/ @gitlab-org/maintainers/cicd-verify -/ee/app/workers/clear_shared_runners_minutes_worker.rb @gitlab-org/maintainers/cicd-verify -/ee/lib/**/ci/ @gitlab-org/maintainers/cicd-verify -/ee/lib/ee/api/entities/merge_train.rb @gitlab-org/maintainers/cicd-verify -/spec/**/ci @gitlab-org/maintainers/cicd-verify -/spec/controllers/admin/jobs_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/admin/runner_projects_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/admin/runners_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/projects/artifacts_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/projects/jobs_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/requests/runner_setup_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/projects/pipeline_schedules_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/requests/projects/pipelines_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/projects/pipelines_settings_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/projects/runners_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/controllers/groups/variables_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/models/commit_status_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/models/external_pull_request_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/models/generic_commit_status_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/models/namespace_ci_cd_setting_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/models/project_ci_cd_setting_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/presenters/commit_status_presenter_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/views/projects/jobs/ @gitlab-org/maintainers/cicd-verify -/spec/views/projects/pipeline_schedules/ @gitlab-org/maintainers/cicd-verify -/spec/views/projects/pipelines/ @gitlab-org/maintainers/cicd-verify -/spec/views/projects/settings/ci_cd/ @gitlab-org/maintainers/cicd-verify -/spec/workers/build_hooks_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/build_queue_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/build_success_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/ci_platform_metrics_update_cron_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/create_pipeline_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/expire_build_artifacts_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/pipeline_hooks_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/pipeline_metrics_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/pipeline_notification_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/pipeline_process_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/pipeline_schedule_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/run_pipeline_schedule_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/stuck_ci_jobs_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/spec/workers/update_external_pull_requests_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/**/ci @gitlab-org/maintainers/cicd-verify -/ee/spec/**/merge_trains @gitlab-org/maintainers/cicd-verify -/ee/spec/models/merge_train_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/finders/merge_trains_finder_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/services/auto_merge/merge_train_service_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/services/system_notes/merge_train_service_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/controllers/projects/subscriptions_controller_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/helpers/ee/projects/pipeline_helper_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb @gitlab-org/maintainers/cicd-verify -/ee/spec/lib/**/ci/ @gitlab-org/maintainers/cicd-verify -/**/javascripts/jobs/ @gitlab-org/ci-cd/verify/frontend -/**/javascripts/pipelines/ @gitlab-org/ci-cd/verify/frontend -/app/assets/javascripts/ci/ @gitlab-org/ci-cd/verify/frontend -/app/assets/javascripts/ci/pipeline_schedules/ @gitlab-org/ci-cd/verify/frontend -/ee/app/assets/javascripts/ci/ @gitlab-org/ci-cd/verify/frontend -/app/assets/javascripts/token_access/ @gitlab-org/ci-cd/verify/frontend -/app/assets/javascripts/admin/application_settings/runner_token_expiration/ @gitlab-org/ci-cd/verify/frontend -/ee/app/assets/javascripts/usage_quotas/pipelines/ @gitlab-org/ci-cd/verify/frontend @fulfillment-group/utilization-group/fe +[Verify] @gitlab-org/maintainers/cicd-verify +# Verify Backend +/**/app/**/ci/ +/**/lib/**/ci/ +/**/spec/**/ci/ +/**/app/**/merge_trains/ +/**/spec/**/merge_trains/ +/app/controllers/admin/jobs_controller.rb +/app/controllers/admin/runner_projects_controller.rb +/app/controllers/admin/runners_controller.rb +/app/controllers/projects/artifacts_controller.rb +/app/controllers/projects/build_artifacts_controller.rb +/app/controllers/projects/builds_controller.rb +/app/controllers/projects/jobs_controller.rb +/app/controllers/runner_setup_controller.rb +/app/controllers/projects/pipeline_schedules_controller.rb +/app/controllers/projects/pipelines_controller.rb +/app/controllers/projects/pipelines_settings_controller.rb +/app/controllers/projects/runner_projects_controller.rb +/app/controllers/projects/runners_controller.rb +/app/controllers/projects/triggers_controller.rb +/app/controllers/projects/variables_controller.rb +/app/models/commit_status.rb +/app/models/external_pull_request.rb +/app/models/generic_commit_status.rb +/app/models/namespace_ci_cd_setting.rb +/app/models/project_ci_cd_setting.rb +/app/presenters/commit_status_presenter.rb +/app/presenters/generic_commit_status_presenter.rb +/app/validators/json_schemas/build_metadata_id_tokens.json +/app/views/projects/artifacts/ +/app/views/projects/generic_commit_statuses/ +/app/views/projects/jobs/ +/app/views/projects/pipeline_schedules/ +/app/views/projects/pipelines/ +/app/views/projects/triggers/ +/app/workers/build_hooks_worker.rb +/app/workers/build_queue_worker.rb +/app/workers/build_success_worker.rb +/app/workers/ci_platform_metrics_update_cron_worker.rb +/app/workers/create_pipeline_worker.rb +/app/workers/expire_build_artifacts_worker.rb +/app/workers/pipeline_hooks_worker.rb +/app/workers/pipeline_metrics_worker.rb +/app/workers/pipeline_notification_worker.rb +/app/workers/pipeline_process_worker.rb +/app/workers/pipeline_schedule_worker.rb +/app/workers/run_pipeline_schedule_worker.rb +/app/workers/stuck_ci_jobs_worker.rb +/app/workers/update_external_pull_requests_worker.rb +/lib/api/commit_statuses.rb +/ee/app/models/merge_train.rb +/ee/app/finders/merge_trains_finder.rb +/ee/app/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service.rb +/ee/app/services/auto_merge/merge_train_service.rb +/ee/app/services/system_notes/merge_train_service.rb +/ee/app/controllers/ee/admin/runners_controller.rb +/ee/app/controllers/ee/projects/pipelines_controller.rb +/ee/app/controllers/projects/pipelines/ +/ee/app/controllers/projects/subscriptions_controller.rb +/ee/app/models/merge_train.rb +/ee/app/helpers/ee/projects/pipeline_helper.rb +/ee/app/views/ci_minutes_usage_mailer/ +/ee/app/views/projects/pipelines/ +/ee/app/views/projects/settings/ci_cd/ +/ee/app/workers/clear_shared_runners_minutes_worker.rb +/ee/lib/api/merge_trains.rb +/ee/lib/ee/api/entities/merge_train.rb +/ee/spec/requests/api/merge_trains_spec.rb +/spec/controllers/admin/jobs_controller_spec.rb +/spec/controllers/admin/runner_projects_controller_spec.rb +/spec/controllers/admin/runners_controller_spec.rb +/spec/controllers/projects/artifacts_controller_spec.rb +/spec/controllers/projects/jobs_controller_spec.rb +/spec/requests/runner_setup_controller_spec.rb +/spec/controllers/projects/pipeline_schedules_controller_spec.rb +/spec/requests/projects/pipelines_controller_spec.rb +/spec/controllers/projects/pipelines_settings_controller_spec.rb +/spec/controllers/projects/runners_controller_spec.rb +/spec/controllers/groups/variables_controller_spec.rb +/spec/models/commit_status_spec.rb +/spec/models/external_pull_request_spec.rb +/spec/models/generic_commit_status_spec.rb +/spec/models/namespace_ci_cd_setting_spec.rb +/spec/models/project_ci_cd_setting_spec.rb +/spec/presenters/commit_status_presenter_spec.rb +/spec/views/projects/jobs/ +/spec/views/projects/pipeline_schedules/ +/spec/views/projects/pipelines/ +/spec/views/projects/settings/ci_cd/ +/spec/workers/build_hooks_worker_spec.rb +/spec/workers/build_queue_worker_spec.rb +/spec/workers/build_success_worker_spec.rb +/spec/workers/ci_platform_metrics_update_cron_worker_spec.rb +/spec/workers/create_pipeline_worker_spec.rb +/spec/workers/expire_build_artifacts_worker_spec.rb +/spec/workers/pipeline_hooks_worker_spec.rb +/spec/workers/pipeline_metrics_worker_spec.rb +/spec/workers/pipeline_notification_worker_spec.rb +/spec/workers/pipeline_process_worker_spec.rb +/spec/workers/pipeline_schedule_worker_spec.rb +/spec/workers/run_pipeline_schedule_worker_spec.rb +/spec/workers/stuck_ci_jobs_worker_spec.rb +/spec/workers/update_external_pull_requests_worker_spec.rb +/ee/spec/models/merge_train_spec.rb +/ee/spec/finders/merge_trains_finder_spec.rb +/ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb +/ee/spec/services/auto_merge/merge_train_service_spec.rb +/ee/spec/services/system_notes/merge_train_service_spec.rb +/ee/spec/controllers/projects/subscriptions_controller_spec.rb +/ee/spec/helpers/ee/projects/pipeline_helper_spec.rb +/ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb + +# Verify Frontend +/**/javascripts/ci/ @gitlab-org/ci-cd/verify/frontend +/**/javascripts/pipelines/ @gitlab-org/ci-cd/verify/frontend +/**/javascripts/jobs/ @gitlab-org/ci-cd/verify/frontend +/**/javascripts/token_access/ @gitlab-org/ci-cd/verify/frontend +/**/javascripts/admin/application_settings/runner_token_expiration/ @gitlab-org/ci-cd/verify/frontend +/**/javascripts/usage_quotas/pipelines/ @gitlab-org/ci-cd/verify/frontend @fulfillment-group/utilization-group/fe [Manage::Workspace] lib/api/entities/basic_project_details.rb @gitlab-org/manage/manage-workspace/backend-approvers diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 48da537bff7..c9cc6de758f 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -b8709da8be08aa79642e96dd95341cf2d9eb50d2 +ebb00e313b5ad11c8fd0b32d1843c3490a43d4c9 diff --git a/app/assets/javascripts/notes/components/comment_form.vue b/app/assets/javascripts/notes/components/comment_form.vue index e0257eb15b3..6794f838c84 100644 --- a/app/assets/javascripts/notes/components/comment_form.vue +++ b/app/assets/javascripts/notes/components/comment_form.vue @@ -411,10 +411,10 @@ export default { {{ $options.i18n.internal }} ({ }, }); -export const formattedReleaseNotes = ({ includeTagNotes, release: { description }, tagNotes }) => - includeTagNotes && tagNotes - ? `${description}\n\n### ${s__('Releases|Tag message')}\n\n${tagNotes}\n` +export const formattedReleaseNotes = ({ + includeTagNotes, + release: { description, tagMessage }, + tagNotes, + showCreateFrom, +}) => { + const notes = showCreateFrom ? tagMessage : tagNotes; + return includeTagNotes && notes + ? `${description}\n\n### ${s__('Releases|Tag message')}\n\n${notes}\n` : description; +}; export const releasedAtChanged = ({ originalReleasedAt, release }) => originalReleasedAt !== release.releasedAt; diff --git a/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue b/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue index 3872869f73d..5a9545f3460 100644 --- a/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue +++ b/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue @@ -4,7 +4,6 @@ import { createAlert } from '~/alert'; import { TYPE_ISSUE } from '~/issues/constants'; import { dateInWords, formatDate, parsePikadayDate } from '~/lib/utils/datetime_utility'; import { __, sprintf } from '~/locale'; -import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { dateFields, dateTypes, dueDateQueries, startDateQueries, Tracking } from '../../constants'; import SidebarEditableItem from '../sidebar_editable_item.vue'; import SidebarFormattedDate from './sidebar_formatted_date.vue'; @@ -31,7 +30,6 @@ export default { SidebarFormattedDate, SidebarInheritDate, }, - mixins: [glFeatureFlagsMixin()], inject: ['canUpdate'], props: { iid: { @@ -182,12 +180,7 @@ export default { return this.issuable.id; }, skipIssueDueDateSubscription() { - return ( - this.issuableType !== TYPE_ISSUE || - !this.issuableId || - this.isLoading || - !this.glFeatures?.realTimeIssueDueDate - ); + return this.issuableType !== TYPE_ISSUE || !this.issuableId || this.isLoading; }, }, methods: { diff --git a/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue b/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue index 5269c7f8d5e..56143a29f52 100644 --- a/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue +++ b/app/assets/javascripts/super_sidebar/components/frequent_items_list.vue @@ -1,13 +1,20 @@ @@ -61,14 +93,32 @@ export default {
{{ pristineText }}
- + diff --git a/app/assets/javascripts/super_sidebar/components/items_list.vue b/app/assets/javascripts/super_sidebar/components/items_list.vue index 0a72105fcc4..8ee7d57c47c 100644 --- a/app/assets/javascripts/super_sidebar/components/items_list.vue +++ b/app/assets/javascripts/super_sidebar/components/items_list.vue @@ -1,18 +1,29 @@ @@ -34,6 +45,21 @@ export default { aria-hidden="true" /> + diff --git a/app/assets/javascripts/super_sidebar/components/nav_item.vue b/app/assets/javascripts/super_sidebar/components/nav_item.vue index c2e5fb9b004..c3bd3b9b5d1 100644 --- a/app/assets/javascripts/super_sidebar/components/nav_item.vue +++ b/app/assets/javascripts/super_sidebar/components/nav_item.vue @@ -132,6 +132,7 @@ export default { {{ item.subtitle }} + {{ pillData }} diff --git a/app/assets/javascripts/tracking/constants.js b/app/assets/javascripts/tracking/constants.js index 2593fbe6ed1..7f4c7a91b20 100644 --- a/app/assets/javascripts/tracking/constants.js +++ b/app/assets/javascripts/tracking/constants.js @@ -5,14 +5,11 @@ export const DEFAULT_SNOWPLOW_OPTIONS = { hostname: window.location.hostname, cookieDomain: window.location.hostname, appId: '', - userFingerprint: false, respectDoNotTrack: true, - forceSecureTracker: true, eventMethod: 'post', contexts: { webPage: true, performanceTiming: true }, formTracking: false, linkClickTracking: false, - pageUnloadTimer: 10, formTrackingConfig: { forms: { allow: [] }, fields: { allow: [] }, diff --git a/app/assets/javascripts/tracking/dispatch_snowplow_event.js b/app/assets/javascripts/tracking/dispatch_snowplow_event.js index 5daeaf1d85b..89d90cf89be 100644 --- a/app/assets/javascripts/tracking/dispatch_snowplow_event.js +++ b/app/assets/javascripts/tracking/dispatch_snowplow_event.js @@ -26,7 +26,14 @@ export function dispatchSnowplowEvent( } try { - window.snowplow('trackStructEvent', category, action, label, property, value, contexts); + window.snowplow('trackStructEvent', { + category, + action, + label, + property, + value, + context: contexts, + }); return true; } catch (error) { Sentry.captureException(error); diff --git a/app/assets/javascripts/tracking/index.js b/app/assets/javascripts/tracking/index.js index d60eb37a9a2..472ce3c5bbf 100644 --- a/app/assets/javascripts/tracking/index.js +++ b/app/assets/javascripts/tracking/index.js @@ -7,7 +7,7 @@ export { Tracking as default }; /** * Tracker initialization as defined in: - * https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-trackers/javascript-tracker/javascript-tracker-v2/tracker-setup/initializing-a-tracker-2/. + * https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/javascript-tracker/javascript-tracker-v3/tracker-setup/initialization-options/. * It also dispatches any event emitted before its execution. * * @returns {undefined} @@ -42,13 +42,19 @@ export function initDefaultTrackers() { // must be before initializing the trackers Tracking.setAnonymousUrls(); - window.snowplow('enableActivityTracking', 30, 30); + window.snowplow('enableActivityTracking', { + minimumVisitLength: 30, + heartbeatDelay: 30, + }); // must be after enableActivityTracking const standardContext = getStandardContext(); const experimentContexts = getAllExperimentContexts(); // To not expose personal identifying information, the page title is hardcoded as `GitLab` // See: https://gitlab.com/gitlab-org/gitlab/-/issues/345243 - window.snowplow('trackPageView', 'GitLab', [standardContext, ...experimentContexts]); + window.snowplow('trackPageView', { + title: 'GitLab', + context: [standardContext, ...experimentContexts], + }); window.snowplow('setDocumentTitle', 'GitLab'); if (window.snowplowOptions.formTracking) { diff --git a/app/assets/javascripts/tracking/tracker.js b/app/assets/javascripts/tracking/tracker.js index 85f4979e752..b69b1714952 100644 --- a/app/assets/javascripts/tracking/tracker.js +++ b/app/assets/javascripts/tracking/tracker.js @@ -207,14 +207,18 @@ export const Tracker = { const mappedConfig = {}; if (config.forms) { - mappedConfig.forms = renameKey(config.forms, 'allow', 'whitelist'); + mappedConfig.forms = renameKey(config.forms, 'allow', 'allowlist'); } if (config.fields) { - mappedConfig.fields = renameKey(config.fields, 'allow', 'whitelist'); + mappedConfig.fields = renameKey(config.fields, 'allow', 'allowlist'); } - const enabler = () => window.snowplow('enableFormTracking', mappedConfig, userProvidedContexts); + const enabler = () => + window.snowplow('enableFormTracking', { + options: mappedConfig, + context: userProvidedContexts, + }); if (document.readyState === 'complete') { enabler(); diff --git a/app/assets/stylesheets/highlight/white_base.scss b/app/assets/stylesheets/highlight/white_base.scss index ccb5d96e966..969a6665634 100644 --- a/app/assets/stylesheets/highlight/white_base.scss +++ b/app/assets/stylesheets/highlight/white_base.scss @@ -192,8 +192,8 @@ pre.code, } &.hll { - --highlight-border-color: #{$orange-200}; - background-color: $orange-50; + --highlight-border-color: #{$blue-300}; + background-color: $blue-50; } } @@ -247,8 +247,8 @@ pre.code, } &.hll { - --highlight-border-color: #{$orange-200}; - background-color: $orange-50; + --highlight-border-color: #{$blue-300}; + background-color: $blue-50; } } @@ -269,8 +269,8 @@ pre.code, } &.hll { - --highlight-border-color: #{$orange-200}; - background-color: $orange-50; + --highlight-border-color: #{$blue-300}; + background-color: $blue-50; } } } diff --git a/app/assets/stylesheets/page_bundles/merge_requests.scss b/app/assets/stylesheets/page_bundles/merge_requests.scss index e11b6c92455..c3f90abe018 100644 --- a/app/assets/stylesheets/page_bundles/merge_requests.scss +++ b/app/assets/stylesheets/page_bundles/merge_requests.scss @@ -180,6 +180,10 @@ $tabs-holder-z-index: 250; .content + .content { @include gl-border-t; } + + .notes-content { + border: 0; + } } &.inline-diff-view { diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 5cb7c75fbc9..efe88d17cab 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -67,7 +67,6 @@ class Projects::IssuesController < Projects::ApplicationController push_force_frontend_feature_flag(:work_items_mvc, project&.work_items_mvc_feature_flag_enabled?) push_force_frontend_feature_flag(:work_items_mvc_2, project&.work_items_mvc_2_feature_flag_enabled?) push_frontend_feature_flag(:epic_widget_edit_confirmation, project) - push_frontend_feature_flag(:real_time_issue_due_date, project) end around_action :allow_gitaly_ref_name_caching, only: [:discussions] diff --git a/app/graphql/gitlab_schema.rb b/app/graphql/gitlab_schema.rb index 37adf4c2d3b..eed7959a2f1 100644 --- a/app/graphql/gitlab_schema.rb +++ b/app/graphql/gitlab_schema.rb @@ -20,7 +20,7 @@ class GitlabSchema < GraphQL::Schema use Gitlab::Graphql::GenericTracing use Gitlab::Graphql::Tracers::TimerTracer - use GraphQL::Subscriptions::ActionCableSubscriptions + use Gitlab::Graphql::Subscriptions::ActionCableWithLoadBalancing use BatchLoader::GraphQL use Gitlab::Graphql::Pagination::Connections use Gitlab::Graphql::Timeout, max_seconds: Gitlab.config.gitlab.graphql_timeout diff --git a/config/feature_flags/development/real_time_issue_due_date.yml b/config/feature_flags/development/ci_includable_files_interpolation.yml similarity index 66% rename from config/feature_flags/development/real_time_issue_due_date.yml rename to config/feature_flags/development/ci_includable_files_interpolation.yml index efe67398be1..bffafcd9f0e 100644 --- a/config/feature_flags/development/real_time_issue_due_date.yml +++ b/config/feature_flags/development/ci_includable_files_interpolation.yml @@ -1,8 +1,8 @@ --- -name: real_time_issue_due_date -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114927 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/397720 +name: ci_includable_files_interpolation +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113211 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/399146 milestone: '15.11' type: development -group: group::application performance +group: group::pipeline authoring default_enabled: false diff --git a/config/metrics/counts_28d/20210216175101_merge_requests_users.yml b/config/metrics/counts_28d/20210216175101_merge_requests_users.yml index 3029047f4ad..08dc431f26d 100644 --- a/config/metrics/counts_28d/20210216175101_merge_requests_users.yml +++ b/config/metrics/counts_28d/20210216175101_merge_requests_users.yml @@ -7,7 +7,7 @@ product_stage: create product_group: code_review product_category: code_review value_type: number -status: active +status: removed time_frame: 28d data_source: redis_hll distribution: @@ -19,3 +19,5 @@ tier: - ultimate performance_indicator_type: [] milestone: "<13.9" +milestone_removed: "15.10" +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115037 diff --git a/doc/administration/logs/index.md b/doc/administration/logs/index.md index 1a2fa7bbafa..c03971ab4c1 100644 --- a/doc/administration/logs/index.md +++ b/doc/administration/logs/index.md @@ -725,7 +725,7 @@ Depending on your installation method, this file is located at: - Omnibus GitLab: `/var/log/gitlab/gitlab-rails/importer.log` - Installations from source: `/home/git/gitlab/log/importer.log` -It logs the progress of the import process. +This file logs the progress of [project imports and migrations](../../user/project/import/index.md). ## `exporter.log` @@ -821,6 +821,8 @@ Depending on your installation method, this file is located at: - Omnibus GitLab: `/var/log/gitlab/gitlab-rails/migrations.log` - Installations from source: `/home/git/gitlab/log/migrations.log` +This file logs the progress of [database migrations](../raketasks/maintenance.md#display-status-of-database-migrations). + ## `mail_room_json.log` (default) > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19186) in GitLab 12.6. diff --git a/doc/administration/logs/log_parsing.md b/doc/administration/logs/log_parsing.md index 84c517e6120..40d6059d246 100644 --- a/doc/administration/logs/log_parsing.md +++ b/doc/administration/logs/log_parsing.md @@ -158,7 +158,7 @@ CT: 297 ROUTE: /api/:version/projects/:id/repository/tags DURS: 731.39, CT: 190 ROUTE: /api/:version/projects/:id/repository/commits DURS: 1079.02, 979.68, 958.21 ``` -### Print top API user agents +#### Print top API user agents ```shell jq --raw-output '[.route, .ua] | @tsv' api_json.log | sort | uniq -c | sort -n @@ -180,9 +180,20 @@ if the output contains many: You can also [use `fast-stats top`](#parsing-gitlab-logs-with-jq) to extract performance statistics. +### Parsing `gitlab-rails/importer.log` + +To troubleshoot [project imports](../../administration/raketasks/project_import_export.md) or +[migrations](../../user/project/import/index.md), run this command: + +```shell +jq 'select(.project_path == "/").error_messages' importer.log +``` + +For common issues, see [troubleshooting](../../administration/raketasks/project_import_export.md#troubleshooting). + ### Parsing `gitlab-workhorse/current` -### Print top Workhorse user agents +#### Print top Workhorse user agents ```shell jq --raw-output '[.uri, .user_agent] | @tsv' current | sort | uniq -c | sort -n diff --git a/doc/administration/package_information/defaults.md b/doc/administration/package_information/defaults.md index 3b52b6bca82..932342a6a92 100644 --- a/doc/administration/package_information/defaults.md +++ b/doc/administration/package_information/defaults.md @@ -30,7 +30,7 @@ by default: | PgBouncer exporter | No | Port | X | 9188 | | GitLab Exporter | Yes | Port | X | 9168 | | Sidekiq exporter | Yes | Port | X | 8082 | -| Sidekiq health check | No | Port | X | 8092[^Sidekiq-health] | +| Sidekiq health check | Yes | Port | X | 8092[^Sidekiq-health] | | Web exporter | No | Port | X | 8083 | | Geo PostgreSQL | No | Socket | Port (5431) | X | | Redis Sentinel | No | Port | X | 26379 | diff --git a/doc/api/bulk_imports.md b/doc/api/bulk_imports.md index 6a33bd1bc95..4816a5d5066 100644 --- a/doc/api/bulk_imports.md +++ b/doc/api/bulk_imports.md @@ -11,6 +11,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w With the group migration by direct transfer API, you can start and view the progress of migrations initiated with [group migration by direct transfer](../user/group/import/index.md#migrate-groups-by-direct-transfer-recommended). +## Prerequisites + +For information on prerequisites for group migration by direct transfer API, see +prerequisites for [migrating groups by direct transfer](../user/group/import/index.md#prerequisites). + ## Start a new group migration > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66353) in GitLab 14.2. diff --git a/doc/api/graphql/getting_started.md b/doc/api/graphql/getting_started.md index df1b1cdca7c..d45228c34c8 100644 --- a/doc/api/graphql/getting_started.md +++ b/doc/api/graphql/getting_started.md @@ -286,6 +286,24 @@ We've asked for the note details, but it doesn't exist anymore, so we get `null` More about mutations: [GraphQL Documentation](https://graphql.org/learn/queries/#mutations). +### Update project settings + +You can update multiple project settings in a single GraphQL mutation. +This example is a workaround for [the major change](../../update/deprecations.md#default-cicd-job-token-ci_job_token-scope-changed) +in `CI_JOB_TOKEN` scoping behavior. + +```graphql +mutation DisableCI_JOB_TOKENscope { + projectCiCdSettingsUpdate(input:{fullPath: "/", inboundJobTokenScopeEnabled: false, jobTokenScopeEnabled: false}) { + ciCdSettings { + inboundJobTokenScopeEnabled + jobTokenScopeEnabled + } + errors + } +} +``` + ### Introspective queries Clients can query the GraphQL endpoint for information about its own schema. diff --git a/doc/api/group_import_export.md b/doc/api/group_import_export.md index 5dd0e4e3d52..a9ec3e8547c 100644 --- a/doc/api/group_import_export.md +++ b/doc/api/group_import_export.md @@ -6,8 +6,6 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Group import and export API **(FREE)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20353) in GitLab 12.8. - Use the group import and export API to export a group structure and import it to a new location. When you use the group import and export API with the [project import and export API](project_import_export.md), you can preserve connections with group-level relationships, such as connections between project issues and group epics. @@ -29,6 +27,11 @@ If you import groups into a parent group, the subgroups inherit by default a sim To preserve the member list and their respective permissions on imported groups, review the users in these groups. Make sure these users exist before importing the desired groups. +## Prerequisites + +For information on prerequisites for group import and export API, see prerequisites for +[migrating groups by uploading an export file](../user/group/import/index.md#preparation). + ## Schedule new export Start a new group export. diff --git a/doc/api/import.md b/doc/api/import.md index 87bbb56869d..133abb6b2f6 100644 --- a/doc/api/import.md +++ b/doc/api/import.md @@ -10,16 +10,16 @@ Use the Import API to import repositories from GitHub or Bitbucket Server. Related APIs include: -- [Group migration by direct transfer API](bulk_imports.md) -- [Group import and export API](group_import_export.md) -- [Project import and export API](project_import_export.md) +- [Group migration by direct transfer API](bulk_imports.md). +- [Group import and export API](group_import_export.md). +- [Project import and export API](project_import_export.md). ## Prerequisites For information on prerequisites for using the Import API, see: -- [Prerequisites for GitHub importer](../user/project/import/github.md#prerequisites) -- [Prerequisites for Bitbucket Server importer](../user/project/import/bitbucket_server.md#import-your-bitbucket-repositories) +- [Prerequisites for GitHub importer](../user/project/import/github.md#prerequisites). +- [Prerequisites for Bitbucket Server importer](../user/project/import/bitbucket_server.md#import-your-bitbucket-repositories). ## Import repository from GitHub diff --git a/doc/api/packages/debian_group_distributions.md b/doc/api/packages/debian_group_distributions.md index 23bc85bf0a0..0c7f4cdfeb8 100644 --- a/doc/api/packages/debian_group_distributions.md +++ b/doc/api/packages/debian_group_distributions.md @@ -45,7 +45,7 @@ GET /groups/:id/-/debian_distributions | `suite` | string | no | Filter with specific `suite`. | ```shell -curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions" +curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions" ``` Example response: @@ -86,7 +86,7 @@ GET /groups/:id/-/debian_distributions/:codename | `codename` | integer | yes | The `codename` of a distribution. | ```shell -curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions/unstable" +curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions/unstable" ``` Example response: @@ -125,7 +125,7 @@ GET /groups/:id/-/debian_distributions/:codename/key.asc | `codename` | integer | yes | The `codename` of a distribution. | ```shell -curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions/unstable/key.asc" +curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions/unstable/key.asc" ``` Example response: @@ -170,7 +170,7 @@ POST /groups/:id/-/debian_distributions | `architectures` | architectures | no | The new Debian distribution's list of architectures. | ```shell -curl --request POST --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions?codename=sid" +curl --request POST --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions?codename=sid" ``` Example response: @@ -217,7 +217,7 @@ PUT /groups/:id/-/debian_distributions/:codename | `architectures` | architectures | no | The Debian distribution's new list of architectures. | ```shell -curl --request PUT --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions/unstable?suite=new-suite&valid_time_duration_seconds=604800" +curl --request PUT --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions/unstable?suite=new-suite&valid_time_duration_seconds=604800" ``` Example response: @@ -256,5 +256,5 @@ DELETE /groups/:id/-/debian_distributions/:codename | `codename` | integer | yes | The codename of the Debian distribution. | ```shell -curl --request DELETE --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/debian_distributions/unstable" +curl --request DELETE --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/5/-/debian_distributions/unstable" ``` diff --git a/doc/api/project_import_export.md b/doc/api/project_import_export.md index 587b998cf4d..f09e4d2785a 100644 --- a/doc/api/project_import_export.md +++ b/doc/api/project_import_export.md @@ -8,14 +8,16 @@ info: To determine the technical writer assigned to the Stage/Group associated w Use the project import and export API to import and export projects using file transfers. -For more information, see: - -- [Migrating projects using file exports](../user/project/settings/import_export.md) -- [Project import and export Rake tasks](../administration/raketasks/project_import_export.md) - Before using the project import and export API, you might want to use the [group import and export API](group_import_export.md). +## Prerequisites + +For information on prerequisites for project import and export API, see: + +- Prerequisites for [project export](../user/project/settings/import_export.md#export-a-project-and-its-data). +- Prerequisites for [project import](../user/project/settings/import_export.md#import-a-project-and-its-data). + ## Schedule an export Start a new export. @@ -444,3 +446,8 @@ GitHub and how many were already imported: } } ``` + +## Related topics + +- [Migrating projects using file exports](../user/project/settings/import_export.md). +- [Project import and export Rake tasks](../administration/raketasks/project_import_export.md). diff --git a/doc/ci/jobs/ci_job_token.md b/doc/ci/jobs/ci_job_token.md index 78db064e4fd..40c6a0c1435 100644 --- a/doc/ci/jobs/ci_job_token.md +++ b/doc/ci/jobs/ci_job_token.md @@ -238,6 +238,8 @@ CI job token failures are usually shown as responses like `404 Not Found` or sim While troubleshooting CI/CD job token authentication issues, be aware that: +- A [GraphQL example mutation](../../api/graphql/getting_started.md#update-project-settings) + is available to toggle the inbound outbound scope settings per project. - When the [CI/CD job token scopes](#configure-cicd-job-token-access) are enabled, and the job token is being used to access a different project: - The user that executes the job must be a member of the project that is being accessed. diff --git a/doc/development/documentation/topic_types/index.md b/doc/development/documentation/topic_types/index.md index 2cb638926e7..511c8cdb345 100644 --- a/doc/development/documentation/topic_types/index.md +++ b/doc/development/documentation/topic_types/index.md @@ -30,6 +30,9 @@ In addition to the four primary topic types, we also have: If inline links are not sufficient, you can create a topic called **Related topics** and include an unordered list of related topics. This topic should be above the Troubleshooting section. +Links in this section should be brief and scannable. They are usually not +full sentences, and so should not end in a period. + ```markdown ## Related topics diff --git a/doc/integration/saml.md b/doc/integration/saml.md index d8d01b8b562..16c69a65a8c 100644 --- a/doc/integration/saml.md +++ b/doc/integration/saml.md @@ -2139,7 +2139,7 @@ instead of `email`, let GitLab know by setting it on your configuration: By default, the local part of the email address in the SAML response is used to generate the user's GitLab username. -Configure `nickname` in `attribute_statements` to specify one or more attributes that contain a user's desired username: +Configure [`username` or `nickname`](omniauth.md#per-provider-configuration) in `attribute_statements` to specify one or more attributes that contain a user's desired username: ::Tabs diff --git a/doc/raketasks/restore_gitlab.md b/doc/raketasks/restore_gitlab.md index 13422817503..30395c36c91 100644 --- a/doc/raketasks/restore_gitlab.md +++ b/doc/raketasks/restore_gitlab.md @@ -30,14 +30,21 @@ is usually not allowed to create or delete the SQL database needed to import data into (`gitlabhq_production`). All existing data is either erased (SQL) or moved to a separate directory (such as repositories and uploads). -To restore a backup, you must restore `/etc/gitlab/gitlab-secrets.json` -(for Omnibus packages) or `/home/git/gitlab/.secret` (for installations from -source). This file contains the database encryption key, -[CI/CD variables](../ci/variables/index.md), and +To restore a backup, **you must also restore the GitLab secrets**. + +These include the database encryption key, [CI/CD variables](../ci/variables/index.md), and variables used for [two-factor authentication](../user/profile/account/two_factor_authentication.md). -If you fail to restore this encryption key file along with the application data -backup, users with two-factor authentication enabled and GitLab Runner -loses access to your GitLab server. + +Without the keys, [multiple issues occur](backup_restore.md#when-the-secrets-file-is-lost), +including loss of access by users with [two-factor authentication enabled](../user/profile/account/two_factor_authentication.md), +and GitLab Runners cannot log in. + +Restore: + +- `/etc/gitlab/gitlab-secrets.json` (Linux package) +- `/home/git/gitlab/.secret` (self-compiled installations) +- Rails secret (cloud-native GitLab) + - [This can be converted to the Linux package format](https://docs.gitlab.com/charts/installation/migration/helm_to_package.html), if required. You may also want to restore your previous `/etc/gitlab/gitlab.rb` (for Omnibus packages) or `/home/git/gitlab/config/gitlab.yml` (for installations from source) and @@ -155,9 +162,34 @@ the restore target directories are empty. For both these installation types, the backup tarball has to be available in the backup location (default location is `/var/opt/gitlab/backups`). -If you use Docker Swarm, [first disable the health check](#restore-gitlab-from-backup-using-docker-swarm). +### Restore for Helm chart installations -For Docker installations, the restore task can be run from host: +The GitLab Helm chart uses the process documented in +[restoring a GitLab Helm chart installation](https://docs.gitlab.com/charts/backup-restore/restore.html#restoring-a-gitlab-installation) + +### Restore for Docker image installations + +If you're using [Docker Swarm](../install/docker.md#install-gitlab-using-docker-swarm-mode), +the container might restart during the restore process because Puma is shut down, +and so the container health check fails. To work around this problem, +temporarily disable the health check mechanism. + +1. Edit `docker-compose.yml`: + + ```yaml + healthcheck: + disable: true + ``` + +1. Deploy the stack: + + ```shell + docker stack deploy --compose-file docker-compose.yml mystack + ``` + +For more information, see [issue 6846](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6846 "GitLab restore can fail owing to `gitlab-healthcheck`"). + +The restore task can be run from the host: ```shell # Stop the processes that are connected to the database @@ -177,31 +209,6 @@ docker restart docker exec -it gitlab-rake gitlab:check SANITIZE=true ``` -Users of GitLab 12.1 and earlier should use the command `gitlab-rake gitlab:backup:create` instead. - -WARNING: -`gitlab-rake gitlab:backup:restore` doesn't set the correct file system -permissions on your Registry directory. This is a [known issue](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62759). -In GitLab 12.2 or later, you can use `gitlab-backup restore` to avoid this -issue. - -The GitLab Helm chart uses a different process, documented in -[restoring a GitLab Helm chart installation](https://gitlab.com/gitlab-org/charts/gitlab/blob/master/doc/backup-restore/restore.md). - -### Restore GitLab from backup using Docker Swarm - -Docker Swarm might restart the container during the restore process because Puma is shut down, -and so the container health check fails. To work around this problem, disable the health check -mechanism in Docker compose file: - -```yaml -healthcheck: - disable: true -``` - -Read more in issue #6846, -[GitLab restore can fail owing to `gitlab-healthcheck`](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6846). - ## Restore for installation from source First, ensure your backup tar file is in the backup directory described in the diff --git a/doc/subscriptions/self_managed/index.md b/doc/subscriptions/self_managed/index.md index 37d12948809..0eb6a2fe495 100644 --- a/doc/subscriptions/self_managed/index.md +++ b/doc/subscriptions/self_managed/index.md @@ -67,7 +67,8 @@ billable user, with the following exceptions: [blocked users](../../user/admin_area/moderate_users.md#block-a-user) don't count as billable users in the current subscription. When they are either deactivated or blocked they release a _billable user_ seat. However, they may count toward overages in the subscribed seat count. - Users who are [pending approval](../../user/admin_area/moderate_users.md#users-pending-approval). -- Members with the [Guest role on an Ultimate subscription](#free-guest-users). +- Users with only the [Minimal Access role](../../user/permissions.md#users-with-minimal-access) on self-managed Ultimate subscriptions or any GitLab.com subscriptions. +- Users with only the [Guest or Minimal Access roles on an Ultimate subscription](#free-guest-users). - Users without project or group memberships on an Ultimate subscription. - GitLab-created service accounts: - [Ghost User](../../user/profile/account/delete_account.md#associated-records). diff --git a/doc/tutorials/index.md b/doc/tutorials/index.md index fe295d13c09..fc73a6240cb 100644 --- a/doc/tutorials/index.md +++ b/doc/tutorials/index.md @@ -45,7 +45,7 @@ issues, epics, and more. | [Create a project from a template](https://gitlab.com/projects/new#create_from_template) | Choose a project template and create a project with files to get you started. | | | [Migrate to GitLab](../user/project/import/index.md) | If you are coming to GitLab from another platform, you can import or convert your projects. | | | [Run an agile iteration](agile_sprint.md) | Use group, projects, and iterations to run an agile development iteration. | -| [Epics and Issue Boards](https://www.youtube.com/watch?v=I1bFIAQBHB8) | Find out how to use epics and issue boards for project management. | | +| [Epics and Issue Boards](https://www.youtube.com/watch?v=I1bFIAQBHB8) | Find out how to use epics and issue boards for project management. | | ## Use CI/CD pipelines diff --git a/doc/user/application_security/dast/browser_based.md b/doc/user/application_security/dast/browser_based.md index 88be88ad00e..e921c387053 100644 --- a/doc/user/application_security/dast/browser_based.md +++ b/doc/user/application_security/dast/browser_based.md @@ -173,7 +173,9 @@ For authentication CI/CD variables, see [Authentication](authentication.md). | `DAST_BROWSER_ALLOWED_HOSTS` | List of strings | `site.com,another.com` | Hostnames included in this variable are considered in scope when crawled. By default the `DAST_WEBSITE` hostname is included in the allowed hosts list. Headers set using `DAST_REQUEST_HEADERS` are added to every request made to these hostnames. | | `DAST_BROWSER_COOKIES` | dictionary | `abtesting_group:3,region:locked` | A cookie name and value to be added to every request. | | `DAST_BROWSER_CRAWL_GRAPH` | boolean | `true` | Set to `true` to generate an SVG graph of navigation paths visited during crawl phase of the scan. You must also define `gl-dast-crawl-graph.svg` as a CI job artifact to be able to access the generated graph. | -| `DAST_BROWSER_DEVTOOLS_LOG` | string | `Default:messageAndBody,truncate:2000` | Set to log protocol messages between DAST and the Chromium browser. | | +| `DAST_BROWSER_CRAWL_TIMEOUT` | [Duration string](https://pkg.go.dev/time#ParseDuration) | `5m` | The maximum amount of time to wait for the crawl phase of the scan to complete. Defaults to `24h`. | +| `DAST_BROWSER_DEVTOOLS_LOG` | string | `Default:messageAndBody,truncate:2000` | Set to log protocol messages between DAST and the Chromium browser. | +| `DAST_BROWSER_DOM_READY_AFTER_TIMEOUT` | [Duration string](https://pkg.go.dev/time#ParseDuration) | `200ms` | Define how long to wait for updates to the DOM before checking a page is stable. Defaults to `500ms`. | | `DAST_BROWSER_ELEMENT_TIMEOUT` | [Duration string](https://pkg.go.dev/time#ParseDuration) | `600ms` | The maximum amount of time to wait for an element before determining it is ready for analysis. | | `DAST_BROWSER_EXCLUDED_ELEMENTS` | selector | `a[href='2.html'],css:.no-follow` | Comma-separated list of selectors that are ignored when scanning. | | `DAST_BROWSER_EXCLUDED_HOSTS` | List of strings | `site.com,another.com` | Hostnames included in this variable are considered excluded and connections are forcibly dropped. | @@ -192,6 +194,7 @@ For authentication CI/CD variables, see [Authentication](authentication.md). | `DAST_BROWSER_NUMBER_OF_BROWSERS` | number | `3` | The maximum number of concurrent browser instances to use. For shared runners on GitLab.com, we recommended a maximum of three. Private runners with more resources may benefit from a higher number, but are likely to produce little benefit after five to seven instances. | | `DAST_BROWSER_PAGE_LOADING_SELECTOR` | selector | `css:#page-is-loading` | Selector that when is no longer visible on the page, indicates to the analyzer that the page has finished loading and the scan can continue. Cannot be used with `DAST_BROWSER_PAGE_READY_SELECTOR`. | | `DAST_BROWSER_PAGE_READY_SELECTOR` | selector | `css:#page-is-ready` | Selector that when detected as visible on the page, indicates to the analyzer that the page has finished loading and the scan can continue. Cannot be used with `DAST_BROWSER_PAGE_LOADING_SELECTOR`. | +| `DAST_BROWSER_PASSIVE_CHECK_WORKERS` | int | `5` | Number of workers that passive scan in parallel. Recommend setting to the number of available CPUs. | | `DAST_BROWSER_SCAN` | boolean | `true` | Required to be `true` to run a browser-based scan. | | `DAST_BROWSER_SEARCH_ELEMENT_TIMEOUT` | [Duration string](https://pkg.go.dev/time#ParseDuration) | `3s` | The maximum amount of time to allow the browser to search for new elements or user actions. | | `DAST_BROWSER_STABILITY_TIMEOUT` | [Duration string](https://pkg.go.dev/time#ParseDuration) | `7s` | The maximum amount of time to wait for a browser to consider a page loaded and ready for analysis. | @@ -232,9 +235,14 @@ This can come at a cost of increased scan time. You can manage the trade-off between coverage and scan time with the following measures: +- Vertically scale the runner and use a higher number of browsers with the [variable](#available-cicd-variables) `DAST_BROWSER_NUMBER_OF_BROWSERS`. The default is `3`. - Limit the number of actions executed by the browser with the [variable](#available-cicd-variables) `DAST_BROWSER_MAX_ACTIONS`. The default is `10,000`. - Limit the page depth that the browser-based crawler checks coverage on with the [variable](#available-cicd-variables) `DAST_BROWSER_MAX_DEPTH`. The crawler uses a breadth-first search strategy, so pages with smaller depth are crawled first. The default is `10`. -- Vertically scale the runner and use a higher number of browsers with [variable](#available-cicd-variables) `DAST_BROWSER_NUMBER_OF_BROWSERS`. The default is `3`. +- Limit the time taken to crawl the target application with the [variable](#available-cicd-variables) `DAST_BROWSER_CRAWL_TIMEOUT`. The default is `24h`. Scans continue with passive and active checks when the crawler times out. +- Build the crawl graph with the [variable](#available-cicd-variables) `DAST_BROWSER_CRAWL_GRAPH` to see what pages are being crawled. +- Prevent pages from being crawled using the [variable](#available-cicd-variables) `DAST_EXCLUDE_URLS`. +- Prevent elements being selected using the [variable](#available-cicd-variables) `DAST_BROWSER_EXCLUDED_ELEMENTS`. Use with caution, as defining this variable causes an extra lookup for each page crawled. +- If the target application has minimal or fast rendering, consider reducing the [variable](#available-cicd-variables) `DAST_BROWSER_DOM_READY_AFTER_TIMEOUT` to a smaller value. The default is `500ms`. ## Timeouts diff --git a/doc/user/group/epics/img/issue_list_v13_1.png b/doc/user/group/epics/img/issue_list_v13_1.png deleted file mode 100644 index ed0b4842bfe..00000000000 Binary files a/doc/user/group/epics/img/issue_list_v13_1.png and /dev/null differ diff --git a/doc/user/group/epics/img/issue_list_v15_11.png b/doc/user/group/epics/img/issue_list_v15_11.png new file mode 100644 index 00000000000..601406a8a33 Binary files /dev/null and b/doc/user/group/epics/img/issue_list_v15_11.png differ diff --git a/doc/user/group/epics/manage_epics.md b/doc/user/group/epics/manage_epics.md index 3a0fc86e803..0dc87b7e4e4 100644 --- a/doc/user/group/epics/manage_epics.md +++ b/doc/user/group/epics/manage_epics.md @@ -421,7 +421,7 @@ To remove an issue from an epic: The **Remove issue** warning appears. 1. Select **Remove**. -![List of issues assigned to an epic](img/issue_list_v13_1.png) +![List of issues assigned to an epic](img/issue_list_v15_11.png) ### Reorder issues assigned to an epic diff --git a/doc/user/packages/debian_repository/index.md b/doc/user/packages/debian_repository/index.md index 577667b7a16..5ce65bfd8aa 100644 --- a/doc/user/packages/debian_repository/index.md +++ b/doc/user/packages/debian_repository/index.md @@ -98,8 +98,11 @@ with one of the following: ## Create a Distribution -On the project-level, Debian packages are published using *Debian Distributions*. To publish -packages on the group level, create a distribution with the same `codename`. +At the project level, Debian packages are published with **Debian distributions**. At the +group level, Debian packages are aggregated from the projects in the group provided that: + +- The project visibility is set to `public`. +- The Debian `codename` for the group matches the Debian `codename` for the project. To create a project-level distribution using a personal access token: diff --git a/doc/user/permissions.md b/doc/user/permissions.md index d71e31561d6..ab08f5b4767 100644 --- a/doc/user/permissions.md +++ b/doc/user/permissions.md @@ -430,7 +430,7 @@ For more information, see Owners can add members with a "minimal access" role to a root group. Such users do not: -- Count as licensed seats. +- Count as licensed seats on self-managed Ultimate subscriptions or any GitLab.com subscriptions. - Automatically have access to projects and subgroups in that root group. Owners must explicitly add these "minimal access" users to the specific subgroups and diff --git a/doc/user/product_analytics/index.md b/doc/user/product_analytics/index.md index 69fcf5f7629..fde104200a7 100644 --- a/doc/user/product_analytics/index.md +++ b/doc/user/product_analytics/index.md @@ -79,6 +79,7 @@ Prerequisite: | Jitsu project ID | `g0maofw84gx5sjxgse2k` | | Jitsu administrator email | `jitsu.admin@gitlab.com` | | Jitsu administrator password | `` | + | Collector host | `https://collector.gitlab.com` | | Clickhouse URL | `https://:@clickhouse.gitlab.com:8123` | | Cube API URL | `https://cube.gitlab.com` | | Cube API key | `25718201b3e9...ae6bbdc62dbb` | diff --git a/doc/user/project/description_templates.md b/doc/user/project/description_templates.md index eeaf5d799d2..48029da1213 100644 --- a/doc/user/project/description_templates.md +++ b/doc/user/project/description_templates.md @@ -156,7 +156,7 @@ To set a default description template for merge requests, either: 1. On the top bar, select **Main menu > Projects** and find your project. 1. On the left sidebar, select **Settings > Merge requests**. - 1. In the **Merge commit message template** section, fill in **Default description template for merge requests**. + 1. In the **Default description template for merge requests** section, fill in the text area. 1. Select **Save changes**. To set a default description template for issues, either: @@ -167,9 +167,9 @@ To set a default description template for issues, either: - Users on GitLab Premium and higher: set the default template in project settings: 1. On the top bar, select **Main menu > Projects** and find your project. - 1. On the left sidebar, select **Settings**. - 1. Expand **Default issue template**. - 1. Fill in the **Default description template for issues** text area. + 1. On the left sidebar, select **Settings > General**. + 1. Expand **Default description template for issues**. + 1. Fill in the text area. 1. Select **Save changes**. Because GitLab merge request and issues support [Markdown](../markdown.md), you can use it to format diff --git a/doc/user/project/import/index.md b/doc/user/project/import/index.md index 41ac5354656..f0d75895e6e 100644 --- a/doc/user/project/import/index.md +++ b/doc/user/project/import/index.md @@ -172,3 +172,14 @@ For more information, see: including settings that need checking afterwards and other limitations. For support, customers must enter into a paid engagement with GitLab Professional Services. + +## Troubleshooting + +### Imported repository is missing branches + +If an imported repository does not contain all branches of the source repository: + +1. Set the [environment variable](../../../administration/logs/index.md#override-default-log-level) `IMPORT_DEBUG=true`. +1. Retry the import with a [different group, subgroup, or project name](https://about.gitlab.com/releases/2023/02/22/gitlab-15-9-released/#re-import-projects-from-external-providers). +1. If some branches are still missing, inspect [`importer.log`](../../../administration/logs/index.md#importerlog) + (for example, with [`jq`](../../../administration/logs/log_parsing.md#parsing-gitlab-railsimporterlog)). diff --git a/doc/user/project/merge_requests/conflicts.md b/doc/user/project/merge_requests/conflicts.md index 932eec5e631..cc8f8cb2fe6 100644 --- a/doc/user/project/merge_requests/conflicts.md +++ b/doc/user/project/merge_requests/conflicts.md @@ -162,9 +162,8 @@ merge commit. Verify it contains no unintended changes and doesn't break your bu ## Related topics -- [Introduction to Git rebase and force-push](../../../topics/git/git_rebase.md). -- [Git GUI apps](https://git-scm.com/downloads/guis) to help you visualize the - differences between branches and resolve them. +- [Introduction to Git rebase and force-push](../../../topics/git/git_rebase.md) +- [Git applications for visualizing the Git workflow](https://git-scm.com/downloads/guis)