diff --git a/.gitlab/ci/as-if-foss.gitlab-ci.yml b/.gitlab/ci/as-if-foss.gitlab-ci.yml
index 110b20bb080..5686be6deea 100644
--- a/.gitlab/ci/as-if-foss.gitlab-ci.yml
+++ b/.gitlab/ci/as-if-foss.gitlab-ci.yml
@@ -84,6 +84,7 @@ start-as-if-foss:
ENABLE_COMPILE_PRODUCTION_ASSETS: $ENABLE_COMPILE_PRODUCTION_ASSETS
ENABLE_COMPILE_STORYBOOK: $ENABLE_COMPILE_STORYBOOK
ENABLE_COMPILE_TEST_ASSETS: $ENABLE_COMPILE_TEST_ASSETS
+ ENABLE_CACHE_ASSETS: $ENABLE_CACHE_ASSETS
ENABLE_ESLINT: $ENABLE_ESLINT
ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA: $ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA
ENABLE_GRAPHQL_SCHEMA_DUMP: $ENABLE_GRAPHQL_SCHEMA_DUMP
diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml
index 4ed021f9c38..dfa20aedb22 100644
--- a/.gitlab/ci/rails/shared.gitlab-ci.yml
+++ b/.gitlab/ci/rails/shared.gitlab-ci.yml
@@ -89,9 +89,10 @@ include:
# in unit tests again.
- rspec_section rspec_parallelized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request"
after_script:
- - echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"
+ - source scripts/utils.sh
- bundle exec gem list gitlab_quality-test_tooling
- |
+ section_start "relate-failure-issue" "Report test failures"
if [ "$CREATE_RAILS_TEST_FAILURE_ISSUES" == "true" ]; then
input_file="rspec/rspec-${CI_JOB_ID}.json"
@@ -108,15 +109,18 @@ include:
--system-log-files "log" \
--related-issues-file "rspec/${CI_JOB_ID}-failed-test-issues.json";
fi
-
+ section_end "relate-failure-issue"
+ - |
+ section_start "flaky-test-issues" "Report test flakiness"
if [ "$CREATE_RAILS_FLAKY_TEST_ISSUES" == "true" ] && [ -f "rspec/rspec-retry-${CI_JOB_ID}.json" ]; then
bundle exec flaky-test-issues \
- --token "${RAILS_FLAKY_TEST_PROJECT_TOKEN}" \
- --project "gitlab-org/quality/engineering-productivity/flaky-tests" \
- --merge_request_iid "$CI_MERGE_REQUEST_IID" \
- --input-files "rspec/rspec-retry-${CI_JOB_ID}.json" || true # We don't want this command to fail the job.
+ --token "${TEST_FAILURES_PROJECT_TOKEN}" \
+ --project "gitlab-org/gitlab" \
+ --input-files "rspec/rspec-retry-${CI_JOB_ID}.json";
fi
-
+ section_end "flaky-test-issues"
+ - |
+ section_start "slow-test-issues" "Report test slowness"
if [ "$CREATE_RAILS_SLOW_TEST_ISSUES" == "true" ]; then
bundle exec slow-test-issues \
--token "${TEST_FAILURES_PROJECT_TOKEN}" \
@@ -124,7 +128,9 @@ include:
--input-files "rspec/rspec-*.json" \
--related-issues-file "rspec/${CI_JOB_ID}-slow-test-issues.json";
fi
-
+ section_end "slow-test-issues"
+ - |
+ section_start "slow-test-merge-request-report-note" "Report test slowness in MR note"
if [ "$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST" == "true" ]; then
bundle exec slow-test-merge-request-report-note \
--token "${TEST_SLOW_NOTE_PROJECT_TOKEN}" \
@@ -132,15 +138,17 @@ include:
--input-files "rspec/rspec-*.json" \
--merge_request_iid "$CI_MERGE_REQUEST_IID";
fi
-
+ section_end "slow-test-merge-request-report-note"
+ - |
+ section_start "knapsack-report-issues" "Report test files close to timing out"
if [ "$ALLOW_KNAPSACK_REPORT_CREATE_ISSUES" == "true" ]; then
bundle exec knapsack-report-issues \
--token "${KNAPSACK_REPORT_ISSUES_PROJECT_TOKEN}" \
--project "gitlab-org/gitlab" \
- --input-file knapsack/rspec_*_report.json \
+ --input-file knapsack/rspec*_report.json \
--expected-report knapsack/node_specs_expected_duration.json;
fi
- - echo -e "\e[0Ksection_end:`date +%s`:report_results_section\r\e[0K"
+ section_end "knapsack-report-issues"
- tooling/bin/push_job_metrics || true
allow_failure:
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 394ae2fa5ad..c78f5e8f547 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -140,6 +140,9 @@
.if-foss-default-branch: &if-foss-default-branch
if: '$CI_PROJECT_PATH == "gitlab-org/gitlab-foss" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH'
+.if-not-dot-com-gitlab-org-and-not-jihulab: &if-not-dot-com-gitlab-org-and-not-jihulab
+ if: '($CI_SERVER_HOST != "gitlab.com" || $CI_PROJECT_NAMESPACE != "gitlab-org") && ($CI_SERVER_HOST != "jihulab.com" || $CI_PROJECT_NAMESPACE != "gitlab-cn")'
+
.if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"'
@@ -1044,7 +1047,7 @@
# The new strategy to cache assets as generic packages is experimental and can be disabled by removing the `CACHE_ASSETS_AS_PACKAGE` variable
- if: '$CACHE_ASSETS_AS_PACKAGE != "true"'
when: never
- - <<: *if-not-ee
+ - <<: *if-not-dot-com-gitlab-org-and-not-jihulab
when: never
# That would run for any project that has a "maintenance" pipeline schedule
# but in fact, the cache package is only uploaded for gitlab.com/gitlab-org/gitlab and jihulab.com/gitlab-cn/gitlab
@@ -1058,6 +1061,9 @@
- "lib/tasks/gitlab/assets.rake"
when: manual
allow_failure: true
+ - if: '$ENABLE_CACHE_ASSETS == "true"'
+ when: manual
+ allow_failure: true
.caching:rules:cache-assets-as-if-foss:
rules:
diff --git a/.gitlab/merge_request_templates/Deprecations.md b/.gitlab/merge_request_templates/Deprecations.md
index fb998dae6c1..e8496a07ac7 100644
--- a/.gitlab/merge_request_templates/Deprecations.md
+++ b/.gitlab/merge_request_templates/Deprecations.md
@@ -28,7 +28,7 @@ Deprecation announcements can and should be created and merged into Docs at any
Please review:
- The definitions of ["Deprecation", "End of Support", and "Removal"](https://docs.gitlab.com/ee/development/deprecation_guidelines/).
-- The [guidelines for deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
+- The [guidelines for deprecations](https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
- The process for [creating a deprecation announcement](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-the-announcement).
They are frequently updated, and everyone should make sure they are aware of the current standards (PM, PMM, EM, and TW).
diff --git a/.markdownlint.yml b/.markdownlint.yml
index a5e24bcdc40..d6fe0c60732 100644
--- a/.markdownlint.yml
+++ b/.markdownlint.yml
@@ -153,8 +153,6 @@ proper-names: # MD044
"unicorn-worker-killer",
"URL",
"WebdriverIO",
- "Workload Identity Pool",
- "Workload Identity Provider",
"YAML",
"YouTrack"
]
diff --git a/Gemfile b/Gemfile
index 06d09b1abca..dd5bbe0ed9d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -215,7 +215,7 @@ gem 'typhoeus', '~> 1.4.0' # Used with Elasticsearch to support http keep-alive
# Markdown and HTML processing
gem 'html-pipeline', '~> 2.14.3', feature_category: :team_planning
-gem 'deckar01-task_list', '2.3.3', feature_category: :team_planning
+gem 'deckar01-task_list', '2.3.4', feature_category: :team_planning
gem 'gitlab-markup', '~> 1.9.0', require: 'github/markup' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'commonmarker', '~> 0.23.10', feature_category: :team_planning
gem 'kramdown', '~> 2.3.1' # rubocop:todo Gemfile/MissingFeatureCategory
@@ -504,7 +504,7 @@ group :test do
gem 'rspec_profiling', '~> 0.0.8', feature_category: :tooling
gem 'rspec-benchmark', '~> 0.6.0', feature_category: :tooling
gem 'rspec-parameterized', '~> 1.0', require: false, feature_category: :tooling
- gem 'os', '~> 1.1', feature_category: :tooling
+ gem 'os', '~> 1.1', '>= 1.1.4', feature_category: :tooling
gem 'capybara', '~> 3.40' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'capybara-screenshot', '~> 1.0.26' # rubocop:todo Gemfile/MissingFeatureCategory
diff --git a/Gemfile.checksum b/Gemfile.checksum
index e5e549ade23..bfce01860b2 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -108,7 +108,7 @@
{"name":"dead_end","version":"3.1.1","platform":"ruby","checksum":"1011df7f7c0149be004e11cbbc37747760227c55305cd902fd3c06e1394b2f5b"},
{"name":"deb_version","version":"1.0.2","platform":"ruby","checksum":"c21f911d7f2fd1d61219caae254fc078e6598e477fdff8a05a18bec6c72ee713"},
{"name":"debug_inspector","version":"1.1.0","platform":"ruby","checksum":"eaa5a2d0195e1d65fb4164e8e7e466cca2e7eb53bc5e608cf12b8bf02c3a8606"},
-{"name":"deckar01-task_list","version":"2.3.3","platform":"ruby","checksum":"918abaf3f81e6c0d224c2b7bef593d7f84ee5847a0692726d24e3fb272c2c758"},
+{"name":"deckar01-task_list","version":"2.3.4","platform":"ruby","checksum":"66abdc7e009ea759732bb53867e1ea42de550e2aa03ac30a015cbf42a04c1667"},
{"name":"declarative","version":"0.0.20","platform":"ruby","checksum":"8021dd6cb17ab2b61233c56903d3f5a259c5cf43c80ff332d447d395b17d9ff9"},
{"name":"declarative_policy","version":"1.1.0","platform":"ruby","checksum":"9af4cf299ade03f2bbf63908f2ce6a117d132fc714c39a128596667fb13331cb"},
{"name":"deprecation_toolkit","version":"1.5.1","platform":"ruby","checksum":"a8a1ab1a19ae40ea12560b65010e099f3459ebde390b76621ef0c21c516a04ba"},
diff --git a/Gemfile.lock b/Gemfile.lock
index bb89ae3b7b4..119b3734346 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -463,8 +463,8 @@ GEM
dead_end (3.1.1)
deb_version (1.0.2)
debug_inspector (1.1.0)
- deckar01-task_list (2.3.3)
- html-pipeline
+ deckar01-task_list (2.3.4)
+ html-pipeline (~> 2.0)
declarative (0.0.20)
declarative_policy (1.1.0)
deprecation_toolkit (1.5.1)
@@ -1865,7 +1865,7 @@ DEPENDENCIES
csv_builder!
cvss-suite (~> 3.0.1)
database_cleaner-active_record (~> 2.1.0)
- deckar01-task_list (= 2.3.3)
+ deckar01-task_list (= 2.3.4)
declarative_policy (~> 1.1.0)
deprecation_toolkit (~> 1.5.1)
derailed_benchmarks
@@ -2036,7 +2036,7 @@ DEPENDENCIES
openid_connect (= 1.3.0)
openssl (~> 3.0)
org-ruby (~> 0.9.12)
- os (~> 1.1)
+ os (~> 1.1, >= 1.1.4)
pact (~> 1.64)
parallel (~> 1.19)
parser (~> 3.3, >= 3.3.0.2)
diff --git a/app/assets/javascripts/content_editor/services/autocomplete_helper.js b/app/assets/javascripts/content_editor/services/autocomplete_helper.js
index 4bafe486fef..233367a5096 100644
--- a/app/assets/javascripts/content_editor/services/autocomplete_helper.js
+++ b/app/assets/javascripts/content_editor/services/autocomplete_helper.js
@@ -120,7 +120,7 @@ export default class AutocompleteHelper {
constructor({ dataSourceUrls, sidebarMediator }) {
this.dataSourceUrls = !isEmpty(dataSourceUrls)
? dataSourceUrls
- : gl.GfmAutoComplete?.dataSources;
+ : gl.GfmAutoComplete?.dataSources || {};
this.sidebarMediator = sidebarMediator;
diff --git a/app/assets/javascripts/pages/projects/usage_quotas/index.js b/app/assets/javascripts/pages/projects/usage_quotas/index.js
index d907b8a470d..52dfaf1e22d 100644
--- a/app/assets/javascripts/pages/projects/usage_quotas/index.js
+++ b/app/assets/javascripts/pages/projects/usage_quotas/index.js
@@ -1,21 +1,4 @@
-import initProjectStorage from '~/usage_quotas/storage/init_project_storage';
-import initSearchSettings from '~/search_settings';
-import { GlTabsBehavior, HISTORY_TYPE_HASH } from '~/tabs';
+import initUsageQuotas from '~/usage_quotas';
+import { PROJECT_VIEW_TYPE } from '~/usage_quotas/constants';
-const initGlTabs = () => {
- const tabsEl = document.getElementById('js-project-usage-quotas-tabs');
- if (!tabsEl) {
- return;
- }
-
- // eslint-disable-next-line no-new
- new GlTabsBehavior(tabsEl, { history: HISTORY_TYPE_HASH });
-};
-
-const initVueApp = () => {
- initProjectStorage('js-project-storage-count-app');
-};
-
-initGlTabs();
-initVueApp();
-initSearchSettings();
+initUsageQuotas(PROJECT_VIEW_TYPE);
diff --git a/app/assets/javascripts/usage_quotas/constants.js b/app/assets/javascripts/usage_quotas/constants.js
index b41459b1b41..a6dfe13d1fe 100644
--- a/app/assets/javascripts/usage_quotas/constants.js
+++ b/app/assets/javascripts/usage_quotas/constants.js
@@ -2,4 +2,4 @@ export const GROUP_VIEW_TYPE = 'group_view';
export const PROJECT_VIEW_TYPE = 'project_view';
export const PROFILE_VIEW_TYPE = 'profile_view';
-export const STORAGE_TAB_METADATA_EL_SELECTOR = '#js-namespace-storage-app';
+export const STORAGE_TAB_METADATA_EL_SELECTOR = '#js-storage-usage-app';
diff --git a/app/assets/javascripts/usage_quotas/group_view_metadata.js b/app/assets/javascripts/usage_quotas/group_view_metadata.js
index 5e762a779a0..7f00e30528e 100644
--- a/app/assets/javascripts/usage_quotas/group_view_metadata.js
+++ b/app/assets/javascripts/usage_quotas/group_view_metadata.js
@@ -1,3 +1,6 @@
+import { GROUP_VIEW_TYPE } from './constants';
import { getStorageTabMetadata } from './storage/tab_metadata';
-export const usageQuotasTabsMetadata = [getStorageTabMetadata()].filter(Boolean);
+export const usageQuotasTabsMetadata = [
+ getStorageTabMetadata({ viewType: GROUP_VIEW_TYPE }),
+].filter(Boolean);
diff --git a/app/assets/javascripts/usage_quotas/index.js b/app/assets/javascripts/usage_quotas/index.js
index 5993c8ee1d1..4cf67eb92a5 100644
--- a/app/assets/javascripts/usage_quotas/index.js
+++ b/app/assets/javascripts/usage_quotas/index.js
@@ -1,14 +1,19 @@
import Vue from 'vue';
import { usageQuotasTabsMetadata as groupViewTabsMetadata } from 'ee_else_ce/usage_quotas/group_view_metadata';
import { usageQuotasTabsMetadata as profileViewTabsMetadata } from 'ee_else_ce/usage_quotas/profile_view_metadata';
+import { usageQuotasTabsMetadata as projectViewTabsMetadata } from 'ee_else_ce/usage_quotas/project_view_metadata';
import UsageQuotasApp from './components/usage_quotas_app.vue';
-import { GROUP_VIEW_TYPE, PROFILE_VIEW_TYPE } from './constants';
+import { GROUP_VIEW_TYPE, PROJECT_VIEW_TYPE, PROFILE_VIEW_TYPE } from './constants';
const getViewTabs = (viewType) => {
if (viewType === GROUP_VIEW_TYPE) {
return groupViewTabsMetadata;
}
+ if (viewType === PROJECT_VIEW_TYPE) {
+ return projectViewTabsMetadata;
+ }
+
if (viewType === PROFILE_VIEW_TYPE) {
return profileViewTabsMetadata;
}
diff --git a/app/assets/javascripts/usage_quotas/project_view_metadata.js b/app/assets/javascripts/usage_quotas/project_view_metadata.js
new file mode 100644
index 00000000000..47c720c1bda
--- /dev/null
+++ b/app/assets/javascripts/usage_quotas/project_view_metadata.js
@@ -0,0 +1,6 @@
+import { PROJECT_VIEW_TYPE } from './constants';
+import { getStorageTabMetadata } from './storage/tab_metadata';
+
+export const usageQuotasTabsMetadata = [
+ getStorageTabMetadata({ viewType: PROJECT_VIEW_TYPE }),
+].filter(Boolean);
diff --git a/app/assets/javascripts/usage_quotas/storage/tab_metadata.js b/app/assets/javascripts/usage_quotas/storage/tab_metadata.js
index d0c730da3b6..3e4fbada976 100644
--- a/app/assets/javascripts/usage_quotas/storage/tab_metadata.js
+++ b/app/assets/javascripts/usage_quotas/storage/tab_metadata.js
@@ -2,13 +2,50 @@ import Vue from 'vue';
import VueApollo from 'vue-apollo';
import { __ } from '~/locale';
import createDefaultClient from '~/lib/graphql';
-import { parseProvideData } from 'ee_else_ce/usage_quotas/storage/utils';
-import { STORAGE_TAB_METADATA_EL_SELECTOR } from '../constants';
+import { parseNamespaceProvideData } from 'ee_else_ce/usage_quotas/storage/utils';
+import {
+ GROUP_VIEW_TYPE,
+ PROJECT_VIEW_TYPE,
+ PROFILE_VIEW_TYPE,
+ STORAGE_TAB_METADATA_EL_SELECTOR,
+} from '../constants';
import NamespaceStorageApp from './components/namespace_storage_app.vue';
+import ProjectStorageApp from './components/project_storage_app.vue';
-export const getStorageTabMetadata = ({ includeEl = false, customApolloProvider = null } = {}) => {
+const parseProjectProvideData = (el) => {
+ const { projectPath } = el.dataset;
+
+ return {
+ projectPath,
+ };
+};
+
+const getViewSpecificOptions = (viewType) => {
+ if (viewType === GROUP_VIEW_TYPE || viewType === PROFILE_VIEW_TYPE) {
+ return {
+ vueComponent: NamespaceStorageApp,
+ parseProvideData: parseNamespaceProvideData,
+ };
+ }
+
+ if (viewType === PROJECT_VIEW_TYPE) {
+ return {
+ vueComponent: ProjectStorageApp,
+ parseProvideData: parseProjectProvideData,
+ };
+ }
+
+ return {};
+};
+
+export const getStorageTabMetadata = ({
+ viewType = null,
+ includeEl = false,
+ customApolloProvider = null,
+} = {}) => {
let apolloProvider;
const el = document.querySelector(STORAGE_TAB_METADATA_EL_SELECTOR);
+ const { vueComponent, parseProvideData } = getViewSpecificOptions(viewType);
if (!el) return false;
@@ -30,7 +67,7 @@ export const getStorageTabMetadata = ({ includeEl = false, customApolloProvider
provide: parseProvideData(el),
apolloProvider,
render(createElement) {
- return createElement(NamespaceStorageApp);
+ return createElement(vueComponent);
},
},
};
diff --git a/app/assets/javascripts/usage_quotas/storage/utils.js b/app/assets/javascripts/usage_quotas/storage/utils.js
index 35415ad11dc..6800c272a2a 100644
--- a/app/assets/javascripts/usage_quotas/storage/utils.js
+++ b/app/assets/javascripts/usage_quotas/storage/utils.js
@@ -84,7 +84,7 @@ export const parseGetStorageResults = (data) => {
};
};
-export const parseProvideData = (el) => {
+export const parseNamespaceProvideData = (el) => {
if (!el) {
return {};
}
diff --git a/app/mailers/emails/remote_mirrors.rb b/app/mailers/emails/remote_mirrors.rb
index 791ab7103b4..81bf621e3b3 100644
--- a/app/mailers/emails/remote_mirrors.rb
+++ b/app/mailers/emails/remote_mirrors.rb
@@ -5,6 +5,7 @@ module Emails
def remote_mirror_update_failed_email(remote_mirror_id, recipient_id)
@remote_mirror = RemoteMirror.find_by_id(remote_mirror_id)
@project = @remote_mirror.project
+ @target_url = project_settings_repository_url(@project, anchor: 'js-mirror-settings')
user = User.find(recipient_id)
mail_with_locale(to: user.notification_email_for(@project.group), subject: subject('Remote mirror update failed'))
diff --git a/app/models/event.rb b/app/models/event.rb
index 1ad08518b27..1e2704f2c68 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -94,14 +94,14 @@ class Event < ApplicationRecord
scope :created_between, ->(start_time, end_time) { where(created_at: start_time..end_time) }
scope :count_by_dates, ->(date_interval) { group("DATE(created_at + #{date_interval})").count }
- scope :contributions, ->(target_types: nil) do
+ scope :contributions, -> do
contribution_actions = [actions[:pushed], actions[:commented]]
target_contribution_actions = [actions[:created], actions[:closed], actions[:merged], actions[:approved]]
where(
'action IN (?) OR (target_type IN (?) AND action IN (?))',
contribution_actions,
- target_types || contributable_target_types, target_contribution_actions
+ CONTRIBUTABLE_TARGET_TYPES, target_contribution_actions
)
end
@@ -144,10 +144,6 @@ class Event < ApplicationRecord
end
end
- def contributable_target_types
- CONTRIBUTABLE_TARGET_TYPES
- end
-
def limit_recent(limit = 20, offset = nil)
recent.limit(limit).offset(offset)
end
diff --git a/app/serializers/stage_entity.rb b/app/serializers/stage_entity.rb
index 49f7a04155c..60cf8dc7473 100644
--- a/app/serializers/stage_entity.rb
+++ b/app/serializers/stage_entity.rb
@@ -67,10 +67,7 @@ class StageEntity < Grape::Entity
end
def preload_metadata(statuses)
- relations = [:metadata, :pipeline]
- if Feature.enabled?(:preload_ci_bridge_downstream_pipelines, stage.pipeline.project, type: :gitlab_com_derisk)
- relations << { downstream_pipeline: [:user, { project: [:route, { namespace: :route }] }] }
- end
+ relations = [:metadata, :pipeline, { downstream_pipeline: [:user, { project: [:route, { namespace: :route }] }] }]
Preloaders::CommitStatusPreloader.new(statuses).execute(relations)
diff --git a/app/services/ci/trigger_downstream_pipeline_service.rb b/app/services/ci/trigger_downstream_pipeline_service.rb
index 4fc09fd7492..05f69613536 100644
--- a/app/services/ci/trigger_downstream_pipeline_service.rb
+++ b/app/services/ci/trigger_downstream_pipeline_service.rb
@@ -15,7 +15,7 @@ module Ci
return ServiceResponse.success(message: 'Does not trigger a downstream pipeline')
end
- if rate_limit_throttled? && enforce_rate_limit?
+ if rate_limit_throttled?
bridge.drop!(:reached_downstream_pipeline_trigger_rate_limit)
return ServiceResponse.error(message: 'Reached downstream pipeline trigger rate limit')
@@ -49,9 +49,5 @@ module Ci
message: 'Activated downstream pipeline trigger rate limit'
)
end
-
- def enforce_rate_limit?
- ::Feature.enabled?(:ci_rate_limit_downstream_pipelines, project, type: :gitlab_com_derisk)
- end
end
end
diff --git a/app/views/groups/usage_quotas/index.html.haml b/app/views/groups/usage_quotas/index.html.haml
index 16f5fe3137a..9f56e980eea 100644
--- a/app/views/groups/usage_quotas/index.html.haml
+++ b/app/views/groups/usage_quotas/index.html.haml
@@ -14,4 +14,4 @@
.gl-font-lg.gl--flex-center
%span.gl-mr-1= s_('UsageQuota|Loading Usage Quotas tabs')
= render Pajamas::SpinnerComponent.new(inline: true, size: :md)
- #js-namespace-storage-app{ data: storage_usage_app_data(@group) }
+ #js-storage-usage-app{ data: storage_usage_app_data(@group) }
diff --git a/app/views/notify/remote_mirror_update_failed_email.html.haml b/app/views/notify/remote_mirror_update_failed_email.html.haml
index db95398d2d6..eb299e77790 100644
--- a/app/views/notify/remote_mirror_update_failed_email.html.haml
+++ b/app/views/notify/remote_mirror_update_failed_email.html.haml
@@ -16,7 +16,7 @@
%tbody{ style: "font-size:15px;line-height:1.4;color:#8c8c8c;" }
%tr
%td{ style: "font-weight:300;padding:14px 0;margin:0;" }
- = _('Project')
+ = _('Source project')
%td{ style: "font-weight:500;padding:14px 0;margin:0;color:#333333;width:75%;padding-left:5px;" }
- namespace_url = @project.group ? group_url(@project.group) : user_url(@project.namespace.owner)
%a.muted{ href: namespace_url, style: "color:#333333;text-decoration:none;" }
diff --git a/app/views/notify/remote_mirror_update_failed_email.text.erb b/app/views/notify/remote_mirror_update_failed_email.text.erb
index c6f29f0ad1c..239dd76aee1 100644
--- a/app/views/notify/remote_mirror_update_failed_email.text.erb
+++ b/app/views/notify/remote_mirror_update_failed_email.text.erb
@@ -1,6 +1,6 @@
A remote mirror update has failed.
-Project: <%= @project.human_name %> ( <%= project_url(@project) %> )
+Source Project: <%= @project.human_name %> ( <%= project_url(@project) %> )
Remote mirror: <%= @remote_mirror.safe_url %>
Last update at: <%= @remote_mirror.last_update_at %>
Last error:
diff --git a/app/views/projects/usage_quotas/index.html.haml b/app/views/projects/usage_quotas/index.html.haml
index 039df9738ff..54e131579dd 100644
--- a/app/views/projects/usage_quotas/index.html.haml
+++ b/app/views/projects/usage_quotas/index.html.haml
@@ -13,16 +13,16 @@
.row
.col-sm-12
%p.gl-text-secondary
- = s_('UsageQuota|Usage of project resources across the %{strong_start}%{project_name}%{strong_end} project').html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe, project_name: @project.name } + '.'
+ = safe_format(s_('UsageQuota|Usage of project resources across the %{strong_start}%{project_name}%{strong_end} project.'),
+ { project_name: @project.name },
+ tag_pair(tag.strong, :strong_start, :strong_end))
%a{ href: help_page_path('user/usage_quotas'), target: '_blank', rel: 'noopener noreferrer' }
- = s_('UsageQuota|Learn more about usage quotas') + '.'
+ = s_('UsageQuota|Learn more about usage quotas.')
-= gl_tabs_nav({ id: 'js-project-usage-quotas-tabs' }) do
- = gl_tab_link_to '#storage-quota-tab', item_active: true do
- = s_('UsageQuota|Storage')
- = render_if_exists 'projects/usage_quotas/transfer_tab_link'
-
-.tab-content
- .tab-pane.active#storage-quota-tab
- #js-project-storage-count-app{ data: { project_path: @project.full_path } }
+#js-usage-quotas-view
+ .gl-font-lg.gl--flex-center
+ %span.gl-mr-1= s_('UsageQuota|Loading Usage Quotas tabs')
+ = render Pajamas::SpinnerComponent.new(inline: true, size: :md)
+ #js-storage-usage-app{ data: { project_path: @project.full_path } }
= render_if_exists 'projects/usage_quotas/transfer_tab_content'
+
diff --git a/config/feature_flags/gitlab_com_derisk/ci_rate_limit_downstream_pipelines.yml b/config/feature_flags/gitlab_com_derisk/ci_rate_limit_downstream_pipelines.yml
deleted file mode 100644
index 8f4fa323f7b..00000000000
--- a/config/feature_flags/gitlab_com_derisk/ci_rate_limit_downstream_pipelines.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: ci_rate_limit_downstream_pipelines
-feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/425941
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142869
-rollout_issue_url: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17471
-milestone: '16.9'
-group: group::pipeline authoring
-type: gitlab_com_derisk
-default_enabled: false
diff --git a/config/feature_flags/gitlab_com_derisk/preload_ci_bridge_downstream_pipelines.yml b/config/feature_flags/gitlab_com_derisk/preload_ci_bridge_downstream_pipelines.yml
deleted file mode 100644
index 846e49291db..00000000000
--- a/config/feature_flags/gitlab_com_derisk/preload_ci_bridge_downstream_pipelines.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: preload_ci_bridge_downstream_pipelines
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142199
-rollout_issue_url: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17473
-milestone: '16.9'
-group: 'group::pipeline execution'
-type: gitlab_com_derisk
-default_enabled: false
diff --git a/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml b/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
index 67d2c94e776..f8cf481f3b0 100644
--- a/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
+++ b/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
@@ -6,7 +6,7 @@
body: | # Do not modify this line, instead modify the lines below.
The [required pipeline configuration](https://docs.gitlab.com/ee/administration/settings/continuous_integration.html#required-pipeline-configuration) feature is deprecated in GitLab 14.8 for Premium customers and is scheduled for removal in GitLab 15.0. This feature is not deprecated for GitLab Ultimate customers.
- This change to move the feature to GitLab's Ultimate tier is intended to help our features better align with our [pricing philosophy](https://about.gitlab.com/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
+ This change to move the feature to GitLab's Ultimate tier is intended to help our features better align with our [pricing philosophy](https://handbook.gitlab.com/handbook/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
This change will also help GitLab remain consistent in its tiering strategy with the other related Ultimate-tier features of:
[Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration).
diff --git a/data/deprecations/14-8-iteration-started-field.yml b/data/deprecations/14-8-iteration-started-field.yml
index a591aa04db4..8150467d5c5 100644
--- a/data/deprecations/14-8-iteration-started-field.yml
+++ b/data/deprecations/14-8-iteration-started-field.yml
@@ -5,7 +5,7 @@
removal_date: "2022-05-22" # The date of the milestone release when this feature was first announced as deprecated. This should almost always be the 22nd of a month (YYYY-MM-22), unless you did an out of band blog post.
breaking_change: true # If this deprecation is a breaking change, set this value to true
body: | # Do not modify this line, instead modify the lines below.
- The `started` iteration state in the [iterations GraphQL API](https://https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
+ The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
and [iterations REST API](https://docs.gitlab.com/ee/api/iterations.html#list-project-iterations) is deprecated.
The GraphQL API version will be removed in GitLab 16.0. This state is being replaced with the `current` state (already available)
diff --git a/data/deprecations/14-8-sast-analyzer-removals.yml b/data/deprecations/14-8-sast-analyzer-removals.yml
index 427833d569e..20fdf3b0a3c 100644
--- a/data/deprecations/14-8-sast-analyzer-removals.yml
+++ b/data/deprecations/14-8-sast-analyzer-removals.yml
@@ -7,7 +7,7 @@
GitLab SAST uses various [analyzers](https://docs.gitlab.com/ee/user/application_security/sast/analyzers/) to scan code for vulnerabilities.
We are reducing the number of analyzers used in GitLab SAST as part of our long-term strategy to deliver a better and more consistent user experience.
- Streamlining the set of analyzers will also enable faster [iteration](https://about.gitlab.com/handbook/values/#iteration), better [results](https://about.gitlab.com/handbook/values/#results), and greater [efficiency](https://about.gitlab.com/handbook/values/#efficiency) (including a reduction in CI runner usage in most cases).
+ Streamlining the set of analyzers will also enable faster [iteration](https://handbook.gitlab.com/handbook/values/#iteration), better [results](https://handbook.gitlab.com/handbook/values/#results), and greater [efficiency](https://handbook.gitlab.com/handbook/values/#efficiency) (including a reduction in CI runner usage in most cases).
In GitLab 15.4, GitLab SAST will no longer use the following analyzers:
@@ -21,7 +21,7 @@
These analyzers will be removed from the [GitLab-managed SAST CI/CD template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml) and replaced with the [Semgrep-based analyzer](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep).
Effective immediately, they will receive only security updates; other routine improvements or updates are not guaranteed.
After these analyzers reach End of Support, no further updates will be provided.
- We will not delete container images previously published for these analyzers; any such change would be announced as a [deprecation, removal, or breaking change announcement](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
+ We will not delete container images previously published for these analyzers; any such change would be announced as a [deprecation, removal, or breaking change announcement](https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
We will also remove Java from the scope of the [SpotBugs](https://gitlab.com/gitlab-org/security-products/analyzers/spotbugs) analyzer and replace it with the [Semgrep-based analyzer](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep).
This change will make it simpler to scan Java code; compilation will no longer be required.
diff --git a/data/deprecations/15-0-deprecate-monitor-metrics.yml b/data/deprecations/15-0-deprecate-monitor-metrics.yml
index e10dba0c8e0..5e0abd4a3ef 100644
--- a/data/deprecations/15-0-deprecate-monitor-metrics.yml
+++ b/data/deprecations/15-0-deprecate-monitor-metrics.yml
@@ -4,7 +4,7 @@
breaking_change: true # If this deprecation is a breaking change, set this value to true
body: | # Do not modify this line, instead modify the lines below.
By displaying data stored in a Prometheus instance, GitLab allows users to view performance metrics. GitLab also displays visualizations of these metrics in dashboards. The user can connect to a previously-configured external Prometheus instance, or set up Prometheus as a GitLab Managed App.
- However, since certificate-based integration with Kubernetes clusters is deprecated in GitLab, the metrics functionality in GitLab that relies on Prometheus is also deprecated. This includes the metrics visualizations in dashboards. GitLab is working to develop a single user experience based on [Opstrace](https://about.gitlab.com/press/releases/2021-12-14-gitlab-acquires-opstrace-to-expand-its-devops-platform-with-open-source-observability-solution.html). An [issue exists](https://gitlab.com/groups/gitlab-org/-/epics/6976) for you to follow work on the Opstrace integration.
+ However, since certificate-based integration with Kubernetes clusters is deprecated in GitLab, the metrics functionality in GitLab that relies on Prometheus is also deprecated. This includes the metrics visualizations in dashboards. GitLab is working to develop a single user experience based on [Opstrace](https://about.gitlab.com/press/releases/2021-12-14-gitlab-acquires-opstrace-to-expand-its-devops-platform-with-open-source-observability-solution/). An [issue exists](https://gitlab.com/groups/gitlab-org/-/epics/6976) for you to follow work on the Opstrace integration.
# The following items are not published on the docs page, but may be used in the future.
stage: Monitor # (optional - may be required in the future) String value of the stage that the feature was created in. e.g., Growth
tiers: [Free] # (optional - may be required in the future) An array of tiers that the feature is available in currently. e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
diff --git a/data/deprecations/15-10-grafana-chart.yml b/data/deprecations/15-10-grafana-chart.yml
index ac66aca7910..94e21a141b1 100644
--- a/data/deprecations/15-10-grafana-chart.yml
+++ b/data/deprecations/15-10-grafana-chart.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-10-helm-chart-updates.yml b/data/deprecations/15-10-helm-chart-updates.yml
index 08be6fd477c..cc24c66e2a4 100644
--- a/data/deprecations/15-10-helm-chart-updates.yml
+++ b/data/deprecations/15-10-helm-chart-updates.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-10-omniauth-dingtalk.yml b/data/deprecations/15-10-omniauth-dingtalk.yml
index a591b619146..c16d757f21a 100644
--- a/data/deprecations/15-10-omniauth-dingtalk.yml
+++ b/data/deprecations/15-10-omniauth-dingtalk.yml
@@ -9,7 +9,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-11-geo-project-redownload.yml b/data/deprecations/15-11-geo-project-redownload.yml
index 229bab04b0a..afb140bc5e8 100644
--- a/data/deprecations/15-11-geo-project-redownload.yml
+++ b/data/deprecations/15-11-geo-project-redownload.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-2-job_age-deprecation.yml b/data/deprecations/15-2-job_age-deprecation.yml
index c4b2d5bb683..39287bce412 100644
--- a/data/deprecations/15-2-job_age-deprecation.yml
+++ b/data/deprecations/15-2-job_age-deprecation.yml
@@ -1,22 +1,3 @@
-# This is a template for a feature deprecation.
-#
-# Please refer to the deprecation guidelines to confirm your understanding of GitLab's definitions.
-# https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology
-#
-# Deprecations must be announced at least three releases prior to removal.
-#
-# If an End of Support period applies, the announcement should be shared with GitLab Support
-# in the `#spt_managers` on Slack and mention `@gitlab-com/support` in this MR.
-#
-# Breaking changes must happen in a major release.
-#
-# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations
-#
-# Please delete this line and above before submitting your merge request.
-#
-# REQUIRED FIELDS
-#
- title: "Remove `job_age` parameter from `POST /jobs/request` Runner endpoint" # (required) The name of the feature to be deprecated
announcement_milestone: "15.2" # (required) The milestone when this feature was first announced as deprecated.
removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
diff --git a/data/deprecations/15-3-pipeline_activity_limit.yml b/data/deprecations/15-3-pipeline_activity_limit.yml
index c0e37292d06..86b122b2c5d 100644
--- a/data/deprecations/15-3-pipeline_activity_limit.yml
+++ b/data/deprecations/15-3-pipeline_activity_limit.yml
@@ -1,22 +1,3 @@
-# This is a template for a feature deprecation.
-#
-# Please refer to the deprecation guidelines to confirm your understanding of GitLab's definitions.
-# https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology
-#
-# Deprecations must be announced at least three releases prior to removal.
-#
-# If an End of Support period applies, the announcement should be shared with GitLab Support
-# in the `#spt_managers` on Slack and mention `@gitlab-com/support` in this MR.
-#
-# Breaking changes must happen in a major release.
-#
-# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations
-#
-# Please delete this line and above before submitting your merge request.
-#
-# REQUIRED FIELDS
-#
- title: "Maximum number of active pipelines per project limit (`ci_active_pipelines`)" # (required) The name of the feature to be deprecated
announcement_milestone: "15.3" # (required) The milestone when this feature was first announced as deprecated.
removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
diff --git a/data/deprecations/15-7-deprecate-phabricator-importer.yml b/data/deprecations/15-7-deprecate-phabricator-importer.yml
index fa2c643e9b7..7024a4b142b 100644
--- a/data/deprecations/15-7-deprecate-phabricator-importer.yml
+++ b/data/deprecations/15-7-deprecate-phabricator-importer.yml
@@ -3,8 +3,8 @@
removal_milestone: '16.0'
breaking_change: true
body: |
- The [Phabricator task importer](https://docs.gitlab.com/ee/user/project/import/phabricator.html) is being deprecated. Phabricator itself as a project is no longer actively maintained since June 1, 2021. We haven't observed imports using this tool. There has been no activity on the open related issues on GitLab.
+ The Phabricator task importer is being deprecated. Phabricator itself as a project is no longer actively maintained since June 1, 2021. We haven't observed imports using this tool. There has been no activity on the open related issues on GitLab.
stage: manage
tiers:
issue_url: https://gitlab.com/gitlab-com/Product/-/issues/4894
- documentation_url: https://docs.gitlab.com/ee/user/project/import/phabricator.html
+ documentation_url: https://docs.gitlab.com/ee/user/project/import/
diff --git a/data/deprecations/15-8-deprecate-import-bare-repositories-rake-task.yml b/data/deprecations/15-8-deprecate-import-bare-repositories-rake-task.yml
index 5619a52ef34..3eaf7988a71 100644
--- a/data/deprecations/15-8-deprecate-import-bare-repositories-rake-task.yml
+++ b/data/deprecations/15-8-deprecate-import-bare-repositories-rake-task.yml
@@ -5,7 +5,7 @@
removal_date: '2023-05-22'
breaking_change: false
body: |
- The [Rake task for importing bare repositories](https://docs.gitlab.com/ee/raketasks/import.html) `gitlab:import:repos` is deprecated in GitLab 15.8 and will be removed in GitLab 16.0.
+ The Rake task for importing bare repositories (`gitlab:import:repos`) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0.
This Rake task imports a directory tree of repositories into a GitLab instance. These repositories must have been
managed by GitLab previously, because the Rake task relies on the specific directory structure or a specific custom Git setting in order to work (`gitlab.fullpath`).
@@ -21,8 +21,8 @@
- Migrating projects using either [an export file](https://docs.gitlab.com/ee/user/project/settings/import_export.html) or
[direct transfer](https://docs.gitlab.com/ee/user/group/import/#migrate-groups-by-direct-transfer-recommended) migrate repositories as well.
- Importing a [repository by URL](https://docs.gitlab.com/ee/user/project/import/repo_by_url.html).
- - Importing a [repositories from a non-GitLab source](https://docs.gitlab.com/ee/user/project/import/).
+ - Importing [repositories from a non-GitLab source](https://docs.gitlab.com/ee/user/project/import/).
stage: manage
tiers:
issue_url: https://gitlab.com/gitlab-com/Product/-/issues/5255
- documentation_url: https://docs.gitlab.com/ee/raketasks/import.html
+ documentation_url: https://docs.gitlab.com/ee/user/project/import/
diff --git a/data/deprecations/15-8-deprecate-updated-at-error.yml b/data/deprecations/15-8-deprecate-updated-at-error.yml
index 6985803c12e..3c205159eb1 100644
--- a/data/deprecations/15-8-deprecate-updated-at-error.yml
+++ b/data/deprecations/15-8-deprecate-updated-at-error.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-8-projects-api-ops-access-level.yml b/data/deprecations/15-8-projects-api-ops-access-level.yml
index 06fb1b76232..857e19f74a1 100644
--- a/data/deprecations/15-8-projects-api-ops-access-level.yml
+++ b/data/deprecations/15-8-projects-api-ops-access-level.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/15-8-pull-through-cache-container-registry.yml b/data/deprecations/15-8-pull-through-cache-container-registry.yml
index 18c17f321ff..3271aecbef9 100644
--- a/data/deprecations/15-8-pull-through-cache-container-registry.yml
+++ b/data/deprecations/15-8-pull-through-cache-container-registry.yml
@@ -6,4 +6,4 @@
stage: Package # (required) String value of the stage that the feature was created in. e.g., Growth
issue_url: https://gitlab.com/gitlab-org/container-registry/-/issues/842 # (required) Link to the deprecation issue in GitLab
body: | # (required) Do not modify this line, instead modify the lines below.
- The container registry [pull-through cache](https://docs.docker.com/registry/recipes/mirror/) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0. The pull-through cache is part of the upstream [Docker Distribution project](https://github.com/distribution/distribution). However, we are removing the pull-through cache in favor of the GitLab Dependency Proxy, which allows you to proxy and cache container images from Docker Hub. Removing the pull-through cache allows us also to remove the upstream client code without sacrificing functionality.
+ The container registry [pull-through cache](https://docs.docker.com/docker-hub/mirror/) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0. The pull-through cache is part of the upstream [Docker Distribution project](https://github.com/distribution/distribution). However, we are removing the pull-through cache in favor of the GitLab Dependency Proxy, which allows you to proxy and cache container images from Docker Hub. Removing the pull-through cache allows us also to remove the upstream client code without sacrificing functionality.
diff --git a/data/deprecations/15-8-third-party-registries.yml b/data/deprecations/15-8-third-party-registries.yml
index 6607835c675..23325ad053b 100644
--- a/data/deprecations/15-8-third-party-registries.yml
+++ b/data/deprecations/15-8-third-party-registries.yml
@@ -8,7 +8,7 @@
body: | # (required) Do not modify this line, instead modify the lines below.
Using third-party container registries with GitLab as an auth endpoint is deprecated in GitLab 15.8 and the [end of support](https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology) is scheduled for GitLab 16.0. This impacts self-managed customers that have connected their external registry to the GitLab user interface to find, view, and delete container images.
- Supporting both GitLab's container registry as well as third-party container registries is challenging for maintenance, code quality, and backward compatibility. This hinders our ability to stay [efficient](https://about.gitlab.com/handbook/values/#efficiency). As a result we will not support this functionality moving forward.
+ Supporting both GitLab's container registry as well as third-party container registries is challenging for maintenance, code quality, and backward compatibility. This hinders our ability to stay [efficient](https://handbook.gitlab.com/handbook/values/#efficiency). As a result we will not support this functionality moving forward.
This change will not impact your ability to pull and push container images to external registries using pipelines.
diff --git a/data/deprecations/15-9-managed-licenses-api.yml b/data/deprecations/15-9-managed-licenses-api.yml
index cbba35c465c..d4938b4885d 100644
--- a/data/deprecations/15-9-managed-licenses-api.yml
+++ b/data/deprecations/15-9-managed-licenses-api.yml
@@ -6,4 +6,4 @@
stage: govern
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/390417
body: |
- The [Managed Licenses API](https://docs.gitlab.com/ee/api/managed_licenses.html) is now deprecated and is scheduled for removal in GitLab 16.0.
+ The Managed Licenses API is now deprecated and is scheduled for removal in GitLab 16.0.
diff --git a/data/deprecations/15-9-trigger-job-status.yml b/data/deprecations/15-9-trigger-job-status.yml
index fb9d93bfb81..d7c25561e7a 100644
--- a/data/deprecations/15-9-trigger-job-status.yml
+++ b/data/deprecations/15-9-trigger-job-status.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/16-0-Vault-integration.yml b/data/deprecations/16-0-Vault-integration.yml
index 422852a5477..2f484e15f77 100644
--- a/data/deprecations/16-0-Vault-integration.yml
+++ b/data/deprecations/16-0-Vault-integration.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/16-0-deprecate-omnibus-grafana.yml b/data/deprecations/16-0-deprecate-omnibus-grafana.yml
index 4035c3ce44a..c7feaa887a4 100644
--- a/data/deprecations/16-0-deprecate-omnibus-grafana.yml
+++ b/data/deprecations/16-0-deprecate-omnibus-grafana.yml
@@ -6,7 +6,7 @@
stage: Enablement
issue_url: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/7772
body: | # (required) Do not modify this line, instead modify the lines below.
- The version of [Grafana bundled with Omnibus GitLab](https://docs.gitlab.com/omnibus/settings/grafana.html) is
+ The version of Grafana bundled with Omnibus GitLab is
[deprecated and disabled](https://docs.gitlab.com/ee/administration/monitoring/performance/grafana_configuration.html#deprecation-of-bundled-grafana)
in 16.0 and will be removed in 16.3. If you are using the bundled Grafana, you must migrate to either:
diff --git a/data/deprecations/16-0-deprecate-postgresql-13.yml b/data/deprecations/16-0-deprecate-postgresql-13.yml
index 828f9e64ab8..ef52582d732 100644
--- a/data/deprecations/16-0-deprecate-postgresql-13.yml
+++ b/data/deprecations/16-0-deprecate-postgresql-13.yml
@@ -6,7 +6,7 @@
stage: Enablement
issue_url: https://gitlab.com/groups/gitlab-org/-/epics/9065
body: |
- GitLab follows an [annual upgrade cadence for PostgreSQL](https://about.gitlab.com/handbook/engineering/development/enablement/data_stores/database/postgresql-upgrade-cadence.html).
+ GitLab follows an [annual upgrade cadence for PostgreSQL](https://handbook.gitlab.com/handbook/engineering/infrastructure/core-platform/data_stores/database/postgresql-upgrade-cadence/).
Support for PostgreSQL 13 is scheduled for removal in GitLab 17.0.
In GitLab 17.0, PostgreSQL 14 becomes the minimum required PostgreSQL version.
diff --git a/data/deprecations/16-0-fail_null_vault_secrets.yml b/data/deprecations/16-0-fail_null_vault_secrets.yml
index c3639717e65..c48d7002e9c 100644
--- a/data/deprecations/16-0-fail_null_vault_secrets.yml
+++ b/data/deprecations/16-0-fail_null_vault_secrets.yml
@@ -11,7 +11,7 @@
# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
#
# Please delete this line and above before submitting your merge request.
#
diff --git a/data/deprecations/16-0-post-ci-lint.yml b/data/deprecations/16-0-post-ci-lint.yml
index 407b0124a83..3b5535c64a4 100644
--- a/data/deprecations/16-0-post-ci-lint.yml
+++ b/data/deprecations/16-0-post-ci-lint.yml
@@ -1,21 +1,3 @@
-# This is a template for a feature deprecation.
-#
-# Please refer to the deprecation guidelines to confirm your understanding of the
-# definitions for "Deprecation", "End of Support", and "Removal":
-# https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology
-#
-# Deprecations must be announced at least three releases prior to removal.
-# See the OPTIONAL END OF SUPPORT FIELDS section below if an End of Support period also applies.
-#
-# Breaking changes must happen in a major release.
-#
-# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations
-#
-# Please delete this line and above before submitting your merge request.
-#
-# REQUIRED FIELDS
-#
- title: "`POST ci/lint` API endpoint deprecated" # (required) The name of the feature to be deprecated
announcement_milestone: "15.7" # (required) The milestone when this feature was first announced as deprecated.
removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
diff --git a/data/deprecations/16-4_support_for_delete_tags_endpoint.yml b/data/deprecations/16-4_support_for_delete_tags_endpoint.yml
index ccaf26e4a4f..d2b3a2c59f9 100644
--- a/data/deprecations/16-4_support_for_delete_tags_endpoint.yml
+++ b/data/deprecations/16-4_support_for_delete_tags_endpoint.yml
@@ -6,7 +6,7 @@
stage: Package # (required) String value of the stage that the feature was created in. e.g., Growth
issue_url: https://gitlab.com/gitlab-org/container-registry/-/issues/1094 # (required) Link to the deprecation issue in GitLab
body: | # (required) Do not modify this line, instead modify the lines below.
- The [Docker Registry HTTP API V2 Spec](https://docs.docker.com/registry/spec/api/), later replaced by the [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec/blob/main/spec.md) did not include a tag delete operation, and an unsafe and slow workaround (involving deleting manifests, not tags) had to be used to achieve the same end.
+ The Docker Registry HTTP API V2 Spec, later replaced by the [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec/blob/main/spec.md) did not include a tag delete operation, and an unsafe and slow workaround (involving deleting manifests, not tags) had to be used to achieve the same end.
Tag deletion is an important function, so we added a tag deletion operation to the GitLab container registry, extending the V2 API beyond the scope of the Docker and OCI distribution spec.
diff --git a/data/deprecations/templates/_deprecation_template.md.erb b/data/deprecations/templates/_deprecation_template.md.erb
index 9fb703da44b..631def08a8b 100644
--- a/data/deprecations/templates/_deprecation_template.md.erb
+++ b/data/deprecations/templates/_deprecation_template.md.erb
@@ -37,14 +37,14 @@ For deprecation authors (usually Product Managers and Engineering Managers):
- To add a deprecation, use the example.yml file in `/data/deprecations/templates` as a template.
- For more information about authoring deprecations, check the the deprecation item guidance:
- https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-and-removals-docs
+ https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc
For deprecation reviewers (Technical Writers only):
- To update the deprecation doc, run: `bin/rake gitlab:docs:compile_deprecations`
- To verify the deprecations doc is up to date, run: `bin/rake gitlab:docs:check_deprecations`
- For more information about updating the deprecation doc, see the deprecation doc update guidance:
- https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-and-removals-docs
+ https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc
-->
{::options parse_block_html="true" /}
diff --git a/data/deprecations/templates/example.yml b/data/deprecations/templates/example.yml
index e6b8982b3c0..156ab1e4dc8 100644
--- a/data/deprecations/templates/example.yml
+++ b/data/deprecations/templates/example.yml
@@ -8,7 +8,7 @@
# If an End of Support period applies, see the OPTIONAL section below.
#
# For more information, see the handbook:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-and-other-planned-breaking-change-announcements
# ===================
# REQUIRED FIELDS
diff --git a/data/whats_new/202206220001_15_1.yml b/data/whats_new/202206220001_15_1.yml
index 4a57db233b9..eae52721e69 100644
--- a/data/whats_new/202206220001_15_1.yml
+++ b/data/whats_new/202206220001_15_1.yml
@@ -5,7 +5,7 @@
# and what types we expect those attribute values to be. All attributes are required.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/index.html#create-mr-for-whats-new-entries
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#creating-an-mr-for-whats-new-entries
#
# Please delete this line and above before submitting your merge request.
diff --git a/data/whats_new/templates/YYYYMMDD0001_XX_YY.yml b/data/whats_new/templates/YYYYMMDD0001_XX_YY.yml
index 691db083301..3a5fd158aff 100644
--- a/data/whats_new/templates/YYYYMMDD0001_XX_YY.yml
+++ b/data/whats_new/templates/YYYYMMDD0001_XX_YY.yml
@@ -5,7 +5,7 @@
# and what types we expect those attribute values to be. All attributes are required.
#
# For more information please refer to the handbook documentation here:
-# https://about.gitlab.com/handbook/marketing/blog/release-posts/index.html#create-mr-for-whats-new-entries
+# https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#creating-an-mr-for-whats-new-entries
#
# Please delete this line and above before submitting your merge request.
diff --git a/doc/administration/settings/continuous_integration.md b/doc/administration/settings/continuous_integration.md
index 469d2915778..925d4ca4777 100644
--- a/doc/administration/settings/continuous_integration.md
+++ b/doc/administration/settings/continuous_integration.md
@@ -207,7 +207,7 @@ The default is `150`.
## Maximum downstream pipeline trigger rate
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144077) in GitLab 16.10 [with feature flag](../feature_flags.md) named `ci_rate_limit_downstream_pipelines`. Disabled by default.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144077) in GitLab 16.10.
The maximum number of [downstream pipelines](../../ci/pipelines/downstream_pipelines.md) that can be triggered per minute
(for a given project, user, and commit) can be set at the instance level.
diff --git a/doc/api/integrations.md b/doc/api/integrations.md
index bd5717f62a2..0edbf42195f 100644
--- a/doc/api/integrations.md
+++ b/doc/api/integrations.md
@@ -293,11 +293,14 @@ Get the Buildkite integration settings for a project.
GET /projects/:id/integrations/buildkite
```
-## Campfire
+## Campfire Classic
-### Set up Campfire
+You can integrate with Campfire Classic. Note that Campfire Classic is an old product that is
+[no longer sold](https://gitlab.com/gitlab-org/gitlab/-/issues/329337) by Basecamp.
-Set up the Campfire integration for a project.
+### Set up Campfire Classic
+
+Set up the Campfire Classic integration for a project.
```plaintext
PUT /projects/:id/integrations/campfire
@@ -307,21 +310,21 @@ Parameters:
| Parameter | Type | Required | Description |
|---------------|---------|----------|---------------------------------------------------------------------------------------------|
-| `token` | string | true | API authentication token from Campfire. To get the token, sign in to Campfire and select **My info**. |
+| `token` | string | true | API authentication token from Campfire Classic. To get the token, sign in to Campfire Classic and select **My info**. |
| `subdomain` | string | false | `.campfirenow.com` subdomain when you're signed in. |
-| `room` | string | false | ID portion of the Campfire room URL. |
+| `room` | string | false | ID portion of the Campfire Classic room URL. |
-### Disable Campfire
+### Disable Campfire Classic
-Disable the Campfire integration for a project. Integration settings are reset.
+Disable the Campfire Classic integration for a project. Integration settings are reset.
```plaintext
DELETE /projects/:id/integrations/campfire
```
-### Get Campfire settings
+### Get Campfire Classic settings
-Get the Campfire integration settings for a project.
+Get the Campfire Classic integration settings for a project.
```plaintext
GET /projects/:id/integrations/campfire
diff --git a/doc/api/settings.md b/doc/api/settings.md
index 7fb30deb79a..af26dd90121 100644
--- a/doc/api/settings.md
+++ b/doc/api/settings.md
@@ -393,7 +393,7 @@ listed in the descriptions of the relevant settings.
| `domain_denylist_enabled` | boolean | no | (**If enabled, requires:** `domain_denylist`) Allows blocking sign-ups from emails from specific domains. |
| `domain_denylist` | array of strings | no | Users with email addresses that match these domains **cannot** sign up. Wildcards allowed. Use separate lines for multiple entries. For example: `domain.com`, `*.domain.com`. |
| `domain_allowlist` | array of strings | no | Force people to use only corporate emails for sign-up. Default is `null`, meaning there is no restriction. |
-| `downstream_pipeline_trigger_limit_per_project_user_sha` | integer | no | [Maximum downstream pipeline trigger rate](../administration/settings/continuous_integration.md#maximum-downstream-pipeline-trigger-rate). Default: `0`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144077) in GitLab 16.10 with a [flag](../administration/feature_flags.md) named `ci_rate_limit_downstream_pipelines`. Disabled by default. |
+| `downstream_pipeline_trigger_limit_per_project_user_sha` | integer | no | [Maximum downstream pipeline trigger rate](../administration/settings/continuous_integration.md#maximum-downstream-pipeline-trigger-rate). Default: `0`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144077) in GitLab 16.10. |
| `dsa_key_restriction` | integer | no | The minimum allowed bit length of an uploaded DSA key. Default is `0` (no restriction). `-1` disables DSA keys. |
| `ecdsa_key_restriction` | integer | no | The minimum allowed curve size (in bits) of an uploaded ECDSA key. Default is `0` (no restriction). `-1` disables ECDSA keys. |
| `ecdsa_sk_key_restriction` | integer | no | The minimum allowed curve size (in bits) of an uploaded ECDSA_SK key. Default is `0` (no restriction). `-1` disables ECDSA_SK keys. |
diff --git a/doc/architecture/blueprints/secret_detection/index.md b/doc/architecture/blueprints/secret_detection/index.md
index c7b485fcbc4..3fef1abcc9f 100644
--- a/doc/architecture/blueprints/secret_detection/index.md
+++ b/doc/architecture/blueprints/secret_detection/index.md
@@ -1,11 +1,11 @@
---
status: ongoing
creation-date: "2022-11-25"
-authors: [ "@theoretick" ]
-coach: "@DylanGriffith"
+authors: [ "@theoretick", "@vbhat161", "@ahmed.hemdan" ]
+coach: [ "@theoretick" ]
approvers: [ "@connorgilbert", "@amarpatel" ]
owning-stage: "~devops::secure"
-participating-stages: []
+participating-stages: [ "~devops::systems" ]
---
diff --git a/doc/ci/environments/index.md b/doc/ci/environments/index.md
index 8e8f5ebc845..bb3480f2622 100644
--- a/doc/ci/environments/index.md
+++ b/doc/ci/environments/index.md
@@ -1003,11 +1003,15 @@ See [Deployment-only access to protected environments](protected_environments.md
### The job with `action: stop` doesn't run
-In some cases, environments do not [stop when a branch is deleted](#stop-an-environment-when-a-branch-is-deleted).
+In some cases, environments do not stop despite an `on_stop` job being configured. This happens when the job
+with the `action: stop` is not in a runnable state due to its `stages:` or `needs:` configuration.
-For example, the environment might start in a stage that also has a job that failed.
+For example:
+
+- The environment might start in a stage that also has a job that failed.
Then the jobs in later stages job don't start. If the job with the `action: stop`
for the environment is also in a later stage, it can't start and the environment isn't deleted.
+- The job with the `action: stop` might have a dependency on a job that has not yet completed.
To ensure the `action: stop` can always run when needed, you can:
diff --git a/doc/ci/runners/runners_scope.md b/doc/ci/runners/runners_scope.md
index a64f8d7acda..5d3f966c22d 100644
--- a/doc/ci/runners/runners_scope.md
+++ b/doc/ci/runners/runners_scope.md
@@ -661,6 +661,6 @@ you must have the Owner role for the
project.
1. Go to the project's **Settings > CI/CD** and expand the **Runners** section.
-1. On the details page you should see a row for **IP Address**.
+1. Select the runner name and find the **IP Address** row.

diff --git a/doc/update/deprecations.md b/doc/update/deprecations.md
index 93f47792d2e..2dffdf1a7fc 100644
--- a/doc/update/deprecations.md
+++ b/doc/update/deprecations.md
@@ -37,14 +37,14 @@ For deprecation authors (usually Product Managers and Engineering Managers):
- To add a deprecation, use the example.yml file in `/data/deprecations/templates` as a template.
- For more information about authoring deprecations, check the the deprecation item guidance:
- https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-and-removals-docs
+ https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc
For deprecation reviewers (Technical Writers only):
- To update the deprecation doc, run: `bin/rake gitlab:docs:compile_deprecations`
- To verify the deprecations doc is up to date, run: `bin/rake gitlab:docs:check_deprecations`
- For more information about updating the deprecation doc, see the deprecation doc update guidance:
- https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-and-removals-docs
+ https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc
-->
{::options parse_block_html="true" /}
@@ -1233,7 +1233,7 @@ set `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER` to `heroku/builder:20`.
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/container-registry/-/issues/1094).
-The [Docker Registry HTTP API V2 Spec](https://docs.docker.com/registry/spec/api/), later replaced by the [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec/blob/main/spec.md) did not include a tag delete operation, and an unsafe and slow workaround (involving deleting manifests, not tags) had to be used to achieve the same end.
+The Docker Registry HTTP API V2 Spec, later replaced by the [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec/blob/main/spec.md) did not include a tag delete operation, and an unsafe and slow workaround (involving deleting manifests, not tags) had to be used to achieve the same end.
Tag deletion is an important function, so we added a tag deletion operation to the GitLab container registry, extending the V2 API beyond the scope of the Docker and OCI distribution spec.
@@ -1529,7 +1529,7 @@ The [`project_fingerprint`](https://gitlab.com/groups/gitlab-org/-/epics/2791) a
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/groups/gitlab-org/-/epics/9065).
-GitLab follows an [annual upgrade cadence for PostgreSQL](https://about.gitlab.com/handbook/engineering/development/enablement/data_stores/database/postgresql-upgrade-cadence.html).
+GitLab follows an [annual upgrade cadence for PostgreSQL](https://handbook.gitlab.com/handbook/engineering/infrastructure/core-platform/data_stores/database/postgresql-upgrade-cadence/).
Support for PostgreSQL 13 is scheduled for removal in GitLab 17.0.
In GitLab 17.0, PostgreSQL 14 becomes the minimum required PostgreSQL version.
@@ -2346,7 +2346,7 @@ As a result, the following Rake tasks that relied on legacy code have also been
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/7772).
-The version of [Grafana bundled with Omnibus GitLab](https://docs.gitlab.com/omnibus/settings/grafana.html) is
+The version of Grafana bundled with Omnibus GitLab is
[deprecated and disabled](https://docs.gitlab.com/ee/administration/monitoring/performance/grafana_configuration.html#deprecation-of-bundled-grafana)
in 16.0 and will be removed in 16.3. If you are using the bundled Grafana, you must migrate to either:
@@ -2647,7 +2647,7 @@ All Container Scanning variables that are prefixed by `DOCKER_` in variable name
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/container-registry/-/issues/842).
-The container registry [pull-through cache](https://docs.docker.com/registry/recipes/mirror/) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0. The pull-through cache is part of the upstream [Docker Distribution project](https://github.com/distribution/distribution). However, we are removing the pull-through cache in favor of the GitLab Dependency Proxy, which allows you to proxy and cache container images from Docker Hub. Removing the pull-through cache allows us also to remove the upstream client code without sacrificing functionality.
+The container registry [pull-through cache](https://docs.docker.com/docker-hub/mirror/) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0. The pull-through cache is part of the upstream [Docker Distribution project](https://github.com/distribution/distribution). However, we are removing the pull-through cache in favor of the GitLab Dependency Proxy, which allows you to proxy and cache container images from Docker Hub. Removing the pull-through cache allows us also to remove the upstream client code without sacrificing functionality.
@@ -3207,7 +3207,7 @@ The full GitLab Helm Chart 7.0 upgrade steps will be available in the [upgrade d
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/390417).
-The [Managed Licenses API](https://docs.gitlab.com/ee/api/managed_licenses.html) is now deprecated and is scheduled for removal in GitLab 16.0.
+The Managed Licenses API is now deprecated and is scheduled for removal in GitLab 16.0.
@@ -3239,7 +3239,7 @@ The [**Maximum number of active pipelines per project** limit](https://docs.gitl
By displaying data stored in a Prometheus instance, GitLab allows users to view performance metrics. GitLab also displays visualizations of these metrics in dashboards. The user can connect to a previously-configured external Prometheus instance, or set up Prometheus as a GitLab Managed App.
-However, since certificate-based integration with Kubernetes clusters is deprecated in GitLab, the metrics functionality in GitLab that relies on Prometheus is also deprecated. This includes the metrics visualizations in dashboards. GitLab is working to develop a single user experience based on [Opstrace](https://about.gitlab.com/press/releases/2021-12-14-gitlab-acquires-opstrace-to-expand-its-devops-platform-with-open-source-observability-solution.html). An [issue exists](https://gitlab.com/groups/gitlab-org/-/epics/6976) for you to follow work on the Opstrace integration.
+However, since certificate-based integration with Kubernetes clusters is deprecated in GitLab, the metrics functionality in GitLab that relies on Prometheus is also deprecated. This includes the metrics visualizations in dashboards. GitLab is working to develop a single user experience based on [Opstrace](https://about.gitlab.com/press/releases/2021-12-14-gitlab-acquires-opstrace-to-expand-its-devops-platform-with-open-source-observability-solution/). An [issue exists](https://gitlab.com/groups/gitlab-org/-/epics/6976) for you to follow work on the Opstrace integration.
@@ -3367,7 +3367,7 @@ We are deprecating the `operations_access_level` field in the Projects API. This
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-com/Product/-/issues/5255).
-The [Rake task for importing bare repositories](https://docs.gitlab.com/ee/raketasks/import.html) `gitlab:import:repos` is deprecated in GitLab 15.8 and will be removed in GitLab 16.0.
+The Rake task for importing bare repositories (`gitlab:import:repos`) is deprecated in GitLab 15.8 and will be removed in GitLab 16.0.
This Rake task imports a directory tree of repositories into a GitLab instance. These repositories must have been
managed by GitLab previously, because the Rake task relies on the specific directory structure or a specific custom Git setting in order to work (`gitlab.fullpath`).
@@ -3383,7 +3383,7 @@ Alternatives to using the `gitlab:import:repos` Rake task include:
- Migrating projects using either [an export file](https://docs.gitlab.com/ee/user/project/settings/import_export.html) or
[direct transfer](https://docs.gitlab.com/ee/user/group/import/#migrate-groups-by-direct-transfer-recommended) migrate repositories as well.
- Importing a [repository by URL](https://docs.gitlab.com/ee/user/project/import/repo_by_url.html).
-- Importing a [repositories from a non-GitLab source](https://docs.gitlab.com/ee/user/project/import/).
+- Importing [repositories from a non-GitLab source](https://docs.gitlab.com/ee/user/project/import/).
@@ -3667,7 +3667,7 @@ This change affects the following REST and GraphQL API endpoints:
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-com/Product/-/issues/4894).
-The [Phabricator task importer](https://docs.gitlab.com/ee/user/project/import/phabricator.html) is being deprecated. Phabricator itself as a project is no longer actively maintained since June 1, 2021. We haven't observed imports using this tool. There has been no activity on the open related issues on GitLab.
+The Phabricator task importer is being deprecated. Phabricator itself as a project is no longer actively maintained since June 1, 2021. We haven't observed imports using this tool. There has been no activity on the open related issues on GitLab.
@@ -3748,7 +3748,7 @@ You can use the vulnerabilityFindingDismiss GraphQL mutation to set the status o
Using third-party container registries with GitLab as an auth endpoint is deprecated in GitLab 15.8 and the [end of support](https://docs.gitlab.com/ee/development/deprecation_guidelines/#terminology) is scheduled for GitLab 16.0. This impacts self-managed customers that have connected their external registry to the GitLab user interface to find, view, and delete container images.
-Supporting both GitLab's container registry as well as third-party container registries is challenging for maintenance, code quality, and backward compatibility. This hinders our ability to stay [efficient](https://about.gitlab.com/handbook/values/#efficiency). As a result we will not support this functionality moving forward.
+Supporting both GitLab's container registry as well as third-party container registries is challenging for maintenance, code quality, and backward compatibility. This hinders our ability to stay [efficient](https://handbook.gitlab.com/handbook/values/#efficiency). As a result we will not support this functionality moving forward.
This change will not impact your ability to pull and push container images to external registries using pipelines.
@@ -3861,7 +3861,7 @@ To avoid confusion and duplication, the `environment_tier` parameter is deprecat
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/334018).
-The `started` iteration state in the [iterations GraphQL API](https://https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
+The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
and [iterations REST API](https://docs.gitlab.com/ee/api/iterations.html#list-project-iterations) is deprecated.
The GraphQL API version will be removed in GitLab 16.0. This state is being replaced with the `current` state (already available)
@@ -4084,7 +4084,7 @@ This is not expected to cause any incompatibilities with the previous version of
GitLab SAST uses various [analyzers](https://docs.gitlab.com/ee/user/application_security/sast/analyzers/) to scan code for vulnerabilities.
We are reducing the number of analyzers used in GitLab SAST as part of our long-term strategy to deliver a better and more consistent user experience.
-Streamlining the set of analyzers will also enable faster [iteration](https://about.gitlab.com/handbook/values/#iteration), better [results](https://about.gitlab.com/handbook/values/#results), and greater [efficiency](https://about.gitlab.com/handbook/values/#efficiency) (including a reduction in CI runner usage in most cases).
+Streamlining the set of analyzers will also enable faster [iteration](https://handbook.gitlab.com/handbook/values/#iteration), better [results](https://handbook.gitlab.com/handbook/values/#results), and greater [efficiency](https://handbook.gitlab.com/handbook/values/#efficiency) (including a reduction in CI runner usage in most cases).
In GitLab 15.4, GitLab SAST will no longer use the following analyzers:
@@ -4098,7 +4098,7 @@ This change was originally planned for GitLab 15.0 and was postponed to GitLab 1
These analyzers will be removed from the [GitLab-managed SAST CI/CD template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml) and replaced with the [Semgrep-based analyzer](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep).
Effective immediately, they will receive only security updates; other routine improvements or updates are not guaranteed.
After these analyzers reach End of Support, no further updates will be provided.
-We will not delete container images previously published for these analyzers; any such change would be announced as a [deprecation, removal, or breaking change announcement](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
+We will not delete container images previously published for these analyzers; any such change would be announced as a [deprecation, removal, or breaking change announcement](https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes).
We will also remove Java from the scope of the [SpotBugs](https://gitlab.com/gitlab-org/security-products/analyzers/spotbugs) analyzer and replace it with the [Semgrep-based analyzer](https://gitlab.com/gitlab-org/security-products/analyzers/semgrep).
This change will make it simpler to scan Java code; compilation will no longer be required.
@@ -4938,7 +4938,7 @@ For more information, check the [summary section of the deprecation issue](https
The [required pipeline configuration](https://docs.gitlab.com/ee/administration/settings/continuous_integration.html#required-pipeline-configuration) feature is deprecated in GitLab 14.8 for Premium customers and is scheduled for removal in GitLab 15.0. This feature is not deprecated for GitLab Ultimate customers.
-This change to move the feature to GitLab's Ultimate tier is intended to help our features better align with our [pricing philosophy](https://about.gitlab.com/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
+This change to move the feature to GitLab's Ultimate tier is intended to help our features better align with our [pricing philosophy](https://handbook.gitlab.com/handbook/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
This change will also help GitLab remain consistent in its tiering strategy with the other related Ultimate-tier features of:
[Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration).
diff --git a/doc/user/analytics/dora_metrics.md b/doc/user/analytics/dora_metrics.md
index c49d411d354..31f2d128ca8 100644
--- a/doc/user/analytics/dora_metrics.md
+++ b/doc/user/analytics/dora_metrics.md
@@ -115,12 +115,13 @@ High change failure rate may indicate an inefficient deployment process or insuf
### How change failure rate is calculated
In GitLab, change failure rate is measured as the percentage of deployments that cause an incident in production in the given time period.
-GitLab calculates this as the number of incidents divided by the number of deployments to a production environment. This assumes:
+GitLab calculates change failure rate as the number of incidents divided by the number of deployments to a production environment. This calculation assumes:
- [GitLab incidents](../../operations/incident_management/incidents.md) are tracked.
-- All incidents are related to a production environment.
-- Incidents and deployments have a strictly one-to-one relationship. An incident is related to only one production deployment, and any production deployment is related to no
- more than one incident.
+- All incidents are production incidents, regardless of the environment.
+- Change failure rate is used primarily as high-level stability tracking, which is why in a given day, all incidents and deployments are aggregated into a joined daily rate. Adding specific relations between deployments and incidents is proposed in [issue 444295](https://gitlab.com/gitlab-org/gitlab/-/issues/444295).
+
+For example, if you have 10 deployments (considering one deployment per day) with two incidents on the first day and one incident on the last day, then your change failure rate is 0.3.
### How to improve change failure rate
diff --git a/doc/user/group/access_and_permissions.md b/doc/user/group/access_and_permissions.md
index 28a2612c7ec..612da1ad572 100644
--- a/doc/user/group/access_and_permissions.md
+++ b/doc/user/group/access_and_permissions.md
@@ -225,12 +225,14 @@ DETAILS:
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/216987) in GitLab 13.3.
By default, projects in a group can be forked.
-Optionally, on [GitLab Premium and Ultimate tiers](https://about.gitlab.com/pricing/),
+In [GitLab Premium and Ultimate tiers](https://about.gitlab.com/pricing/),
you can prevent the projects in a group from being forked outside of the current top-level group.
-This setting is removed from the SAML setting page, and migrated to the
-group settings page. In the interim period, both of these settings are taken into consideration.
-If even one is set to `true`, then the group does not allow outside forks.
+Prerequisites:
+
+- This setting is enabled on the top-level group only.
+- All subgroups inherit this setting from the top-level group, and it cannot be
+ changed at the subgroup level.
To prevent projects from being forked outside the group:
diff --git a/doc/user/project/settings/project_features_permissions.md b/doc/user/project/settings/project_features_permissions.md
index 0b14b744b17..da345ca4891 100644
--- a/doc/user/project/settings/project_features_permissions.md
+++ b/doc/user/project/settings/project_features_permissions.md
@@ -137,8 +137,9 @@ You can assign a topic to several projects.
For example, you can create and assign the topics `python` and `hackathon` to all projects that use Python and are intended for Hackathon contributions.
-Topics assigned to a project are listed in the **Project overview**, below the project name and activity information.
+Topics assigned to a project are displayed in the **Project overview** and [**Projects**](../working_with_projects.md#view-all-projects-for-the-instance) lists, below the project information description.
+NOTE:
Only users with access to the project can see the topics assigned to that project,
but everyone (including unauthenticated users) can see the topics available on the GitLab instance.
Do not include sensitive information in the name of a topic.
@@ -149,28 +150,30 @@ To explore project topics:
1. On the left sidebar, select **Search or go to**.
1. Select **Explore**.
-1. On the left sidebar, select **Topics**.
-1. To view projects associated with a topic, select a topic.
-
-The **Explore topics** page shows a list of projects with this topic.
+1. On the left sidebar, select **Topics**. The **Explore topics** page displays a list of all project topics.
+1. Optional. To filter topics by name, in the search box, enter your search criteria.
+1. To view the projects associated with a topic, select a topic.
+ You can also access a topic page with the URL `https://gitlab.com/explore/projects/topics/`.
### Filter and sort topics
-You can filter the list of projects that have a certain topic by:
+On the project topic page, you can filter the list of projects that have that topic by:
- Name
- Language
-- Owner
-- Archive status
- Visibility
+- Owner
+- Archived projects
-You can sort the projects by:
+You can also sort the projects by:
-- Date created
-- Date updated
+- Date
- Name
- Number of stars
+- To filter projects by name, in the search box, enter your search criteria.
+- To sort projects by other criteria, from the dropdown lists, select an option.
+
### Subscribe to a topic
If you want to know when new projects are added to a topic, you can use its RSS feed.
diff --git a/lib/banzai/filter/task_list_filter.rb b/lib/banzai/filter/task_list_filter.rb
index 4f39a25ff68..595f1590611 100644
--- a/lib/banzai/filter/task_list_filter.rb
+++ b/lib/banzai/filter/task_list_filter.rb
@@ -37,7 +37,7 @@ module Banzai
# Pattern used to identify all task list items.
# Useful when you need iterate over all items.
NEWITEMPATTERN = /
- ^
+ \A
(?:\s*[-+*]|(?:\d+\.))? # optional list prefix
\s* # optional whitespace prefix
( # checkbox
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index d2058b1dd49..9998275b143 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -53992,9 +53992,6 @@ msgstr ""
msgid "UsageQuota|Job artifacts created by CI/CD."
msgstr ""
-msgid "UsageQuota|Learn more about usage quotas"
-msgstr ""
-
msgid "UsageQuota|Learn more about usage quotas."
msgstr ""
@@ -54151,7 +54148,7 @@ msgstr ""
msgid "UsageQuota|Usage of group resources across the projects in the %{strong_start}%{group_name}%{strong_end} group"
msgstr ""
-msgid "UsageQuota|Usage of project resources across the %{strong_start}%{project_name}%{strong_end} project"
+msgid "UsageQuota|Usage of project resources across the %{strong_start}%{project_name}%{strong_end} project."
msgstr ""
msgid "UsageQuota|Usage of resources across your projects"
diff --git a/package.json b/package.json
index cb9c044d114..fae67583e1f 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"@gitlab/favicon-overlay": "2.0.0",
"@gitlab/fonts": "^1.3.0",
"@gitlab/svgs": "3.88.0",
- "@gitlab/ui": "77.1.0",
+ "@gitlab/ui": "77.6.0",
"@gitlab/visual-review-tools": "1.7.3",
"@gitlab/web-ide": "^0.0.1-dev-20240226152102",
"@mattiasbuelens/web-streams-adapter": "^0.1.0",
diff --git a/scripts/gitlab_component_helpers.sh b/scripts/gitlab_component_helpers.sh
index 3d9f996e7c0..e16770760ff 100644
--- a/scripts/gitlab_component_helpers.sh
+++ b/scripts/gitlab_component_helpers.sh
@@ -8,13 +8,19 @@ source scripts/packages/helpers.sh
export CURL_TOKEN_HEADER="${CURL_TOKEN_HEADER:-"JOB-TOKEN"}"
export GITLAB_COM_CANONICAL_PROJECT_ID="278964" # https://gitlab.com/gitlab-org/gitlab
+export GITLAB_COM_CANONICAL_FOSS_PROJECT_ID="13083" # https://gitlab.com/gitlab-org/gitlab-foss
export JIHULAB_COM_CANONICAL_PROJECT_ID="13953" # https://jihulab.com/gitlab-cn/gitlab
export CANONICAL_PROJECT_ID="${GITLAB_COM_CANONICAL_PROJECT_ID}"
# By default, we only want to store/retrieve packages from GitLab.com...
export API_V4_URL="https://gitlab.com/api/v4"
-# Unless we're in the JiHu project, which needs to use its own package registry
+# If it's a FOSS repository, it needs to use FOSS package registry
+if [[ ! -d "ee/" ]]; then
+ export CANONICAL_PROJECT_ID="${GITLAB_COM_CANONICAL_FOSS_PROJECT_ID}"
+fi
+
+# If it's in the JiHu project, it needs to use its own package registry
if [[ "${CI_SERVER_HOST}" = "jihulab.com" ]]; then
export API_V4_URL="${CI_API_V4_URL}"
export CANONICAL_PROJECT_ID="${JIHULAB_COM_CANONICAL_PROJECT_ID}"
diff --git a/scripts/setup/generate-as-if-foss-env.rb b/scripts/setup/generate-as-if-foss-env.rb
index e0a3dbddd74..71db2101f0c 100755
--- a/scripts/setup/generate-as-if-foss-env.rb
+++ b/scripts/setup/generate-as-if-foss-env.rb
@@ -74,13 +74,15 @@ class GenerateAsIfFossEnv
end
def detect_other_jobs(job)
+ # rubocop:disable Lint/AssignmentInCondition -- More clear without this cop
if FOSS_JOBS.member?(job.name)
other_jobs << job.name
- else
- jest_type = job.name[%r{^(jest(?:-\w+)?)(?: \d+/\d+)?$}, 1]
-
- other_jobs << jest_type if jest_type
+ elsif jest_type = job.name[%r{^(jest(?:-\w+)?)(?: \d+/\d+)?$}, 1]
+ other_jobs << jest_type
+ elsif cache_assets_type = job.name[%r{^(cache-assets)\b}, 1]
+ other_jobs << cache_assets_type
end
+ # rubocop:enable Lint/AssignmentInCondition
end
def rspec_variables
diff --git a/spec/frontend/clusters_list/components/clusters_actions_spec.js b/spec/frontend/clusters_list/components/clusters_actions_spec.js
index 6957862dc2b..5265d092181 100644
--- a/spec/frontend/clusters_list/components/clusters_actions_spec.js
+++ b/spec/frontend/clusters_list/components/clusters_actions_spec.js
@@ -5,7 +5,7 @@ import {
GlTooltip,
GlButtonGroup,
} from '@gitlab/ui';
-import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
+import { mountExtended } from 'helpers/vue_test_utils_helper';
import ClustersActions from '~/clusters_list/components/clusters_actions.vue';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
import { INSTALL_AGENT_MODAL_ID, CLUSTERS_ACTIONS } from '~/clusters_list/constants';
@@ -36,7 +36,7 @@ describe('ClustersActionsComponent', () => {
const findConnectClusterLink = () => wrapper.findByTestId('connect-cluster-link');
const createWrapper = (provideData = {}) => {
- wrapper = shallowMountExtended(ClustersActions, {
+ wrapper = mountExtended(ClustersActions, {
provide: {
...defaultProvide,
...provideData,
diff --git a/spec/frontend/content_editor/services/autocomplete_helper_spec.js b/spec/frontend/content_editor/services/autocomplete_helper_spec.js
index abbc60c2288..ab2ec2aa83b 100644
--- a/spec/frontend/content_editor/services/autocomplete_helper_spec.js
+++ b/spec/frontend/content_editor/services/autocomplete_helper_spec.js
@@ -19,7 +19,10 @@ import {
MOCK_REVIEWERS,
} from './autocomplete_mock_data';
-jest.mock('~/emoji');
+jest.mock('~/emoji', () => ({
+ initEmojiMap: () => jest.fn(),
+ getAllEmoji: () => [{ name: 'thumbsup' }],
+}));
describe('defaultSorter', () => {
it('returns items as is if query is empty', () => {
@@ -151,6 +154,8 @@ describe('AutocompleteHelper', () => {
afterEach(() => {
mock.restore();
+ delete gl.GfmAutoComplete;
+
jest.spyOn(Date, 'now').mockImplementation(() => dateNowOld);
});
@@ -212,4 +217,13 @@ describe('AutocompleteHelper', () => {
'/gitlab-org/gitlab-test/-/autocomplete_sources/members',
);
});
+
+ it("loads emoji if dataSources doesn't exist", async () => {
+ autocompleteHelper = new AutocompleteHelper({});
+
+ const dataSource = autocompleteHelper.getDataSource('emoji');
+ const results = await dataSource.search('');
+
+ expect(results).toEqual([{ emoji: { name: 'thumbsup' }, fieldValue: 'thumbsup' }]);
+ });
});
diff --git a/spec/frontend/super_sidebar/components/global_search/components/global_search_autocomplete_items_spec.js b/spec/frontend/super_sidebar/components/global_search/components/global_search_autocomplete_items_spec.js
index a2cec411d9f..2a04f64f70d 100644
--- a/spec/frontend/super_sidebar/components/global_search/components/global_search_autocomplete_items_spec.js
+++ b/spec/frontend/super_sidebar/components/global_search/components/global_search_autocomplete_items_spec.js
@@ -5,7 +5,7 @@ import {
GlAvatar,
GlAlert,
} from '@gitlab/ui';
-import { shallowMount } from '@vue/test-utils';
+import { mount } from '@vue/test-utils';
import Vue from 'vue';
// eslint-disable-next-line no-restricted-imports
import Vuex from 'vuex';
@@ -37,7 +37,7 @@ describe('GlobalSearchAutocompleteItems', () => {
},
});
- wrapper = shallowMount(GlobalSearchAutocompleteItems, {
+ wrapper = mount(GlobalSearchAutocompleteItems, {
store,
propsData: {
...props,
diff --git a/spec/frontend/super_sidebar/components/global_search/components/global_search_scoped_items_spec.js b/spec/frontend/super_sidebar/components/global_search/components/global_search_scoped_items_spec.js
index 1f74dd17f5c..dfe32897131 100644
--- a/spec/frontend/super_sidebar/components/global_search/components/global_search_scoped_items_spec.js
+++ b/spec/frontend/super_sidebar/components/global_search/components/global_search_scoped_items_spec.js
@@ -1,5 +1,5 @@
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
-import { shallowMount } from '@vue/test-utils';
+import { mount } from '@vue/test-utils';
import Vue from 'vue';
// eslint-disable-next-line no-restricted-imports
import Vuex from 'vuex';
@@ -29,7 +29,7 @@ describe('GlobalSearchScopedItems', () => {
},
});
- wrapper = shallowMount(GlobalSearchScopedItems, {
+ wrapper = mount(GlobalSearchScopedItems, {
store,
propsData: {
...props,
diff --git a/spec/frontend/super_sidebar/components/user_menu_profile_item_spec.js b/spec/frontend/super_sidebar/components/user_menu_profile_item_spec.js
index 9cf55154a59..ac80188dac1 100644
--- a/spec/frontend/super_sidebar/components/user_menu_profile_item_spec.js
+++ b/spec/frontend/super_sidebar/components/user_menu_profile_item_spec.js
@@ -1,5 +1,5 @@
import { GlDisclosureDropdownItem, GlTooltip } from '@gitlab/ui';
-import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
+import { mountExtended } from 'helpers/vue_test_utils_helper';
import UserMenuProfileItem from '~/super_sidebar/components/user_menu_profile_item.vue';
import { userMenuMockData, userMenuMockStatus } from '../mock_data';
@@ -13,7 +13,7 @@ describe('UserMenuProfileItem component', () => {
const GlEmoji = { template: '
' };
const createWrapper = (userDataChanges = {}) => {
- wrapper = shallowMountExtended(UserMenuProfileItem, {
+ wrapper = mountExtended(UserMenuProfileItem, {
propsData: {
user: {
...userMenuMockData,
diff --git a/spec/lib/banzai/filter/task_list_filter_spec.rb b/spec/lib/banzai/filter/task_list_filter_spec.rb
index 3eef6761153..908abbf73e2 100644
--- a/spec/lib/banzai/filter/task_list_filter_spec.rb
+++ b/spec/lib/banzai/filter/task_list_filter_spec.rb
@@ -11,6 +11,23 @@ RSpec.describe Banzai::Filter::TaskListFilter, feature_category: :team_planning
expect(doc.xpath('.//li//task-button').count).to eq(2)
end
+ it 'ignores checkbox on following line' do
+ doc = filter(
+ <<~HTML
+
+ HTML
+ )
+
+ expect(doc.xpath('.//li//input').count).to eq(0)
+ end
+
describe 'inapplicable list items' do
shared_examples 'a valid inapplicable task list item' do |html|
it "behaves correctly for `#{html}`" do
diff --git a/spec/scripts/setup/generate_as_if_foss_env_spec.rb b/spec/scripts/setup/generate_as_if_foss_env_spec.rb
index bafe306bbe5..94c87c445d0 100644
--- a/spec/scripts/setup/generate_as_if_foss_env_spec.rb
+++ b/spec/scripts/setup/generate_as_if_foss_env_spec.rb
@@ -36,6 +36,7 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
'compile-production-assets',
'compile-storybook',
'compile-test-assets',
+ 'cache-assets:test',
'eslint',
'generate-apollo-graphql-schema',
'graphql-schema-dump',
@@ -82,6 +83,7 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
ENABLE_COMPILE_PRODUCTION_ASSETS: 'true',
ENABLE_COMPILE_STORYBOOK: 'true',
ENABLE_COMPILE_TEST_ASSETS: 'true',
+ ENABLE_CACHE_ASSETS: 'true',
ENABLE_ESLINT: 'true',
ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA: 'true',
ENABLE_GRAPHQL_SCHEMA_DUMP: 'true',
@@ -118,6 +120,7 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
ENABLE_COMPILE_PRODUCTION_ASSETS=true
ENABLE_COMPILE_STORYBOOK=true
ENABLE_COMPILE_TEST_ASSETS=true
+ ENABLE_CACHE_ASSETS=true
ENABLE_ESLINT=true
ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA=true
ENABLE_GRAPHQL_SCHEMA_DUMP=true
diff --git a/spec/services/ci/trigger_downstream_pipeline_service_spec.rb b/spec/services/ci/trigger_downstream_pipeline_service_spec.rb
index 299f765b95c..9761353dc60 100644
--- a/spec/services/ci/trigger_downstream_pipeline_service_spec.rb
+++ b/spec/services/ci/trigger_downstream_pipeline_service_spec.rb
@@ -80,23 +80,6 @@ RSpec.describe Ci::TriggerDownstreamPipelineService, feature_category: :continuo
it_behaves_like 'creates a log entry', 'child'
end
-
- context 'when FF `ci_rate_limit_downstream_pipelines` is disabled' do
- before do
- stub_feature_flags(ci_rate_limit_downstream_pipelines: false)
- end
-
- it 'schedules the downstream pipeline worker' do
- service.execute
-
- expect { execute }.to change { ::Ci::CreateDownstreamPipelineWorker.jobs.size }.by(1)
- expect(bridge).not_to be_failed
- expect(execute).to be_success
- expect(execute.message).to eq('Downstream pipeline enqueued')
- end
-
- it_behaves_like 'creates a log entry'
- end
end
context 'when the limit is not exceeded' do
diff --git a/vite.config.js b/vite.config.js
index 53d439cd80d..c74ef145b42 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -169,4 +169,7 @@ export default defineConfig({
],
},
},
+ worker: {
+ format: 'es',
+ },
});
diff --git a/yarn.lock b/yarn.lock
index d7c37973047..32028b03532 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1326,10 +1326,10 @@
resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-3.88.0.tgz#f57bd0ea94866038b19d94a2fa815d54f10c2c09"
integrity sha512-j2C+Ddt2LcJTf2hQZZ6sybsiQ/mMnZG4wKmJfM5YjXR5qPVaAUyH+MHnvPGcHnt+tMYr2P52zlcpsQa6WB5xeQ==
-"@gitlab/ui@77.1.0":
- version "77.1.0"
- resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-77.1.0.tgz#51ac399bc4aaeb4781f3777e579e88f0e9efbb27"
- integrity sha512-splN4opsOBrhqUypXjWms/kjVl/tPBNMgU1taQoAfAyIZ/iscnYHawDu5VBOKX0vfWknbTAO1DO05kKwKifXqg==
+"@gitlab/ui@77.6.0":
+ version "77.6.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-77.6.0.tgz#8915af5870bd70c6b07b2ec5e0c76dc794536063"
+ integrity sha512-Hl6EkBU1kNn5hV639pVOF1vKehYMhzc9TbY99gIuvMDS+zL8CkbQIVYdP+RAuLBhSy+GwO6Fg+t9OjbMBgSJSQ==
dependencies:
"@floating-ui/dom" "1.4.3"
bootstrap-vue "2.23.1"