diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 905ea2b62ed..a05da921509 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-93e52c3e17edd6629674f0f26b1a8312f65a6856
+9222c46d0ca6133b8f80008401c7cf946cb7d175
diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION
index ea3b039a7a5..f800d723c7b 100644
--- a/GITLAB_KAS_VERSION
+++ b/GITLAB_KAS_VERSION
@@ -1 +1 @@
-b18d3540343f5e940021447b0744934cb3b03517
+bfadfe3465e1124adeae8afa74e06c43c1201ea1
diff --git a/app/assets/javascripts/ci/job_details/components/job_log_top_bar.vue b/app/assets/javascripts/ci/job_details/components/job_log_top_bar.vue
index 2b9c7ca5202..eb3dcdacf1f 100644
--- a/app/assets/javascripts/ci/job_details/components/job_log_top_bar.vue
+++ b/app/assets/javascripts/ci/job_details/components/job_log_top_bar.vue
@@ -2,7 +2,7 @@
import { GlTooltipDirective, GlLink, GlButton, GlSearchBoxByClick, GlSprintf } from '@gitlab/ui';
import { scrollToElement, backOff } from '~/lib/utils/common_utils';
import { numberToHumanSize } from '~/lib/utils/number_utils';
-import { s__, sprintf } from '~/locale';
+import { s__, n__, sprintf } from '~/locale';
import { compactJobLog } from '~/ci/job_details/utils';
export default {
@@ -169,10 +169,17 @@ export default {
if (logLine) {
setTimeout(() => scrollToElement(logLine));
- const message = sprintf(s__('Job|%{searchLength} results found for %{searchTerm}'), {
- searchLength: this.searchResults.length,
- searchTerm: this.searchTerm,
- });
+ const message = sprintf(
+ n__(
+ 'Job|%{searchLength} result found for %{searchTerm}',
+ 'Job|%{searchLength} results found for %{searchTerm}',
+ this.searchResults.length,
+ ),
+ {
+ searchLength: this.searchResults.length,
+ searchTerm: this.searchTerm,
+ },
+ );
this.$toast.show(message);
} else {
diff --git a/app/assets/javascripts/projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue b/app/assets/javascripts/projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue
index b28e72e2b1b..eca514a5eb7 100644
--- a/app/assets/javascripts/projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue
+++ b/app/assets/javascripts/projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue
@@ -8,7 +8,27 @@ import {
DATE_RANGE_LAST_30_DAYS,
DATE_RANGE_LAST_90_DAYS,
DATE_RANGE_LAST_180_DAYS,
+ SOURCE_PUSH,
+ SOURCE_SCHEDULE,
+ SOURCE_MERGE_REQUEST_EVENT,
+ SOURCE_WEB,
+ SOURCE_TRIGGER,
+ SOURCE_API,
+ SOURCE_EXTERNAL,
+ SOURCE_PIPELINE,
+ SOURCE_CHAT,
+ SOURCE_WEBIDE,
+ SOURCE_EXTERNAL_PULL_REQUEST_EVENT,
+ SOURCE_PARENT_PIPELINE,
+ SOURCE_ONDEMAND_DAST_SCAN,
+ SOURCE_ONDEMAND_DAST_VALIDATION,
+ SOURCE_SECURITY_ORCHESTRATION_POLICY,
+ SOURCE_CONTAINER_REGISTRY_PUSH,
+ SOURCE_DUO_WORKFLOW,
+ SOURCE_PIPELINE_EXECUTION_POLICY_SCHEDULE,
+ SOURCE_UNKNOWN,
} from '../constants';
+
import getPipelineAnalytics from '../graphql/queries/get_pipeline_analytics.query.graphql';
import DashboardHeader from './dashboard_header.vue';
@@ -17,19 +37,7 @@ import StatisticsList from './statistics_list.vue';
import PipelineDurationChart from './pipeline_duration_chart.vue';
import PipelineStatusChart from './pipeline_status_chart.vue';
-// CiPipelineSources values from GraphQL schema.
const SOURCE_ANY = 'ANY';
-const SOURCE_PUSH = 'PUSH';
-const SOURCE_WEB = 'WEB';
-const SOURCE_TRIGGER = 'TRIGGER';
-const SOURCE_SCHEDULE = 'SCHEDULE';
-const SOURCE_API = 'API';
-const SOURCE_EXTERNAL = 'EXTERNAL';
-const SOURCE_PIPELINE = 'PIPELINE';
-const SOURCE_CHAT = 'CHAT';
-const SOURCE_MERGE_REQUEST_EVENT = 'MERGE_REQUEST_EVENT';
-const SOURCE_EXTERNAL_PULL_REQUEST_EVENT = 'EXTERNAL_PULL_REQUEST_EVENT';
-const SOURCE_UNKNOWN = 'UNKNOWN';
export default {
name: 'PipelinesDashboardClickhouse',
@@ -122,37 +130,42 @@ export default {
pipelineSources: [
{ value: SOURCE_ANY, text: s__('PipelineSource|Any source') },
{ value: SOURCE_PUSH, text: s__('PipelineSource|Push') },
+ { value: SOURCE_SCHEDULE, text: s__('PipelineSource|Schedule') },
+ { value: SOURCE_MERGE_REQUEST_EVENT, text: s__('PipelineSource|Merge Request Event') },
{ value: SOURCE_WEB, text: s__('PipelineSource|Web') },
{ value: SOURCE_TRIGGER, text: s__('PipelineSource|Trigger') },
- { value: SOURCE_SCHEDULE, text: s__('PipelineSource|Schedule') },
{ value: SOURCE_API, text: s__('PipelineSource|API') },
- { value: SOURCE_EXTERNAL, text: s__('PipelineSource|External event') },
+ { value: SOURCE_EXTERNAL, text: s__('PipelineSource|External') },
{ value: SOURCE_PIPELINE, text: s__('PipelineSource|Pipeline') },
{ value: SOURCE_CHAT, text: s__('PipelineSource|Chat') },
- { value: SOURCE_MERGE_REQUEST_EVENT, text: s__('PipelineSource|Merge request') },
+ { value: SOURCE_WEBIDE, text: s__('PipelineSource|Web IDE') },
{
value: SOURCE_EXTERNAL_PULL_REQUEST_EVENT,
- text: s__('PipelineSource|External Pull Request'),
+ text: s__('PipelineSource|External Pull Request Event'),
+ },
+ { value: SOURCE_PARENT_PIPELINE, text: s__('PipelineSource|Parent Pipeline') },
+ { value: SOURCE_ONDEMAND_DAST_SCAN, text: s__('PipelineSource|On-Demand DAST Scan') },
+ {
+ value: SOURCE_ONDEMAND_DAST_VALIDATION,
+ text: s__('PipelineSource|On-Demand DAST Validation'),
+ },
+ {
+ value: SOURCE_SECURITY_ORCHESTRATION_POLICY,
+ text: s__('PipelineSource|Security Orchestration Policy'),
+ },
+ { value: SOURCE_CONTAINER_REGISTRY_PUSH, text: s__('PipelineSource|Container Registry Push') },
+ { value: SOURCE_DUO_WORKFLOW, text: s__('PipelineSource|Duo Workflow') },
+ {
+ value: SOURCE_PIPELINE_EXECUTION_POLICY_SCHEDULE,
+ text: s__('PipelineSource|Pipeline Execution Policy Schedule'),
},
{ value: SOURCE_UNKNOWN, text: s__('PipelineSource|Unknown') },
],
dateRangeItems: [
- {
- value: DATE_RANGE_LAST_WEEK,
- text: s__('PipelineCharts|Last week'),
- },
- {
- value: DATE_RANGE_LAST_30_DAYS,
- text: s__('PipelineCharts|Last 30 days'),
- },
- {
- value: DATE_RANGE_LAST_90_DAYS,
- text: s__('PipelineCharts|Last 90 days'),
- },
- {
- value: DATE_RANGE_LAST_180_DAYS,
- text: s__('PipelineCharts|Last 180 days'),
- },
+ { value: DATE_RANGE_LAST_WEEK, text: s__('PipelineCharts|Last week') },
+ { value: DATE_RANGE_LAST_30_DAYS, text: s__('PipelineCharts|Last 30 days') },
+ { value: DATE_RANGE_LAST_90_DAYS, text: s__('PipelineCharts|Last 90 days') },
+ { value: DATE_RANGE_LAST_180_DAYS, text: s__('PipelineCharts|Last 180 days') },
],
};
diff --git a/app/assets/javascripts/projects/pipelines/charts/constants.js b/app/assets/javascripts/projects/pipelines/charts/constants.js
index 9876b025efe..4f689a0b79b 100644
--- a/app/assets/javascripts/projects/pipelines/charts/constants.js
+++ b/app/assets/javascripts/projects/pipelines/charts/constants.js
@@ -24,3 +24,26 @@ export const UNSUPPORTED_DATA = 'unsupported_data';
export const SNOWPLOW_LABEL = 'redis_hll_counters.analytics.analytics_total_unique_counts_monthly';
export const SNOWPLOW_SCHEMA = 'iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-1';
export const SNOWPLOW_DATA_SOURCE = 'redis_hll';
+
+// CiPipelineSources values from GraphQL schema.
+export const SOURCE_PUSH = 'PUSH';
+export const SOURCE_SCHEDULE = 'SCHEDULE';
+export const SOURCE_MERGE_REQUEST_EVENT = 'MERGE_REQUEST_EVENT';
+export const SOURCE_WEB = 'WEB';
+export const SOURCE_TRIGGER = 'TRIGGER';
+export const SOURCE_API = 'API';
+export const SOURCE_EXTERNAL = 'EXTERNAL';
+export const SOURCE_PIPELINE = 'PIPELINE';
+export const SOURCE_CHAT = 'CHAT';
+export const SOURCE_WEBIDE = 'WEBIDE';
+export const SOURCE_EXTERNAL_PULL_REQUEST_EVENT = 'EXTERNAL_PULL_REQUEST_EVENT';
+
+export const SOURCE_PARENT_PIPELINE = 'PARENT_PIPELINE';
+export const SOURCE_ONDEMAND_DAST_SCAN = 'ONDEMAND_DAST_SCAN';
+export const SOURCE_ONDEMAND_DAST_VALIDATION = 'ONDEMAND_DAST_VALIDATION';
+export const SOURCE_SECURITY_ORCHESTRATION_POLICY = 'SECURITY_ORCHESTRATION_POLICY';
+export const SOURCE_CONTAINER_REGISTRY_PUSH = 'CONTAINER_REGISTRY_PUSH';
+export const SOURCE_DUO_WORKFLOW = 'DUO_WORKFLOW';
+export const SOURCE_PIPELINE_EXECUTION_POLICY_SCHEDULE = 'PIPELINE_EXECUTION_POLICY_SCHEDULE';
+
+export const SOURCE_UNKNOWN = 'UNKNOWN';
diff --git a/app/assets/javascripts/vue_shared/constants.js b/app/assets/javascripts/vue_shared/constants.js
index 99470991055..81e179630ba 100644
--- a/app/assets/javascripts/vue_shared/constants.js
+++ b/app/assets/javascripts/vue_shared/constants.js
@@ -1,4 +1,4 @@
-import { __, n__, sprintf } from '~/locale';
+import { __, n__, s__, sprintf } from '~/locale';
import { TYPE_ISSUE, WORKSPACE_PROJECT } from '~/issues/constants';
const INTERVALS = {
@@ -109,3 +109,19 @@ export const CLEAR_AUTOSAVE_ENTRY_EVENT = 'markdown_clear_autosave_entry';
export const CONTENT_EDITOR_READY_EVENT = 'content_editor_ready';
export const CONTENT_EDITOR_PASTE = 'content_editor_paste';
export const MARKDOWN_EDITOR_READY_EVENT = 'markdown_editor_ready';
+
+export const SEVERITY_LEVEL_CRITICAL = 'critical';
+export const SEVERITY_LEVEL_HIGH = 'high';
+export const SEVERITY_LEVEL_UNKNOWN = 'unknown';
+export const SEVERITY_LEVEL_MEDIUM = 'medium';
+export const SEVERITY_LEVEL_LOW = 'low';
+export const SEVERITY_LEVEL_INFO = 'info';
+
+export const SEVERITY_LEVELS = {
+ [SEVERITY_LEVEL_CRITICAL]: s__('severity|Critical'),
+ [SEVERITY_LEVEL_HIGH]: s__('severity|High'),
+ [SEVERITY_LEVEL_MEDIUM]: s__('severity|Medium'),
+ [SEVERITY_LEVEL_LOW]: s__('severity|Low'),
+ [SEVERITY_LEVEL_INFO]: s__('severity|Info'),
+ [SEVERITY_LEVEL_UNKNOWN]: s__('severity|Unknown'),
+};
diff --git a/doc/api/graphql/reference/_index.md b/doc/api/graphql/reference/_index.md
index 328a2d7ab73..65fc65a6119 100644
--- a/doc/api/graphql/reference/_index.md
+++ b/doc/api/graphql/reference/_index.md
@@ -17916,6 +17916,29 @@ The edge type for [`PipelineTrigger`](#pipelinetrigger).
| `cursor` | [`String!`](#string) | A cursor for use in pagination. |
| `node` | [`PipelineTrigger`](#pipelinetrigger) | The item at the end of the edge. |
+#### `ProjectComplianceControlStatusTypeConnection`
+
+The connection type for [`ProjectComplianceControlStatusType`](#projectcompliancecontrolstatustype).
+
+##### Fields
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| `edges` | [`[ProjectComplianceControlStatusTypeEdge]`](#projectcompliancecontrolstatustypeedge) | A list of edges. |
+| `nodes` | [`[ProjectComplianceControlStatusType]`](#projectcompliancecontrolstatustype) | A list of nodes. |
+| `pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. |
+
+#### `ProjectComplianceControlStatusTypeEdge`
+
+The edge type for [`ProjectComplianceControlStatusType`](#projectcompliancecontrolstatustype).
+
+##### Fields
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| `cursor` | [`String!`](#string) | A cursor for use in pagination. |
+| `node` | [`ProjectComplianceControlStatusType`](#projectcompliancecontrolstatustype) | The item at the end of the edge. |
+
#### `ProjectComplianceRequirementStatusConnection`
The connection type for [`ProjectComplianceRequirementStatus`](#projectcompliancerequirementstatus).
@@ -34610,6 +34633,27 @@ Returns [`CommitReferences`](#commitreferences).
| ---- | ---- | ----------- |
| `commitSha` | [`String!`](#string) | Project commit SHA identifier. For example, `287774414568010855642518513f085491644061`. |
+##### `Project.complianceControlStatus`
+
+Compliance control statuses for a project.
+
+{{< details >}}
+**Introduced** in GitLab 17.11.
+**Status**: Experiment.
+{{< /details >}}
+
+Returns [`ProjectComplianceControlStatusTypeConnection`](#projectcompliancecontrolstatustypeconnection).
+
+This field returns a [connection](#connections). It accepts the
+four standard [pagination arguments](#pagination-arguments):
+`before: String`, `after: String`, `first: Int`, and `last: Int`.
+
+###### Arguments
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| `filters` | [`ProjectComplianceControlStatusInput`](#projectcompliancecontrolstatusinput) | Filters applied when retrieving compliance control statuses for the project. |
+
##### `Project.complianceStandardsAdherence`
Compliance standards adherence for the project.
@@ -36405,6 +36449,19 @@ four standard [pagination arguments](#pagination-arguments):
| `project` | [`Project`](#project) | Project the CI/CD settings belong to. |
| `pushRepositoryForJobTokenAllowed` | [`Boolean`](#boolean) | Indicates the ability to push to the original project repository using a job token. |
+### `ProjectComplianceControlStatusType`
+
+Compliance control status for a project.
+
+#### Fields
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| `complianceRequirementsControl` | [`ComplianceRequirementsControl!`](#compliancerequirementscontrol) | Control of the compliance status. |
+| `id` | [`ID!`](#id) | Compliance control status ID. |
+| `status` | [`ProjectComplianceControlStatus!`](#projectcompliancecontrolstatus) | Compliance status of the project for the control. |
+| `updatedAt` | [`Time!`](#time) | Timestamp when the control status was last updated. |
+
### `ProjectComplianceRequirementStatus`
Compliance requirement status for a project.
@@ -43861,6 +43918,16 @@ Values for the archived argument.
| `INCLUDE` | Include archvied projects. |
| `ONLY` | Only archived projects. |
+### `ProjectComplianceControlStatus`
+
+Compliance status of the project control.
+
+| Value | Description |
+| ----- | ----------- |
+| `FAIL` | Fail. |
+| `PASS` | Pass. |
+| `PENDING` | Pending. |
+
### `ProjectFeatureAccessLevel`
Access level of a project feature.
@@ -48105,6 +48172,14 @@ Attributes for the pipeline schedule variable.
| `value` | [`String!`](#string) | Value of the variable. |
| `variableType` | [`CiVariableType!`](#civariabletype) | Type of the variable. |
+### `ProjectComplianceControlStatusInput`
+
+#### Arguments
+
+| Name | Type | Description |
+| ---- | ---- | ----------- |
+| `complianceRequirementId` | [`ComplianceManagementComplianceFrameworkComplianceRequirementID`](#compliancemanagementcomplianceframeworkcompliancerequirementid) | Compliance requirement id of the statuses. |
+
### `PushAccessLevelInput`
Defines which user roles, users, deploy keys, or groups can push to a protected branch.
diff --git a/doc/development/database/avoiding_downtime_in_migrations.md b/doc/development/database/avoiding_downtime_in_migrations.md
index 6a4eb73bbad..b68f3386778 100644
--- a/doc/development/database/avoiding_downtime_in_migrations.md
+++ b/doc/development/database/avoiding_downtime_in_migrations.md
@@ -164,7 +164,7 @@ for more information about database migrations.
#### The removed column is referenced by a database view
When a column is referenced by a database view, it behaves as if the column had a constraint attached to it
-so the view needs to be updated first before dropping he column:
+so the view needs to be updated first before dropping the column:
1. Recreate the view excluding the column
1. Drop the column from the original table
@@ -812,8 +812,8 @@ migrations.
There are currently two situations where views are used:
-- To expose Postgres internal metrics
--To expose limited read-only data for the Unified Backup CLI
+- To [expose Postgres internal metrics](virtual_tables.md)
+- To expose limited read-only data for the Unified Backup CLI
### Postgres internal metrics
diff --git a/lib/gitlab/database/health_status/indicators/prometheus_alert_indicator.rb b/lib/gitlab/database/health_status/indicators/prometheus_alert_indicator.rb
index b57e8bdda59..ccd8d01c7f5 100644
--- a/lib/gitlab/database/health_status/indicators/prometheus_alert_indicator.rb
+++ b/lib/gitlab/database/health_status/indicators/prometheus_alert_indicator.rb
@@ -99,32 +99,30 @@ module Gitlab
def sli_query
# TODO: temporary until CRs can be rolled out with https://gitlab.com/gitlab-org/gitlab/-/issues/501105
- gitlab_sec_query = prometheus_alert_db_indicators_settings[sli_query_key][:sec] ||
- prometheus_alert_db_indicators_settings[sli_query_key][:main]
+ return gitlab_sec_sli_query if connection.load_balancer.name.to_sym == :sec
- {
- gitlab_main: prometheus_alert_db_indicators_settings[sli_query_key][:main],
- gitlab_main_cell: prometheus_alert_db_indicators_settings[sli_query_key][:main_cell],
- gitlab_ci: prometheus_alert_db_indicators_settings[sli_query_key][:ci],
- gitlab_sec: gitlab_sec_query
- }.fetch(:"gitlab_#{connection.load_balancer.name}", nil)
+ prometheus_alert_db_indicators_settings[sli_query_key][connection.load_balancer.name.to_sym]
end
strong_memoize_attr :sli_query
+ def gitlab_sec_sli_query
+ prometheus_alert_db_indicators_settings[sli_query_key][:sec] ||
+ prometheus_alert_db_indicators_settings[sli_query_key][:main]
+ end
+
def slo
# TODO: temporary until CRs can be rolled out with https://gitlab.com/gitlab-org/gitlab/-/issues/501105
- gitlab_sec_query = prometheus_alert_db_indicators_settings[slo_key][:sec] ||
- prometheus_alert_db_indicators_settings[slo_key][:main]
+ return gitlab_sec_slo_query if connection.load_balancer.name.to_sym == :sec
- {
- gitlab_main: prometheus_alert_db_indicators_settings[slo_key][:main],
- gitlab_main_cell: prometheus_alert_db_indicators_settings[slo_key][:main_cell],
- gitlab_ci: prometheus_alert_db_indicators_settings[slo_key][:ci],
- gitlab_sec: gitlab_sec_query
- }.fetch(:"gitlab_#{connection.load_balancer.name}", nil)
+ prometheus_alert_db_indicators_settings[slo_key][connection.load_balancer.name.to_sym]
end
strong_memoize_attr :slo
+ def gitlab_sec_slo_query
+ prometheus_alert_db_indicators_settings[slo_key][:sec] ||
+ prometheus_alert_db_indicators_settings[slo_key][:main]
+ end
+
def fetch_sli(query)
response = client.query(query)
metric = response&.first || {}
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 9fc5935ec2d..729f99d7051 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -33529,8 +33529,10 @@ msgstr ""
msgid "Job|%{rawLinkStart}View raw%{rawLinkEnd} or %{fullLinkStart}full log%{fullLinkEnd}."
msgstr ""
-msgid "Job|%{searchLength} results found for %{searchTerm}"
-msgstr ""
+msgid "Job|%{searchLength} result found for %{searchTerm}"
+msgid_plural "Job|%{searchLength} results found for %{searchTerm}"
+msgstr[0] ""
+msgstr[1] ""
msgid "Job|Are you sure you want to erase this job log and artifacts?"
msgstr ""
@@ -35924,6 +35926,9 @@ msgstr ""
msgid "MemberRole|Could not update role."
msgstr ""
+msgid "MemberRole|Create member role"
+msgstr ""
+
msgid "MemberRole|Create role"
msgstr ""
@@ -35966,6 +35971,9 @@ msgstr ""
msgid "MemberRole|Dismiss Planner role promotion"
msgstr ""
+msgid "MemberRole|Edit member role"
+msgstr ""
+
msgid "MemberRole|Edit role"
msgstr ""
@@ -43211,19 +43219,25 @@ msgstr ""
msgid "PipelineSource|Chat"
msgstr ""
+msgid "PipelineSource|Container Registry Push"
+msgstr ""
+
+msgid "PipelineSource|Duo Workflow"
+msgstr ""
+
msgid "PipelineSource|External"
msgstr ""
msgid "PipelineSource|External Pull Request"
msgstr ""
-msgid "PipelineSource|External event"
+msgid "PipelineSource|External Pull Request Event"
msgstr ""
msgid "PipelineSource|Merge Request"
msgstr ""
-msgid "PipelineSource|Merge request"
+msgid "PipelineSource|Merge Request Event"
msgstr ""
msgid "PipelineSource|On-Demand DAST Scan"
@@ -43238,12 +43252,18 @@ msgstr ""
msgid "PipelineSource|Pipeline"
msgstr ""
+msgid "PipelineSource|Pipeline Execution Policy Schedule"
+msgstr ""
+
msgid "PipelineSource|Push"
msgstr ""
msgid "PipelineSource|Schedule"
msgstr ""
+msgid "PipelineSource|Security Orchestration Policy"
+msgstr ""
+
msgid "PipelineSource|Trigger"
msgstr ""
@@ -52911,6 +52931,9 @@ msgstr ""
msgid "SecurityInventory|View security coverage and vulnerabilities for all the projects in this group. Data is refreshed and may be upto 24 hours behind."
msgstr ""
+msgid "SecurityInventory|View vulnerability report"
+msgstr ""
+
msgid "SecurityInventory||An error occurred while fetching subgroups and projects. Please try again."
msgstr ""
diff --git a/scripts/frontend/quarantined_vue3_specs.txt b/scripts/frontend/quarantined_vue3_specs.txt
index 55fdbb05689..80ba576c04e 100644
--- a/scripts/frontend/quarantined_vue3_specs.txt
+++ b/scripts/frontend/quarantined_vue3_specs.txt
@@ -57,7 +57,6 @@ ee/spec/frontend/related_items_tree/components/tree_root_spec.js
ee/spec/frontend/requirements/components/requirement_item_spec.js
ee/spec/frontend/requirements/components/requirements_root_spec.js
ee/spec/frontend/roadmap/components/roadmap_shell_spec.js
-ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js
ee/spec/frontend/roles_and_permissions/components/role_selector_spec.js
ee/spec/frontend/security_configuration/components/app_spec.js
ee/spec/frontend/security_configuration/components/dynamic_fields_spec.js
diff --git a/spec/frontend/projects/pipelines/charts/components/pipelines_dashboard_clickhouse_spec.js b/spec/frontend/projects/pipelines/charts/components/pipelines_dashboard_clickhouse_spec.js
index a79fdfd25af..c818225f184 100644
--- a/spec/frontend/projects/pipelines/charts/components/pipelines_dashboard_clickhouse_spec.js
+++ b/spec/frontend/projects/pipelines/charts/components/pipelines_dashboard_clickhouse_spec.js
@@ -76,15 +76,23 @@ describe('PipelinesDashboardClickhouse', () => {
expect(sources).toEqual([
'Any source',
'Push',
+ 'Schedule',
+ 'Merge Request Event',
'Web',
'Trigger',
- 'Schedule',
'API',
- 'External event',
+ 'External',
'Pipeline',
'Chat',
- 'Merge request',
- 'External Pull Request',
+ 'Web IDE',
+ 'External Pull Request Event',
+ 'Parent Pipeline',
+ 'On-Demand DAST Scan',
+ 'On-Demand DAST Validation',
+ 'Security Orchestration Policy',
+ 'Container Registry Push',
+ 'Duo Workflow',
+ 'Pipeline Execution Policy Schedule',
'Unknown',
]);
});
diff --git a/workhorse/go.mod b/workhorse/go.mod
index 41cb7a43270..388779f970d 100644
--- a/workhorse/go.mod
+++ b/workhorse/go.mod
@@ -34,7 +34,7 @@ require (
gocloud.dev v0.40.1-0.20241107185025-56954848c3aa
golang.org/x/image v0.20.0
golang.org/x/net v0.35.0
- golang.org/x/oauth2 v0.24.0
+ golang.org/x/oauth2 v0.28.0
google.golang.org/grpc v1.67.1
google.golang.org/protobuf v1.36.5
)
diff --git a/workhorse/go.sum b/workhorse/go.sum
index b8301198e84..3272b47be44 100644
--- a/workhorse/go.sum
+++ b/workhorse/go.sum
@@ -758,8 +758,8 @@ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
-golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
+golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=