From dc0548daadd965e71dec53c41c7e93a01cee07c0 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 20 Oct 2023 18:10:58 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/CODEOWNERS | 1 + .rubocop.yml | 6 + .../rspec/before_all_role_assignment.yml | 1 - .rubocop_todo/rspec/context_wording.yml | 1 - .rubocop_todo/rspec/feature_category.yml | 1 - CONTRIBUTING.md | 118 +++------- .../ci/pipeline_details/pipelines_index.js | 4 - .../components/empty_state/ios_templates.vue | 220 ------------------ .../empty_state/no_ci_empty_state.vue | 33 +-- .../ci/pipelines_page/pipelines.vue | 6 - .../ios_specific_templates_experiment.rb | 32 --- .../cycle_analytics/value_stream_type.rb | 27 +++ app/graphql/types/base_input_object.rb | 2 + app/helpers/ci/pipelines_helper.rb | 11 +- .../analytics/cycle_analytics/value_stream.rb | 6 + .../cycle_analytics/value_stream_policy.rb | 9 + .../create_embeddings_with_vertex_ai.yml | 8 - .../experiment/ios_specific_templates.yml | 8 - danger/ci_tables/Dangerfile | 2 +- danger/database/Dangerfile | 2 +- danger/experiments/Dangerfile | 2 +- danger/feature_flag/Dangerfile | 1 - danger/pajamas/Dangerfile | 1 - danger/saas_feature/Dangerfile | 4 - doc/api/graphql/reference/index.md | 42 +++- locale/gitlab.pot | 45 ---- .../ios_specific_templates_experiment_spec.rb | 62 ----- .../projects/pipelines/pipelines_spec.rb | 25 +- .../empty_state/ios_templates_spec.js | 133 ----------- .../empty_state/no_ci_empty_state_spec.js | 35 +-- .../ci/pipelines_page/pipelines_spec.js | 6 +- .../cycle_analytics/value_stream_type_spec.rb | 11 + spec/helpers/ci/pipelines_helper_spec.rb | 71 +----- .../cycle_analytics/value_stream_spec.rb | 19 ++ spec/support/rspec_order_todo.yml | 1 - tooling/danger/analytics_instrumentation.rb | 2 - tooling/danger/stable_branch.rb | 2 - 37 files changed, 180 insertions(+), 780 deletions(-) delete mode 100644 app/assets/javascripts/ci/pipelines_page/components/empty_state/ios_templates.vue delete mode 100644 app/experiments/ios_specific_templates_experiment.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/value_stream_type.rb create mode 100644 app/policies/analytics/cycle_analytics/value_stream_policy.rb delete mode 100644 config/feature_flags/development/create_embeddings_with_vertex_ai.yml delete mode 100644 config/feature_flags/experiment/ios_specific_templates.yml delete mode 100644 spec/experiments/ios_specific_templates_experiment_spec.rb delete mode 100644 spec/frontend/ci/pipelines_page/components/empty_state/ios_templates_spec.js create mode 100644 spec/graphql/types/analytics/cycle_analytics/value_stream_type_spec.rb diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 20ee846e00a..3353f82d9d6 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -1338,6 +1338,7 @@ lib/gitlab/checks/** /**/javascripts/token_access/ @gitlab-org/ci-cd/verify/frontend /**/javascripts/admin/application_settings/runner_token_expiration/ @gitlab-org/ci-cd/verify/frontend /**/javascripts/usage_quotas/pipelines/ @gitlab-org/ci-cd/verify/frontend @sheldonled @aalakkad @kpalchyk +/**/javascripts/editor/schema/ci.json @gitlab-org/ci-cd/verify/frontend ## Verify:Runner Fleet Backend diff --git a/.rubocop.yml b/.rubocop.yml index 544ef66fba6..7dfc2ae343d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -153,6 +153,12 @@ Style/FrozenStringLiteralComment: Style/SpecialGlobalVars: EnforcedStyle: use_builtin_english_names +Style/SignalException: + Exclude: + # Danger defines its own `fail` method + - '**/*/Dangerfile' + - 'tooling/danger/**/*.rb' + RSpec/FilePath: Exclude: - 'qa/**/*' diff --git a/.rubocop_todo/rspec/before_all_role_assignment.yml b/.rubocop_todo/rspec/before_all_role_assignment.yml index 0905a79beca..85881cbeece 100644 --- a/.rubocop_todo/rspec/before_all_role_assignment.yml +++ b/.rubocop_todo/rspec/before_all_role_assignment.yml @@ -826,7 +826,6 @@ RSpec/BeforeAllRoleAssignment: - 'spec/controllers/projects/work_items_controller_spec.rb' - 'spec/controllers/projects_controller_spec.rb' - 'spec/controllers/repositories/lfs_storage_controller_spec.rb' - - 'spec/experiments/ios_specific_templates_experiment_spec.rb' - 'spec/features/admin/admin_projects_spec.rb' - 'spec/features/admin/users/user_spec.rb' - 'spec/features/admin/users/users_spec.rb' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index f95f6424593..658d3dab3e0 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -1063,7 +1063,6 @@ RSpec/ContextWording: - 'spec/docs_screenshots/container_registry_docs.rb' - 'spec/docs_screenshots/wiki_docs.rb' - 'spec/experiments/application_experiment_spec.rb' - - 'spec/experiments/ios_specific_templates_experiment_spec.rb' - 'spec/features/admin/admin_appearance_spec.rb' - 'spec/features/admin/admin_disables_git_access_protocol_spec.rb' - 'spec/features/admin/admin_hook_logs_spec.rb' diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index c6a3ac89ab5..b4398b8b7e2 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -1771,7 +1771,6 @@ RSpec/FeatureCategory: - 'spec/docs_screenshots/container_registry_docs.rb' - 'spec/docs_screenshots/wiki_docs.rb' - 'spec/experiments/in_product_guidance_environments_webide_experiment_spec.rb' - - 'spec/experiments/ios_specific_templates_experiment_spec.rb' - 'spec/features/admin/dashboard_spec.rb' - 'spec/features/groups/integrations/group_integrations_spec.rb' - 'spec/features/milestones/user_views_milestones_spec.rb' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac3fbaddf8f..5b9cce59508 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,12 @@ ## Contributor License Agreement and Developer Certificate of Origin -Contributions to this repository are subject to the [Developer Certificate of Origin](https://docs.gitlab.com/ee/legal/developer_certificate_of_origin.html#developer-certificate-of-origin-version-11), or the [Individual](https://docs.gitlab.com/ee/legal/individual_contributor_license_agreement.html) or [Corporate](https://docs.gitlab.com/ee/legal/corporate_contributor_license_agreement.html) Contributor License Agreement, depending on where the contribution is made and on whose behalf: +Contributions to this repository are subject to the [Developer Certificate of Origin](doc/legal/developer_certificate_of_origin.md#developer-certificate-of-origin-version-11), or the [Individual](doc/legal/individual_contributor_license_agreement.md) or [Corporate](doc/legal/corporate_contributor_license_agreement.md) Contributor License Agreement, depending on where the contribution is made and on whose behalf: -- By submitting code contributions as an individual to the [`/ee` subdirectory](/ee) of this repository, you agree to the [Individual Contributor License Agreement](https://docs.gitlab.com/ee/legal/individual_contributor_license_agreement.html). +- By submitting code contributions as an individual to the [`/ee` subdirectory](/ee) of this repository, you agree to the [Individual Contributor License Agreement](doc/legal/individual_contributor_license_agreement.md). -- By submitting code contributions on behalf of a corporation to the [`/ee` subdirectory](/ee) of this repository, you agree to the [Corporate Contributor License Agreement](https://docs.gitlab.com/ee/legal/corporate_contributor_license_agreement.html). +- By submitting code contributions on behalf of a corporation to the [`/ee` subdirectory](/ee) of this repository, you agree to the [Corporate Contributor License Agreement](doc/legal/corporate_contributor_license_agreement.md). -- By submitting code contributions as an individual or on behalf of a corporation to any directory in this repository outside of the [`/ee` subdirectory](/ee), you agree to the [Developer Certificate of Origin](https://docs.gitlab.com/ee/legal/developer_certificate_of_origin.html#developer-certificate-of-origin-version-11). +- By submitting code contributions as an individual or on behalf of a corporation to any directory in this repository outside of the [`/ee` subdirectory](/ee), you agree to the [Developer Certificate of Origin](doc/legal/developer_certificate_of_origin.md#developer-certificate-of-origin-version-11). All Documentation content that resides under the [`doc/` directory](/doc) of this repository is licensed under Creative Commons: @@ -17,124 +17,76 @@ _This notice should stay as the first item in the `CONTRIBUTING.md` file._ ## Contributing Documentation has been moved As of July 2018, all the documentation for contributing to the GitLab project has been moved to a new location. -[View the new documentation](https://about.gitlab.com/community/contribute/) to find the latest information. +[View the documentation](https://about.gitlab.com/community/contribute/) to find the latest information. ## Contribute to GitLab -[View the new documentation](https://about.gitlab.com/community/contribute/) to find the latest information. +[View the documentation](https://about.gitlab.com/community/contribute/) to find the latest information. ## Security vulnerability disclosure -This [documentation](doc/development/contributing/index.md#security-vulnerability-disclosure) has been moved. +[View the documentation](doc/development/contributing/index.md#security-vulnerability-disclosure) to find the latest information. ## Code of Conduct -This [documentation](https://about.gitlab.com/contributing/code-of-conduct/) has been moved. +[View the documentation](https://about.gitlab.com/community/contribute/code-of-conduct/) to find the latest information. ## Closing policy for issues and merge requests -This [documentation](doc/development/contributing/index.md#closing-policy-for-issues-and-merge-requests) has been moved. +[View the documentation](doc/development/contributing/index.md#closing-policy-for-issues-and-merge-requests) to find the latest information. ## Helping others -This [documentation](doc/development/contributing/index.md#helping-others) has been moved. +[View the documentation](doc/development/contributing/index.md#helping-others) to find the latest information. ## I want to contribute! -[View the new documentation](https://about.gitlab.com/community/contribute/) to find the latest information. +[View the documentation](https://about.gitlab.com/community/contribute/) to find the latest information. ## Contribution Flow -This [documentation](doc/development/contributing/index.md) has been moved. +[View the documentation](doc/development/contributing/index.md) to find the latest information. ## Workflow labels -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. +View the [issue workflow](doc/development/contributing/issue_workflow.md) documentation for these subjects: -### Type labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Subject labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Team labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Release Scoping labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Priority labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Severity labels - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -#### Severity impact guidance - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Label for community contributors - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. +- Type labels +- Subject labels +- Team labels +- Release Scoping labels +- Priority labels +- Severity labels + - Severity impact guidance +- Labels for community contributors ## Implement design & UI elements -This [documentation](doc/development/contributing/design.md) has been moved. +[View the documentation](doc/development/contributing/design.md) to find the latest information. ## Issue tracker -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. +View the [issue workflow](doc/development/contributing/issue_workflow.md) documentation for the following subjects. -### Issue triaging - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Feature proposals - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Issue tracker guidelines - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Issue weight - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Regression issues - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Technical and UX debt - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. - -### Stewardship - -This [documentation](doc/development/contributing/issue_workflow.md) has been moved. +- Issue triaging +- Feature proposals +- Issue tracker guidelines +- Issue weight +- Regression issues +- Technical and UX debt +- Stewardship ## Merge requests -This [documentation](doc/development/contributing/merge_request_workflow.md) has been moved. +View the [merge request workflow](doc/development/contributing/merge_request_workflow.md) documentation for the following subjects. -### Merge request guidelines - -This [documentation](doc/development/contributing/merge_request_workflow.md) has been moved. - -### Contribution acceptance criteria - -This [documentation](doc/development/contributing/merge_request_workflow.md) has been moved. +- Merge request guidelines +- Contribution acceptance criteria ## Definition of done -This [documentation](doc/development/contributing/merge_request_workflow.md) has been moved. +[View the documentation](doc/development/contributing/merge_request_workflow.md) to find the latest information. ## Style guides -This [documentation](doc/development/contributing/style_guides.md) has been moved. +[View the documentation](doc/development/contributing/style_guides.md) to find the latest information. diff --git a/app/assets/javascripts/ci/pipeline_details/pipelines_index.js b/app/assets/javascripts/ci/pipeline_details/pipelines_index.js index 8a7c3367fc1..ea2875713a9 100644 --- a/app/assets/javascripts/ci/pipeline_details/pipelines_index.js +++ b/app/assets/javascripts/ci/pipeline_details/pipelines_index.js @@ -42,8 +42,6 @@ export const initPipelinesIndex = (selector = '#pipelines-list-vue') => { projectId, defaultBranchName, params, - iosRunnersAvailable, - registrationToken, fullPath, visibilityPipelineIdType, } = el.dataset; @@ -55,7 +53,6 @@ export const initPipelinesIndex = (selector = '#pipelines-list-vue') => { artifactsEndpoint, artifactsEndpointPlaceholder, fullPath, - iosRunnersAvailable: parseBoolean(iosRunnersAvailable), manualActionsLimit: 50, pipelineEditorPath, pipelineSchedulesPath, @@ -84,7 +81,6 @@ export const initPipelinesIndex = (selector = '#pipelines-list-vue') => { newPipelinePath, params: JSON.parse(params), projectId, - registrationToken, resetCachePath, store: this.store, }, diff --git a/app/assets/javascripts/ci/pipelines_page/components/empty_state/ios_templates.vue b/app/assets/javascripts/ci/pipelines_page/components/empty_state/ios_templates.vue deleted file mode 100644 index 1a2021df9c8..00000000000 --- a/app/assets/javascripts/ci/pipelines_page/components/empty_state/ios_templates.vue +++ /dev/null @@ -1,220 +0,0 @@ - - - diff --git a/app/assets/javascripts/ci/pipelines_page/components/empty_state/no_ci_empty_state.vue b/app/assets/javascripts/ci/pipelines_page/components/empty_state/no_ci_empty_state.vue index 728e8541ae3..aed5f1d235d 100644 --- a/app/assets/javascripts/ci/pipelines_page/components/empty_state/no_ci_empty_state.vue +++ b/app/assets/javascripts/ci/pipelines_page/components/empty_state/no_ci_empty_state.vue @@ -1,9 +1,7 @@ diff --git a/app/assets/javascripts/ci/pipelines_page/pipelines.vue b/app/assets/javascripts/ci/pipelines_page/pipelines.vue index dd38c991abb..c4db0ecd05a 100644 --- a/app/assets/javascripts/ci/pipelines_page/pipelines.vue +++ b/app/assets/javascripts/ci/pipelines_page/pipelines.vue @@ -88,11 +88,6 @@ export default { type: Object, required: true, }, - registrationToken: { - type: String, - required: false, - default: null, - }, defaultVisibilityPipelineIdType: { type: String, required: false, @@ -404,7 +399,6 @@ export default { v-else-if="stateToRender === $options.stateMap.emptyState" :empty-state-svg-path="$options.noPipelinesSvgPath" :can-set-ci="canCreatePipeline" - :registration-token="registrationToken" /> 0 - end -end diff --git a/app/graphql/types/analytics/cycle_analytics/value_stream_type.rb b/app/graphql/types/analytics/cycle_analytics/value_stream_type.rb new file mode 100644 index 00000000000..cbfd61a76a3 --- /dev/null +++ b/app/graphql/types/analytics/cycle_analytics/value_stream_type.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Types + module Analytics + module CycleAnalytics + class ValueStreamType < BaseObject + graphql_name 'ValueStream' + + authorize :read_cycle_analytics + + field :name, + GraphQL::Types::String, + null: false, + description: 'Name of the value stream.' + + field :namespace, Types::NamespaceType, + null: false, + description: 'Namespace the value stream belongs to.' + + field :project, Types::ProjectType, + null: true, + description: 'Project the value stream belongs to, returns empty if it belongs to a group.', + alpha: { milestone: '15.6' } + end + end + end +end diff --git a/app/graphql/types/base_input_object.rb b/app/graphql/types/base_input_object.rb index 90a29b0cfb8..d14da9ac878 100644 --- a/app/graphql/types/base_input_object.rb +++ b/app/graphql/types/base_input_object.rb @@ -3,5 +3,7 @@ module Types class BaseInputObject < GraphQL::Schema::InputObject prepend Gitlab::Graphql::CopyFieldDescription + + argument_class ::Types::BaseArgument end end diff --git a/app/helpers/ci/pipelines_helper.rb b/app/helpers/ci/pipelines_helper.rb index 510c7cd5fb6..9c4ceaccff1 100644 --- a/app/helpers/ci/pipelines_helper.rb +++ b/app/helpers/ci/pipelines_helper.rb @@ -71,7 +71,7 @@ module Ci def pipelines_list_data(project, list_url) artifacts_endpoint_placeholder = ':pipeline_artifacts_id' - data = { + { endpoint: list_url, project_id: project.id, default_branch_name: project.default_branch, @@ -89,15 +89,6 @@ module Ci full_path: project.full_path, visibility_pipeline_id_type: visibility_pipeline_id_type } - - experiment(:ios_specific_templates, actor: current_user, project: project, sticky_to: project) do |e| - e.candidate do - data[:registration_token] = project.runners_token if can?(current_user, :register_project_runners, project) - data[:ios_runners_available] = (project.shared_runners_available? && Gitlab.com?).to_s - end - end - - data end def visibility_pipeline_id_type diff --git a/app/models/analytics/cycle_analytics/value_stream.rb b/app/models/analytics/cycle_analytics/value_stream.rb index 7f8c6eef704..d884932072b 100644 --- a/app/models/analytics/cycle_analytics/value_stream.rb +++ b/app/models/analytics/cycle_analytics/value_stream.rb @@ -36,6 +36,12 @@ module Analytics new(name: Analytics::CycleAnalytics::Stages::BaseService::DEFAULT_VALUE_STREAM_NAME, namespace: namespace) end + def project + return unless namespace.is_a?(::Namespaces::ProjectNamespace) + + namespace.project + end + private def max_value_streams_count diff --git a/app/policies/analytics/cycle_analytics/value_stream_policy.rb b/app/policies/analytics/cycle_analytics/value_stream_policy.rb new file mode 100644 index 00000000000..7e236f94e91 --- /dev/null +++ b/app/policies/analytics/cycle_analytics/value_stream_policy.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Analytics + module CycleAnalytics + class ValueStreamPolicy < ::BasePolicy + delegate { subject.namespace } + end + end +end diff --git a/config/feature_flags/development/create_embeddings_with_vertex_ai.yml b/config/feature_flags/development/create_embeddings_with_vertex_ai.yml deleted file mode 100644 index 327961d971e..00000000000 --- a/config/feature_flags/development/create_embeddings_with_vertex_ai.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: create_embeddings_with_vertex_ai -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129930 -rollout_issue_url: -milestone: '16.4' -type: development -group: group::duo chat -default_enabled: false diff --git a/config/feature_flags/experiment/ios_specific_templates.yml b/config/feature_flags/experiment/ios_specific_templates.yml deleted file mode 100644 index 0af80e7a5bb..00000000000 --- a/config/feature_flags/experiment/ios_specific_templates.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: ios_specific_templates -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84589 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/356398 -milestone: "14.10" -type: experiment -group: group::activation -default_enabled: false diff --git a/danger/ci_tables/Dangerfile b/danger/ci_tables/Dangerfile index 1d4601d33b2..422b77d337a 100644 --- a/danger/ci_tables/Dangerfile +++ b/danger/ci_tables/Dangerfile @@ -18,7 +18,7 @@ def check_database_dictionary_yaml(database_dictionary) markdown(PARTITIONING_COMMENT, file: database_dictionary.path, line: mr_line.succ) rescue Psych::Exception # YAML could not be parsed, fail the build. - fail "#{helper.html_link(database_ditionary.path)} isn't valid YAML! #{SEE_DB_DOC}" # rubocop:disable Style/SignalException + fail "#{helper.html_link(database_ditionary.path)} isn't valid YAML! #{SEE_DB_DOC}" rescue StandardError => e warn "There was a problem trying to check the database dictionary file. Exception: #{e.class.name} - #{e.message}" end diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile index f3bdddb0d95..b7f2151dcf9 100644 --- a/danger/database/Dangerfile +++ b/danger/database/Dangerfile @@ -74,7 +74,7 @@ return if helper.mr_labels.include?(DATABASE_APPROVED_LABEL) migration_testing_has_run = helper.mr_labels.include?(DATABASE_TESTING_RUN_LABEL) community_contribution = helper.mr_labels.include?(COMMUNITY_CONTRIBUTION_LABEL) if non_geo_migration_created && !migration_testing_has_run && !community_contribution - fail DB_MIGRATION_TESTING_REQUIRED_MESSAGE # rubocop:disable Style/SignalException + fail DB_MIGRATION_TESTING_REQUIRED_MESSAGE end if helper.mr_labels.include?('database') || database.changes.any? diff --git a/danger/experiments/Dangerfile b/danger/experiments/Dangerfile index 3a206bc876e..c23f94e8d94 100644 --- a/danger/experiments/Dangerfile +++ b/danger/experiments/Dangerfile @@ -3,5 +3,5 @@ unless experiments.class_files_removed? msg = "This merge request removes experiment: `#{experiments.removed_experiments.join(',')}`" \ ", please also remove the class file." - fail msg # rubocop:disable Style/SignalException + fail msg end diff --git a/danger/feature_flag/Dangerfile b/danger/feature_flag/Dangerfile index 68e6cadd04e..d44e83dbe53 100644 --- a/danger/feature_flag/Dangerfile +++ b/danger/feature_flag/Dangerfile @@ -1,5 +1,4 @@ # frozen_string_literal: true -# rubocop:disable Style/SignalException SEE_DOC = "See the [feature flag documentation](https://docs.gitlab.com/ee/development/feature_flags#feature-flag-definition-and-validation)." FEATURE_FLAG_LABEL = "feature flag" diff --git a/danger/pajamas/Dangerfile b/danger/pajamas/Dangerfile index 5fe9e9e8b19..cb13052c1e2 100644 --- a/danger/pajamas/Dangerfile +++ b/danger/pajamas/Dangerfile @@ -1,5 +1,4 @@ # frozen_string_literal: true -# rubocop:disable Style/SignalException PATTERNS = %w[ %a.btn.btn- diff --git a/danger/saas_feature/Dangerfile b/danger/saas_feature/Dangerfile index 9fe684a5171..38ca87fb5fd 100644 --- a/danger/saas_feature/Dangerfile +++ b/danger/saas_feature/Dangerfile @@ -1,7 +1,5 @@ # frozen_string_literal: true -# rubocop:disable Style/SignalException - SEE_DOC = "see the [SaaS feature documentation](https://docs.gitlab.com/ee/development/ee_features.html#saas-only-feature)." SUGGEST_MR_COMMENT = <<~SUGGEST_COMMENT.freeze @@ -57,5 +55,3 @@ end added_files.each do |saas_feature| check_yaml(saas_feature) end - -# rubocop:enable Style/SignalException diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 4fff50f2bfa..dea79bc1d25 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -7461,6 +7461,32 @@ Input type: `UserSetNamespaceCommitEmailInput` | `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | | `namespaceCommitEmail` | [`NamespaceCommitEmail`](#namespacecommitemail) | User namespace commit email after mutation. | +### `Mutation.valueStreamCreate` + +Creates a value stream. + +WARNING: +**Introduced** in 16.6. +This feature is an Experiment. It can be changed or removed at any time. + +Input type: `ValueStreamCreateInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `name` | [`String!`](#string) | Value stream description. | +| `namespacePath` | [`ID!`](#id) | Full path of the namespace(project or group) the value stream is created in. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| `errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | +| `valueStream` | [`ValueStream`](#valuestream) | Created value stream. | + ### `Mutation.vulnerabilitiesDismiss` Input type: `VulnerabilitiesDismissInput` @@ -26138,6 +26164,16 @@ fields relate to interactions between the two entities. | `message` | [`String`](#string) | User status message. | | `messageHtml` | [`String`](#string) | HTML of the user status message. | +### `ValueStream` + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `name` | [`String!`](#string) | Name of the value stream. | +| `namespace` | [`Namespace!`](#namespace) | Namespace the value stream belongs to. | +| `project` **{warning-solid}** | [`Project`](#project) | **Introduced** in 15.6. This feature is an Experiment. It can be changed or removed at any time. Project the value stream belongs to, returns empty if it belongs to a group. | + ### `ValueStreamAnalyticsMetric` #### Fields @@ -32198,8 +32234,10 @@ A time-frame defined as a closed inclusive range of two dates. | Name | Type | Description | | ---- | ---- | ----------- | -| `authorUsername` | [`[String!]`](#string) | Filters epics that are authored by one of the given users. | -| `labelName` | [`[String!]`](#string) | Filters epics that have at least one of the given labels. | +| `authorUsername` **{warning-solid}** | [`[String!]`](#string) | **Deprecated:** Use authorUsernames instead. Deprecated in 16.6. | +| `authorUsernames` | [`[String!]`](#string) | Filters epics that are authored by one of the given users. | +| `labelName` **{warning-solid}** | [`[String!]`](#string) | **Deprecated:** Use labelNames instead. Deprecated in 16.6. | +| `labelNames` | [`[String!]`](#string) | Filters epics that have at least one of the given labels. | ### `UnionedIssueFilterInput` diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 31013cad5fa..4ba49ace5c7 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -34773,12 +34773,6 @@ msgstr "" msgid "Pipelines|\"Hello world\" with GitLab CI" msgstr "" -msgid "Pipelines|1. Set up a runner" -msgstr "" - -msgid "Pipelines|2. Configure deployment pipeline" -msgstr "" - msgid "Pipelines|API" msgstr "" @@ -34788,15 +34782,9 @@ msgstr "" msgid "Pipelines|Auto DevOps" msgstr "" -msgid "Pipelines|Based on your project, we recommend this template:" -msgstr "" - msgid "Pipelines|Build with confidence" msgstr "" -msgid "Pipelines|Building for iOS?" -msgstr "" - msgid "Pipelines|By revoking a trigger you will break any processes making use of it. Are you sure?" msgstr "" @@ -34812,9 +34800,6 @@ msgstr "" msgid "Pipelines|Clear runner caches" msgstr "" -msgid "Pipelines|Configure pipeline" -msgstr "" - msgid "Pipelines|Continuous integration and deployment template to test and deploy your %{name} project." msgstr "" @@ -34830,9 +34815,6 @@ msgstr "" msgid "Pipelines|Description" msgstr "" -msgid "Pipelines|Don't need a guide? Jump in right away with a template." -msgstr "" - msgid "Pipelines|Edit" msgstr "" @@ -34842,9 +34824,6 @@ msgstr "" msgid "Pipelines|Failed to update. Please reload page to update the list of artifacts." msgstr "" -msgid "Pipelines|Follow these instructions to install GitLab Runner on macOS." -msgstr "" - msgid "Pipelines|Full configuration" msgstr "" @@ -34860,9 +34839,6 @@ msgstr "" msgid "Pipelines|GitLab CI/CD can automatically build, test, and deploy your code. Let GitLab take care of time consuming tasks, so you can spend more time creating." msgstr "" -msgid "Pipelines|GitLab Runner is an application that works with GitLab CI/CD to run jobs in a pipeline." -msgstr "" - msgid "Pipelines|Go to the pipeline editor" msgstr "" @@ -34881,9 +34857,6 @@ msgstr "" msgid "Pipelines|Learn the basics of pipelines and .yml files" msgstr "" -msgid "Pipelines|Let's get that runner set up! %{emojiStart}tada%{emojiEnd}" -msgstr "" - msgid "Pipelines|Lint" msgstr "" @@ -34896,15 +34869,9 @@ msgstr "" msgid "Pipelines|More Information" msgstr "" -msgid "Pipelines|Need more information to set up your runner? %{linkStart}Check out our documentation%{linkEnd}." -msgstr "" - msgid "Pipelines|No triggers have been created yet. Add one using the form above." msgstr "" -msgid "Pipelines|Not building for iOS or not what you're looking for? %{linkStart}See what else%{linkEnd} GitLab CI/CD has to offer." -msgstr "" - msgid "Pipelines|Owner" msgstr "" @@ -34932,9 +34899,6 @@ msgstr "" msgid "Pipelines|Scheduled" msgstr "" -msgid "Pipelines|Set up a runner" -msgstr "" - msgid "Pipelines|Something went wrong while cleaning runners cache." msgstr "" @@ -35037,15 +35001,6 @@ msgstr "" msgid "Pipelines|We'll continuously validate your pipeline configuration. The validation results will appear here." msgstr "" -msgid "Pipelines|We'll guide you through a simple pipeline set-up." -msgstr "" - -msgid "Pipelines|We'll walk you through how to deploy to iOS in two easy steps." -msgstr "" - -msgid "Pipelines|You have runners available to run your job now. No need to do anything else." -msgstr "" - msgid "Pipelines|You should review the code thoroughly before running this pipeline with the parent project's CI/CD resources." msgstr "" diff --git a/spec/experiments/ios_specific_templates_experiment_spec.rb b/spec/experiments/ios_specific_templates_experiment_spec.rb deleted file mode 100644 index 909ac22b97b..00000000000 --- a/spec/experiments/ios_specific_templates_experiment_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe IosSpecificTemplatesExperiment do - subject do - described_class.new(actor: user, project: project) do |e| - e.candidate { true } - end.run - end - - let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project, :auto_devops_disabled) } - - let!(:project_setting) { create(:project_setting, project: project, target_platforms: target_platforms) } - let(:target_platforms) { %w[ios] } - - before do - stub_experiments(ios_specific_templates: :candidate) - project.add_developer(user) if user - end - - it { is_expected.to be true } - - describe 'skipping the experiment' do - context 'no actor' do - let_it_be(:user) { nil } - - it { is_expected.to be_falsey } - end - - context 'actor cannot create pipelines' do - before do - project.add_guest(user) - end - - it { is_expected.to be_falsey } - end - - context 'targeting a non iOS platform' do - let(:target_platforms) { [] } - - it { is_expected.to be_falsey } - end - - context 'project has a ci.yaml file' do - before do - allow(project).to receive(:has_ci?).and_return(true) - end - - it { is_expected.to be_falsey } - end - - context 'project has pipelines' do - before do - create(:ci_pipeline, project: project) - end - - it { is_expected.to be_falsey } - end - end -end diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb index ca3b7f0ad47..fcbe8060fc3 100644 --- a/spec/features/projects/pipelines/pipelines_spec.rb +++ b/spec/features/projects/pipelines/pipelines_spec.rb @@ -805,29 +805,12 @@ RSpec.describe 'Pipelines', :js, feature_category: :continuous_integration do describe 'Empty State' do let(:project) { create(:project, :repository) } - context 'when `ios_specific_templates` is not enabled' do - before do - visit project_pipelines_path(project) - end - - it 'renders empty state' do - expect(page).to have_content 'Try test template' - end + before do + visit project_pipelines_path(project) end - describe 'when the `ios_specific_templates` experiment is enabled and the "Set up a runner" button is clicked' do - before do - stub_experiments(ios_specific_templates: :candidate) - project.project_setting.update!(target_platforms: %w[ios]) - visit project_pipelines_path(project) - click_button 'Set up a runner' - end - - it 'displays a modal with the macOS platform selected and an explanation popover' do - expect(page).to have_button 'macOS', class: 'selected' - expect(page).to have_selector('#runner-instructions-modal___BV_modal_content_') - expect(page).to have_selector('.popover') - end + it 'renders empty state' do + expect(page).to have_content 'Try test template' end end end diff --git a/spec/frontend/ci/pipelines_page/components/empty_state/ios_templates_spec.js b/spec/frontend/ci/pipelines_page/components/empty_state/ios_templates_spec.js deleted file mode 100644 index 8620d41886e..00000000000 --- a/spec/frontend/ci/pipelines_page/components/empty_state/ios_templates_spec.js +++ /dev/null @@ -1,133 +0,0 @@ -import '~/commons'; -import { nextTick } from 'vue'; -import { GlPopover, GlButton } from '@gitlab/ui'; -import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import RunnerInstructionsModal from '~/vue_shared/components/runner_instructions/runner_instructions_modal.vue'; -import IosTemplates from '~/ci/pipelines_page/components/empty_state/ios_templates.vue'; -import CiTemplates from '~/ci/pipelines_page/components/empty_state/ci_templates.vue'; - -const pipelineEditorPath = '/-/ci/editor'; -const registrationToken = 'SECRET_TOKEN'; -const iOSTemplateName = 'iOS-Fastlane'; - -describe('iOS Templates', () => { - let wrapper; - - const createWrapper = (providedPropsData = {}) => { - return shallowMountExtended(IosTemplates, { - provide: { - pipelineEditorPath, - iosRunnersAvailable: true, - ...providedPropsData, - }, - propsData: { - registrationToken, - }, - stubs: { - GlButton, - }, - }); - }; - - const findIosTemplate = () => wrapper.findComponent(CiTemplates); - const findRunnerInstructionsModal = () => wrapper.findComponent(RunnerInstructionsModal); - const findRunnerInstructionsPopover = () => wrapper.findComponent(GlPopover); - const findRunnerSetupTodoEmoji = () => wrapper.findByTestId('runner-setup-marked-todo'); - const findRunnerSetupCompletedEmoji = () => wrapper.findByTestId('runner-setup-marked-completed'); - const findSetupRunnerLink = () => wrapper.findByText('Set up a runner'); - const configurePipelineLink = () => wrapper.findByTestId('configure-pipeline-link'); - - describe('when ios runners are not available', () => { - beforeEach(() => { - wrapper = createWrapper({ iosRunnersAvailable: false }); - }); - - describe('the runner setup section', () => { - it('marks the section as todo', () => { - expect(findRunnerSetupTodoEmoji().isVisible()).toBe(true); - expect(findRunnerSetupCompletedEmoji().isVisible()).toBe(false); - }); - - it('renders the setup runner link', () => { - expect(findSetupRunnerLink().exists()).toBe(true); - }); - - it('renders the runner instructions modal with a popover once clicked', async () => { - findSetupRunnerLink().element.parentElement.click(); - - await nextTick(); - - expect(findRunnerInstructionsModal().exists()).toBe(true); - expect(findRunnerInstructionsModal().props('registrationToken')).toBe(registrationToken); - expect(findRunnerInstructionsModal().props('defaultPlatformName')).toBe('osx'); - - findRunnerInstructionsModal().vm.$emit('shown'); - - await nextTick(); - - expect(findRunnerInstructionsPopover().exists()).toBe(true); - }); - }); - - describe('the configure pipeline section', () => { - it('has a disabled link button', () => { - expect(configurePipelineLink().props('disabled')).toBe(true); - }); - }); - - describe('the ios-Fastlane template', () => { - it('renders the template', () => { - expect(findIosTemplate().props('filterTemplates')).toStrictEqual([iOSTemplateName]); - }); - - it('has a disabled link button', () => { - expect(findIosTemplate().props('disabled')).toBe(true); - }); - }); - }); - - describe('when ios runners are available', () => { - beforeEach(() => { - wrapper = createWrapper(); - }); - - describe('the runner setup section', () => { - it('marks the section as completed', () => { - expect(findRunnerSetupTodoEmoji().isVisible()).toBe(false); - expect(findRunnerSetupCompletedEmoji().isVisible()).toBe(true); - }); - - it('does not render the setup runner link', () => { - expect(findSetupRunnerLink().exists()).toBe(false); - }); - }); - - describe('the configure pipeline section', () => { - it('has an enabled link button', () => { - expect(configurePipelineLink().props('disabled')).toBe(false); - }); - - it('links to the pipeline editor with the right template', () => { - expect(configurePipelineLink().attributes('href')).toBe( - `${pipelineEditorPath}?template=${iOSTemplateName}`, - ); - }); - }); - - describe('the ios-Fastlane template', () => { - it('renders the template', () => { - expect(findIosTemplate().props('filterTemplates')).toStrictEqual([iOSTemplateName]); - }); - - it('has an enabled link button', () => { - expect(findIosTemplate().props('disabled')).toBe(false); - }); - - it('links to the pipeline editor with the right template', () => { - expect(configurePipelineLink().attributes('href')).toBe( - `${pipelineEditorPath}?template=${iOSTemplateName}`, - ); - }); - }); - }); -}); diff --git a/spec/frontend/ci/pipelines_page/components/empty_state/no_ci_empty_state_spec.js b/spec/frontend/ci/pipelines_page/components/empty_state/no_ci_empty_state_spec.js index 0c42723f753..ea47edb6842 100644 --- a/spec/frontend/ci/pipelines_page/components/empty_state/no_ci_empty_state_spec.js +++ b/spec/frontend/ci/pipelines_page/components/empty_state/no_ci_empty_state_spec.js @@ -1,11 +1,8 @@ import '~/commons'; import { shallowMount } from '@vue/test-utils'; import { GlEmptyState } from '@gitlab/ui'; -import { stubExperiments } from 'helpers/experimentation_helper'; import EmptyState from '~/ci/pipelines_page/components/empty_state/no_ci_empty_state.vue'; -import GitlabExperiment from '~/experimentation/components/gitlab_experiment.vue'; import PipelinesCiTemplates from '~/ci/pipelines_page/components/empty_state/pipelines_ci_templates.vue'; -import IosTemplates from '~/ci/pipelines_page/components/empty_state/ios_templates.vue'; describe('Pipelines Empty State', () => { let wrapper; @@ -13,7 +10,6 @@ describe('Pipelines Empty State', () => { const findIllustration = () => wrapper.find('img'); const findButton = () => wrapper.find('a'); const pipelinesCiTemplates = () => wrapper.findComponent(PipelinesCiTemplates); - const iosTemplates = () => wrapper.findComponent(IosTemplates); const createWrapper = (props = {}) => { wrapper = shallowMount(EmptyState, { @@ -30,40 +26,17 @@ describe('Pipelines Empty State', () => { }, stubs: { GlEmptyState, - GitlabExperiment, }, }); }; describe('when user can configure CI', () => { - describe('when the ios_specific_templates experiment is active', () => { - beforeEach(() => { - stubExperiments({ ios_specific_templates: 'candidate' }); - createWrapper(); - }); - - it('should render the iOS templates', () => { - expect(iosTemplates().exists()).toBe(true); - }); - - it('should not render the CI/CD templates', () => { - expect(pipelinesCiTemplates().exists()).toBe(false); - }); + beforeEach(() => { + createWrapper(); }); - describe('when the ios_specific_templates experiment is inactive', () => { - beforeEach(() => { - stubExperiments({ ios_specific_templates: 'control' }); - createWrapper(); - }); - - it('should render the CI/CD templates', () => { - expect(pipelinesCiTemplates().exists()).toBe(true); - }); - - it('should not render the iOS templates', () => { - expect(iosTemplates().exists()).toBe(false); - }); + it('should render the CI/CD templates', () => { + expect(pipelinesCiTemplates().exists()).toBe(true); }); }); diff --git a/spec/frontend/ci/pipelines_page/pipelines_spec.js b/spec/frontend/ci/pipelines_page/pipelines_spec.js index 3ce7960ed71..4fa9d52eae4 100644 --- a/spec/frontend/ci/pipelines_page/pipelines_spec.js +++ b/spec/frontend/ci/pipelines_page/pipelines_spec.js @@ -10,7 +10,8 @@ import { import { mount } from '@vue/test-utils'; import MockAdapter from 'axios-mock-adapter'; import { chunk } from 'lodash'; -import { nextTick } from 'vue'; +import Vue, { nextTick } from 'vue'; +import VueApollo from 'vue-apollo'; import mockPipelinesResponse from 'test_fixtures/pipelines/pipelines.json'; import setWindowLocation from 'helpers/set_window_location_helper'; import { TEST_HOST } from 'helpers/test_constants'; @@ -36,10 +37,11 @@ import { setIdTypePreferenceMutationResponse, setIdTypePreferenceMutationResponseWithErrors, } from 'jest/issues/list/mock_data'; - import { stageReply } from 'jest/ci/pipeline_mini_graph/mock_data'; import { users, mockSearch, branches } from '../pipeline_details/mock_data'; +Vue.use(VueApollo); + jest.mock('~/sentry/sentry_browser_wrapper'); jest.mock('~/alert'); diff --git a/spec/graphql/types/analytics/cycle_analytics/value_stream_type_spec.rb b/spec/graphql/types/analytics/cycle_analytics/value_stream_type_spec.rb new file mode 100644 index 00000000000..c4c0d0824b3 --- /dev/null +++ b/spec/graphql/types/analytics/cycle_analytics/value_stream_type_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Types::Analytics::CycleAnalytics::ValueStreamType, feature_category: :value_stream_management do + specify { expect(described_class.graphql_name).to eq('ValueStream') } + + specify { expect(described_class).to require_graphql_authorizations(:read_cycle_analytics) } + + specify { expect(described_class).to have_graphql_fields(:name, :namespace, :project) } +end diff --git a/spec/helpers/ci/pipelines_helper_spec.rb b/spec/helpers/ci/pipelines_helper_spec.rb index 477c07bf3e3..1a5c036b4f1 100644 --- a/spec/helpers/ci/pipelines_helper_spec.rb +++ b/spec/helpers/ci/pipelines_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Ci::PipelinesHelper do +RSpec.describe Ci::PipelinesHelper, feature_category: :continuous_integration do include Devise::Test::ControllerHelpers describe 'pipeline_warnings' do @@ -99,75 +99,6 @@ RSpec.describe Ci::PipelinesHelper do :full_path, :visibility_pipeline_id_type]) end - - describe 'when the project is eligible for the `ios_specific_templates` experiment' do - let_it_be(:project) { create(:project, :auto_devops_disabled, shared_runners_enabled: false) } - let_it_be(:user) { create(:user) } - - before do - allow(helper).to receive(:current_user).and_return(user) - project.add_developer(user) - create(:project_setting, project: project, target_platforms: %w[ios]) - end - - describe 'the `registration_token` attribute' do - subject { data[:registration_token] } - - context 'when the `ios_specific_templates` experiment variant is control' do - before do - stub_experiments(ios_specific_templates: :control) - end - - it { is_expected.to be_nil } - end - - context 'when the `ios_specific_templates` experiment variant is candidate' do - before do - stub_experiments(ios_specific_templates: :candidate) - end - - context 'when the user cannot register project runners' do - before do - allow(helper).to receive(:can?).with(user, :register_project_runners, project).and_return(false) - end - - it { is_expected.to be_nil } - end - - context 'when the user can register project runners' do - it { is_expected.to eq(project.runners_token) } - end - end - end - - describe 'the `ios_runners_available` attribute', :saas do - subject { data[:ios_runners_available] } - - context 'when the `ios_specific_templates` experiment variant is control' do - before do - stub_experiments(ios_specific_templates: :control) - end - - it { is_expected.to be_nil } - end - - context 'when the `ios_specific_templates` experiment variant is candidate' do - before do - stub_experiments(ios_specific_templates: :candidate) - end - - context 'when shared runners are not enabled' do - it { is_expected.to eq('false') } - end - - context 'when shared runners are enabled' do - let_it_be(:project) { create(:project, :auto_devops_disabled, shared_runners_enabled: true) } - - it { is_expected.to eq('true') } - end - end - end - end end describe '#visibility_pipeline_id_type' do diff --git a/spec/models/analytics/cycle_analytics/value_stream_spec.rb b/spec/models/analytics/cycle_analytics/value_stream_spec.rb index 3b3187e0b51..852ace6a920 100644 --- a/spec/models/analytics/cycle_analytics/value_stream_spec.rb +++ b/spec/models/analytics/cycle_analytics/value_stream_spec.rb @@ -99,4 +99,23 @@ RSpec.describe Analytics::CycleAnalytics::ValueStream, type: :model, feature_cat it { is_expected.to be_custom } end end + + describe '#project' do + subject(:value_stream) do + build(:cycle_analytics_value_stream, name: 'value_stream_1', namespace: namespace).project + end + + context 'when namespace is a project' do + let_it_be(:project) { create(:project) } + let(:namespace) { project.project_namespace } + + it { is_expected.to eq(project) } + end + + context 'when namespace is a group' do + let_it_be(:namespace) { create(:group) } + + it { is_expected.to be_nil } + end + end end diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index d26473539e2..1b453fc1971 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -3504,7 +3504,6 @@ - './spec/dependencies/omniauth_saml_spec.rb' - './spec/experiments/application_experiment_spec.rb' - './spec/experiments/in_product_guidance_environments_webide_experiment_spec.rb' -- './spec/experiments/ios_specific_templates_experiment_spec.rb' - './spec/features/abuse_report_spec.rb' - './spec/features/action_cable_logging_spec.rb' - './spec/features/admin/admin_abuse_reports_spec.rb' diff --git a/tooling/danger/analytics_instrumentation.rb b/tooling/danger/analytics_instrumentation.rb index cb0ca998c04..2f8066f4421 100644 --- a/tooling/danger/analytics_instrumentation.rb +++ b/tooling/danger/analytics_instrumentation.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -# rubocop:disable Style/SignalException - module Tooling module Danger module AnalyticsInstrumentation diff --git a/tooling/danger/stable_branch.rb b/tooling/danger/stable_branch.rb index 6335f82da37..8cb9e87964f 100644 --- a/tooling/danger/stable_branch.rb +++ b/tooling/danger/stable_branch.rb @@ -56,7 +56,6 @@ module Tooling Read the "QA e2e:package-and-test-ee" section for more details. MSG - # rubocop:disable Style/SignalException def check! return unless valid_stable_branch? @@ -77,7 +76,6 @@ module Tooling warn WARN_PACKAGE_AND_TEST_MESSAGE end end - # rubocop:enable Style/SignalException def encourage_package_and_qa_execution? valid_stable_branch? &&