From 76052295044b300c8c5ab4a2afa4aa5f898f4358 Mon Sep 17 00:00:00 2001 From: Dave Pisek Date: Fri, 17 Oct 2025 09:31:31 +0200 Subject: [PATCH 1/2] Add ref section to security configuration Adds a new section to the security configuration page. The added section will allow users to manage a list of refs (branches or tags) that are to be marked as being tracked for vulnerabilities. --- .../security_configuration/components/app.vue | 45 +++++- .../components/ref_tracking_list.vue | 94 +++++++++++ .../components/ref_tracking_list_item.vue | 62 +++++++ .../components/ref_tracking_metadata.vue | 75 +++++++++ .../graphql/typedefs.graphql | 21 +++ .../vulnerability_tracked_refs.query.graphql | 20 +++ .../security_configuration/index.js | 3 +- .../security/configuration_controller.rb | 2 + .../security_attributes/graphql/resolvers.js | 79 +++++++++ .../wip/vulnerabilities_across_contexts.yml | 10 ++ locale/gitlab.pot | 32 ++++ .../components/app_spec.js | 77 +++++++-- .../components/ref_tracking_list_item_spec.js | 103 ++++++++++++ .../components/ref_tracking_list_spec.js | 153 ++++++++++++++++++ .../components/ref_tracking_metadata_spec.js | 112 +++++++++++++ .../security_configuration/mock_data.js | 18 +++ 16 files changed, 894 insertions(+), 12 deletions(-) create mode 100644 app/assets/javascripts/security_configuration/components/ref_tracking_list.vue create mode 100644 app/assets/javascripts/security_configuration/components/ref_tracking_list_item.vue create mode 100644 app/assets/javascripts/security_configuration/components/ref_tracking_metadata.vue create mode 100644 app/assets/javascripts/security_configuration/graphql/typedefs.graphql create mode 100644 app/assets/javascripts/security_configuration/graphql/vulnerability_tracked_refs.query.graphql create mode 100644 ee/config/feature_flags/wip/vulnerabilities_across_contexts.yml create mode 100644 spec/frontend/security_configuration/components/ref_tracking_list_item_spec.js create mode 100644 spec/frontend/security_configuration/components/ref_tracking_list_spec.js create mode 100644 spec/frontend/security_configuration/components/ref_tracking_metadata_spec.js diff --git a/app/assets/javascripts/security_configuration/components/app.vue b/app/assets/javascripts/security_configuration/components/app.vue index 9e90d619d12919..424efead3debbc 100644 --- a/app/assets/javascripts/security_configuration/components/app.vue +++ b/app/assets/javascripts/security_configuration/components/app.vue @@ -10,6 +10,7 @@ import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { SERVICE_PING_SECURITY_CONFIGURATION_THREAT_MANAGEMENT_VISIT } from '~/tracking/constants'; import { REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY } from '~/vue_shared/security_reports/constants'; import BetaBadge from '~/vue_shared/components/badges/beta_badge.vue'; +import { helpPagePath } from '~/helpers/help_page_helper'; import { AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY, TAB_VULNERABILITY_MANAGEMENT_INDEX, @@ -24,6 +25,7 @@ import FeatureCard from './feature_card.vue'; import PipelineSecretDetectionFeatureCard from './pipeline_secret_detection_feature_card.vue'; import SecretPushProtectionFeatureCard from './secret_push_protection_feature_card.vue'; import TrainingProviderList from './training_provider_list.vue'; +import RefTrackingList from './ref_tracking_list.vue'; export default { i18n, @@ -49,6 +51,7 @@ export default { import('ee_component/security_configuration/components/upgrade_banner.vue'), UserCalloutDismisser, TrainingProviderList, + RefTrackingList, ContainerScanningForRegistryFeatureCard: () => import( 'ee_component/security_configuration/components/container_scanning_for_registry_feature_card.vue' @@ -124,11 +127,18 @@ export default { shouldShowVulnerabilityArchives() { return this.glFeatures?.vulnerabilityArchival; }, + shouldShowRefsTracking() { + return this.glFeatures?.vulnerabilitiesAcrossContexts; + }, shouldShowSecurityAttributes() { return ( window.gon?.licensed_features?.securityAttributes && this.glFeatures?.securityContextLabels ); }, + trackedRefsHelpPagePath() { + // TODO: Once the help page content is available, we can use the anchor to link to the specific section + return helpPagePath('user/application_security/vulnerability_report/_index.md'); + }, }, methods: { getComponentName(feature) { @@ -262,7 +272,40 @@ export default { :title="$options.i18n.vulnerabilityManagement" query-param-value="vulnerability-management" > - + + + + +