diff options
100 files changed, 1166 insertions, 910 deletions
diff --git a/.rubocop.yml b/.rubocop.yml index b133ecbcf93..1ae4ac47bca 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -48,6 +48,11 @@ Cop/StaticTranslationDefinition: - 'spec/**/*' - 'ee/spec/**/*' +InternalAffairs/DeprecateCopHelper: + Enabled: true + Include: + - spec/rubocop/**/*.rb + Lint/LastKeywordArgument: Enabled: true Safe: false diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 1436ec9e484..fbb4e7d5cc8 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -29,6 +29,110 @@ FactoryBot/InlineAssociation: - 'spec/factories/uploads.rb' - 'spec/factories/wiki_pages.rb' +InternalAffairs/DeprecateCopHelper: + Exclude: + - 'spec/rubocop/code_reuse_helpers_spec.rb' + - 'spec/rubocop/qa_helpers_spec.rb' + - 'spec/rubocop/migration_helpers_spec.rb' + - 'spec/rubocop/cop/group_public_or_visible_to_user_spec.rb' + - 'spec/rubocop/cop/static_translation_definition_spec.rb' + - 'spec/rubocop/cop/lint/last_keyword_argument_spec.rb' + - 'spec/rubocop/cop/usage_data/large_table_spec.rb' + - 'spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb' + - 'spec/rubocop/cop/filename_length_spec.rb' + - 'spec/rubocop/cop/put_project_routes_under_scope_spec.rb' + - 'spec/rubocop/cop/gitlab/rails_logger_spec.rb' + - 'spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb' + - 'spec/rubocop/cop/gitlab/avoid_uploaded_file_from_params_spec.rb' + - 'spec/rubocop/cop/gitlab/duplicate_spec_location_spec.rb' + - 'spec/rubocop/cop/gitlab/bulk_insert_spec.rb' + - 'spec/rubocop/cop/gitlab/intersect_spec.rb' + - 'spec/rubocop/cop/gitlab/json_spec.rb' + - 'spec/rubocop/cop/gitlab/httparty_spec.rb' + - 'spec/rubocop/cop/gitlab/policy_rule_boolean_spec.rb' + - 'spec/rubocop/cop/gitlab/except_spec.rb' + - 'spec/rubocop/cop/gitlab/const_get_inherit_false_spec.rb' + - 'spec/rubocop/cop/gitlab/change_timezone_spec.rb' + - 'spec/rubocop/cop/gitlab/predicate_memoization_spec.rb' + - 'spec/rubocop/cop/gitlab/union_spec.rb' + - 'spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb' + - 'spec/rubocop/cop/ruby_interpolation_in_translation_spec.rb' + - 'spec/rubocop/cop/active_record_association_reload_spec.rb' + - 'spec/rubocop/cop/ban_catch_throw_spec.rb' + - 'spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb' + - 'spec/rubocop/cop/avoid_becomes_spec.rb' + - 'spec/rubocop/cop/qa/ambiguous_page_object_name_spec.rb' + - 'spec/rubocop/cop/qa/element_with_pattern_spec.rb' + - 'spec/rubocop/cop/inject_enterprise_edition_module_spec.rb' + - 'spec/rubocop/cop/code_reuse/finder_spec.rb' + - 'spec/rubocop/cop/code_reuse/worker_spec.rb' + - 'spec/rubocop/cop/code_reuse/service_class_spec.rb' + - 'spec/rubocop/cop/code_reuse/presenter_spec.rb' + - 'spec/rubocop/cop/code_reuse/serializer_spec.rb' + - 'spec/rubocop/cop/avoid_keyword_arguments_in_sidekiq_workers_spec.rb' + - 'spec/rubocop/cop/default_scope_spec.rb' + - 'spec/rubocop/cop/graphql/resolver_type_spec.rb' + - 'spec/rubocop/cop/graphql/descriptions_spec.rb' + - 'spec/rubocop/cop/graphql/json_type_spec.rb' + - 'spec/rubocop/cop/graphql/gid_expected_type_spec.rb' + - 'spec/rubocop/cop/graphql/authorize_types_spec.rb' + - 'spec/rubocop/cop/graphql/id_type_spec.rb' + - 'spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb' + - 'spec/rubocop/cop/scalability/idempotent_worker_spec.rb' + - 'spec/rubocop/cop/scalability/cron_worker_context_spec.rb' + - 'spec/rubocop/cop/scalability/file_uploads_spec.rb' + - 'spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb' + - 'spec/rubocop/cop/api/base_spec.rb' + - 'spec/rubocop/cop/destroy_all_spec.rb' + - 'spec/rubocop/cop/safe_params_spec.rb' + - 'spec/rubocop/cop/include_sidekiq_worker_spec.rb' + - 'spec/rubocop/cop/rspec/factories_in_migration_specs_spec.rb' + - 'spec/rubocop/cop/rspec/timecop_freeze_spec.rb' + - 'spec/rubocop/cop/rspec/any_instance_of_spec.rb' + - 'spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb' + - 'spec/rubocop/cop/rspec/top_level_describe_path_spec.rb' + - 'spec/rubocop/cop/rspec/be_success_matcher_spec.rb' + - 'spec/rubocop/cop/rspec/htt_party_basic_auth_spec.rb' + - 'spec/rubocop/cop/rspec/modify_sidekiq_middleware_spec.rb' + - 'spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb' + - 'spec/rubocop/cop/rspec/have_gitlab_http_status_spec.rb' + - 'spec/rubocop/cop/rspec/timecop_travel_spec.rb' + - 'spec/rubocop/cop/rspec/env_assignment_spec.rb' + - 'spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb' + - 'spec/rubocop/cop/performance/ar_count_each_spec.rb' + - 'spec/rubocop/cop/performance/readlines_each_spec.rb' + - 'spec/rubocop/cop/project_path_helper_spec.rb' + - 'spec/rubocop/cop/migration/safer_boolean_column_spec.rb' + - 'spec/rubocop/cop/migration/remove_index_spec.rb' + - 'spec/rubocop/cop/migration/add_index_spec.rb' + - 'spec/rubocop/cop/migration/drop_table_spec.rb' + - 'spec/rubocop/cop/migration/hash_index_spec.rb' + - 'spec/rubocop/cop/migration/datetime_spec.rb' + - 'spec/rubocop/cop/migration/add_column_with_default_spec.rb' + - 'spec/rubocop/cop/migration/prevent_strings_spec.rb' + - 'spec/rubocop/cop/migration/add_timestamps_spec.rb' + - 'spec/rubocop/cop/migration/add_concurrent_index_spec.rb' + - 'spec/rubocop/cop/migration/update_column_in_batches_spec.rb' + - 'spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb' + - 'spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb' + - 'spec/rubocop/cop/migration/schedule_async_spec.rb' + - 'spec/rubocop/cop/migration/timestamps_spec.rb' + - 'spec/rubocop/cop/migration/remove_concurrent_index_spec.rb' + - 'spec/rubocop/cop/migration/add_columns_to_wide_tables_spec.rb' + - 'spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb' + - 'spec/rubocop/cop/migration/add_reference_spec.rb' + - 'spec/rubocop/cop/migration/remove_column_spec.rb' + - 'spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb' + - 'spec/rubocop/cop/migration/add_concurrent_foreign_key_spec.rb' + - 'spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb' + - 'spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb' + - 'spec/rubocop/cop/avoid_return_from_blocks_spec.rb' + - 'spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb' + - 'spec/rubocop/cop/put_group_routes_under_scope_spec.rb' + - 'spec/rubocop/cop/sidekiq_options_queue_spec.rb' + - 'spec/rubocop/cop/ignored_columns_spec.rb' + - 'spec/rubocop/cop/prefer_class_methods_over_module_spec.rb' + Rails/SaveBang: Exclude: - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb' @@ -662,73 +766,6 @@ RSpec/TimecopTravel: Graphql/Descriptions: Exclude: - - 'app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb' - - 'app/graphql/mutations/alert_management/base.rb' - - 'app/graphql/mutations/alert_management/http_integration/create.rb' - - 'app/graphql/mutations/alert_management/http_integration/destroy.rb' - - 'app/graphql/mutations/alert_management/http_integration/http_integration_base.rb' - - 'app/graphql/mutations/alert_management/http_integration/reset_token.rb' - - 'app/graphql/mutations/alert_management/http_integration/update.rb' - - 'app/graphql/mutations/alert_management/prometheus_integration/create.rb' - - 'app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb' - - 'app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb' - - 'app/graphql/mutations/alert_management/prometheus_integration/update.rb' - - 'app/graphql/mutations/alert_management/update_alert_status.rb' - - 'app/graphql/mutations/award_emojis/base.rb' - - 'app/graphql/mutations/boards/destroy.rb' - - 'app/graphql/mutations/boards/issues/issue_move_list.rb' - - 'app/graphql/mutations/boards/lists/base.rb' - - 'app/graphql/mutations/boards/lists/create.rb' - - 'app/graphql/mutations/boards/lists/update.rb' - - 'app/graphql/mutations/branches/create.rb' - - 'app/graphql/mutations/ci/base.rb' - - 'app/graphql/mutations/ci/pipeline_retry.rb' - - 'app/graphql/mutations/commits/create.rb' - - 'app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb' - - 'app/graphql/mutations/concerns/mutations/resolves_subscription.rb' - - 'app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb' - - 'app/graphql/mutations/container_expiration_policies/update.rb' - - 'app/graphql/mutations/container_repositories/destroy_tags.rb' - - 'app/graphql/mutations/custom_emoji/create.rb' - - 'app/graphql/mutations/design_management/base.rb' - - 'app/graphql/mutations/design_management/delete.rb' - - 'app/graphql/mutations/design_management/move.rb' - - 'app/graphql/mutations/design_management/upload.rb' - - 'app/graphql/mutations/discussions/toggle_resolve.rb' - - 'app/graphql/mutations/environments/canary_ingress/update.rb' - - 'app/graphql/mutations/issues/base.rb' - - 'app/graphql/mutations/issues/create.rb' - - 'app/graphql/mutations/issues/move.rb' - - 'app/graphql/mutations/issues/set_due_date.rb' - - 'app/graphql/mutations/issues/set_locked.rb' - - 'app/graphql/mutations/issues/update.rb' - - 'app/graphql/mutations/jira_import/import_users.rb' - - 'app/graphql/mutations/jira_import/start.rb' - - 'app/graphql/mutations/labels/create.rb' - - 'app/graphql/mutations/merge_requests/base.rb' - - 'app/graphql/mutations/merge_requests/create.rb' - - 'app/graphql/mutations/metrics/dashboard/annotations/create.rb' - - 'app/graphql/mutations/metrics/dashboard/annotations/delete.rb' - - 'app/graphql/mutations/notes/base.rb' - - 'app/graphql/mutations/notes/create/base.rb' - - 'app/graphql/mutations/notes/create/note.rb' - - 'app/graphql/mutations/notes/destroy.rb' - - 'app/graphql/mutations/notes/reposition_image_diff_note.rb' - - 'app/graphql/mutations/notes/update/base.rb' - - 'app/graphql/mutations/releases/base.rb' - - 'app/graphql/mutations/releases/create.rb' - - 'app/graphql/mutations/releases/update.rb' - - 'app/graphql/mutations/snippets/base.rb' - - 'app/graphql/mutations/snippets/create.rb' - - 'app/graphql/mutations/snippets/destroy.rb' - - 'app/graphql/mutations/snippets/mark_as_spam.rb' - - 'app/graphql/mutations/snippets/update.rb' - - 'app/graphql/mutations/terraform/state/base.rb' - - 'app/graphql/mutations/todos/create.rb' - - 'app/graphql/mutations/todos/mark_all_done.rb' - - 'app/graphql/mutations/todos/mark_done.rb' - - 'app/graphql/mutations/todos/restore.rb' - - 'app/graphql/mutations/todos/restore_many.rb' - 'app/graphql/resolvers/admin/analytics/instance_statistics/measurements_resolver.rb' - 'app/graphql/resolvers/alert_management/alert_resolver.rb' - 'app/graphql/resolvers/alert_management/alert_status_counts_resolver.rb' @@ -372,7 +372,7 @@ group :development, :test do gem 'spring', '~> 2.1.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'gitlab-styles', '~> 5.3.0', require: false + gem 'gitlab-styles', '~> 5.4.0', require: false gem 'scss_lint', '~> 0.59.0', require: false gem 'haml_lint', '~> 0.36.0', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 81faa6278e4..ec938360ed6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -455,7 +455,7 @@ GEM gitlab-puma (>= 2.7, < 5) gitlab-sidekiq-fetcher (0.5.2) sidekiq (~> 5) - gitlab-styles (5.3.0) + gitlab-styles (5.4.0) rubocop (~> 0.89.1) rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.8.1) @@ -1366,7 +1366,7 @@ DEPENDENCIES gitlab-puma (~> 4.3.3.gitlab.2) gitlab-puma_worker_killer (~> 0.1.1.gitlab.1) gitlab-sidekiq-fetcher (= 0.5.2) - gitlab-styles (~> 5.3.0) + gitlab-styles (~> 5.4.0) gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue index 048b83b2347..2c4feddc9bb 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue @@ -50,7 +50,6 @@ export default { <div class="table-section section-10 d-none d-md-block pipeline-tags"> <gl-link :href="pipeline.path" - class="js-pipeline-url-link js-onboarding-pipeline-item" data-testid="pipeline-url-link" data-qa-selector="pipeline_url_link" > @@ -70,7 +69,7 @@ export default { v-if="pipeline.flags.latest" v-gl-tooltip :title="__('Latest pipeline for the most recent commit on this branch')" - class="js-pipeline-url-latest badge badge-success" + class="badge badge-success" data-testid="pipeline-url-latest" >{{ __('latest') }}</span > @@ -78,7 +77,7 @@ export default { v-if="pipeline.flags.yaml_errors" v-gl-tooltip :title="pipeline.yaml_errors" - class="js-pipeline-url-yaml badge badge-danger" + class="badge badge-danger" data-testid="pipeline-url-yaml" >{{ __('yaml invalid') }}</span > @@ -86,7 +85,7 @@ export default { v-if="pipeline.flags.failure_reason" v-gl-tooltip :title="pipeline.failure_reason" - class="js-pipeline-url-failure badge badge-danger" + class="badge badge-danger" data-testid="pipeline-url-failure" >{{ __('error') }}</span > @@ -94,7 +93,7 @@ export default { v-if="pipeline.flags.auto_devops" :id="`pipeline-url-autodevops-${pipeline.id}`" tabindex="0" - class="js-pipeline-url-autodevops badge badge-info autodevops-badge" + class="badge badge-info autodevops-badge" data-testid="pipeline-url-autodevops" role="button" >{{ __('Auto DevOps') }}</gl-link @@ -125,7 +124,7 @@ export default { </gl-popover> <span v-if="pipeline.flags.stuck" - class="js-pipeline-url-stuck badge badge-warning" + class="badge badge-warning" data-testid="pipeline-url-stuck" >{{ __('stuck') }}</span > @@ -137,7 +136,7 @@ export default { 'Pipelines for merge requests are configured. A detached pipeline runs in the context of the merge request, and not against the merged result. Learn more in the documentation for Pipelines for Merged Results.', ) " - class="js-pipeline-url-detached badge badge-info" + class="badge badge-info" data-testid="pipeline-url-detached" >{{ __('detached') }}</span > diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss index c5ffcb48814..00230d61a46 100644 --- a/app/assets/stylesheets/framework/dropdowns.scss +++ b/app/assets/stylesheets/framework/dropdowns.scss @@ -567,14 +567,13 @@ margin-bottom: 10px; padding: 0 10px; - .fa, .input-icon, .dropdown-input-clear, .dropdown-input-search { position: absolute; top: $gl-padding-8; right: 20px; - color: $dropdown-input-fa-color; + color: $gray-500; font-size: 12px; pointer-events: none; } diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss index 5f0ba8ca9ce..d5a0371e386 100644 --- a/app/assets/stylesheets/framework/variables.scss +++ b/app/assets/stylesheets/framework/variables.scss @@ -546,7 +546,6 @@ $dropdown-vertical-offset: 4px; $dropdown-empty-row-bg: rgba(#000, 0.04); $dropdown-shadow-color: rgba(#000, 0.1); $dropdown-title-btn-color: #bfbfbf; -$dropdown-input-fa-color: #c7c7c7; $dropdown-input-focus-shadow: rgba($blue-300, 0.4); $dropdown-loading-bg: rgba($white, 0.6); $dropdown-chevron-size: 10px; diff --git a/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss b/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss index 52cc7d3449e..093cba3560f 100644 --- a/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss +++ b/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss @@ -85,13 +85,12 @@ color: var(--ide-input-border, $gl-text-color-tertiary); } - .dropdown-input .fa, .dropdown-input .dropdown-input-clear { - color: var(--ide-input-border, $dropdown-input-fa-color); + color: var(--ide-input-border, $gray-500); } .ide-nav-form .input-icon { - color: var(--ide-input-border, $dropdown-input-fa-color); + color: var(--ide-input-border, $gray-500); } code { diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 382fbfaac25..7c390130714 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -69,8 +69,9 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo :toggle_award_emoji, :toggle_subscription, :update ] - feature_category :code_testing, [:test_reports, :coverage_reports, :terraform_reports] + feature_category :code_testing, [:test_reports, :coverage_reports] feature_category :accessibility_testing, [:accessibility_reports] + feature_category :infrastructure_as_code, [:terraform_reports] def index @merge_requests = @issuables diff --git a/app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb b/app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb index 17f9b5b5637..32ca6de9b96 100644 --- a/app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb +++ b/app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb @@ -18,12 +18,12 @@ module Mutations argument :queue_name, GraphQL::STRING_TYPE, required: true, - description: 'The name of the queue to delete jobs from' + description: 'The name of the queue to delete jobs from.' field :result, Types::Admin::SidekiqQueues::DeleteJobsResponseType, null: true, - description: 'Information about the status of the deletion request' + description: 'Information about the status of the deletion request.' def ready?(**args) unless current_user&.admin? diff --git a/app/graphql/mutations/alert_management/base.rb b/app/graphql/mutations/alert_management/base.rb index 8c6b4005cf8..3a57cb9670d 100644 --- a/app/graphql/mutations/alert_management/base.rb +++ b/app/graphql/mutations/alert_management/base.rb @@ -7,26 +7,26 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: "The project the alert to mutate is in" + description: "The project the alert to mutate is in." argument :iid, GraphQL::STRING_TYPE, required: true, - description: "The IID of the alert to mutate" + description: "The IID of the alert to mutate." field :alert, Types::AlertManagement::AlertType, null: true, - description: "The alert after mutation" + description: "The alert after mutation." field :todo, Types::TodoType, null: true, - description: "The todo after mutation" + description: "The todo after mutation." field :issue, Types::IssueType, null: true, - description: "The issue created after mutation" + description: "The issue created after mutation." authorize :update_alert_management_alert diff --git a/app/graphql/mutations/alert_management/http_integration/create.rb b/app/graphql/mutations/alert_management/http_integration/create.rb index ddb75e66bb4..f6444997d83 100644 --- a/app/graphql/mutations/alert_management/http_integration/create.rb +++ b/app/graphql/mutations/alert_management/http_integration/create.rb @@ -10,15 +10,15 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'The project to create the integration in' + description: 'The project to create the integration in.' argument :name, GraphQL::STRING_TYPE, required: true, - description: 'The name of the integration' + description: 'The name of the integration.' argument :active, GraphQL::BOOLEAN_TYPE, required: true, - description: 'Whether the integration is receiving alerts' + description: 'Whether the integration is receiving alerts.' def resolve(args) project = authorized_find!(full_path: args[:project_path]) diff --git a/app/graphql/mutations/alert_management/http_integration/destroy.rb b/app/graphql/mutations/alert_management/http_integration/destroy.rb index 45d4bd778da..d0420e2bcb5 100644 --- a/app/graphql/mutations/alert_management/http_integration/destroy.rb +++ b/app/graphql/mutations/alert_management/http_integration/destroy.rb @@ -8,7 +8,7 @@ module Mutations argument :id, Types::GlobalIDType[::AlertManagement::HttpIntegration], required: true, - description: "The ID of the integration to remove" + description: "The ID of the integration to remove." def resolve(id:) integration = authorized_find!(id: id) diff --git a/app/graphql/mutations/alert_management/http_integration/http_integration_base.rb b/app/graphql/mutations/alert_management/http_integration/http_integration_base.rb index d328eabf244..147df982bec 100644 --- a/app/graphql/mutations/alert_management/http_integration/http_integration_base.rb +++ b/app/graphql/mutations/alert_management/http_integration/http_integration_base.rb @@ -7,7 +7,7 @@ module Mutations field :integration, Types::AlertManagement::HttpIntegrationType, null: true, - description: "The HTTP integration" + description: "The HTTP integration." authorize :admin_operations diff --git a/app/graphql/mutations/alert_management/http_integration/reset_token.rb b/app/graphql/mutations/alert_management/http_integration/reset_token.rb index 3938b38260e..bf73a9eaae7 100644 --- a/app/graphql/mutations/alert_management/http_integration/reset_token.rb +++ b/app/graphql/mutations/alert_management/http_integration/reset_token.rb @@ -8,7 +8,7 @@ module Mutations argument :id, Types::GlobalIDType[::AlertManagement::HttpIntegration], required: true, - description: "The ID of the integration to mutate" + description: "The ID of the integration to mutate." def resolve(id:) integration = authorized_find!(id: id) diff --git a/app/graphql/mutations/alert_management/http_integration/update.rb b/app/graphql/mutations/alert_management/http_integration/update.rb index 98e0f7eb14f..431fccaa5e5 100644 --- a/app/graphql/mutations/alert_management/http_integration/update.rb +++ b/app/graphql/mutations/alert_management/http_integration/update.rb @@ -8,15 +8,15 @@ module Mutations argument :id, Types::GlobalIDType[::AlertManagement::HttpIntegration], required: true, - description: "The ID of the integration to mutate" + description: "The ID of the integration to mutate." argument :name, GraphQL::STRING_TYPE, required: false, - description: "The name of the integration" + description: "The name of the integration." argument :active, GraphQL::BOOLEAN_TYPE, required: false, - description: "Whether the integration is receiving alerts" + description: "Whether the integration is receiving alerts." def resolve(args) integration = authorized_find!(id: args[:id]) diff --git a/app/graphql/mutations/alert_management/prometheus_integration/create.rb b/app/graphql/mutations/alert_management/prometheus_integration/create.rb index 935ec53795c..c676cde90b4 100644 --- a/app/graphql/mutations/alert_management/prometheus_integration/create.rb +++ b/app/graphql/mutations/alert_management/prometheus_integration/create.rb @@ -10,15 +10,15 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'The project to create the integration in' + description: 'The project to create the integration in.' argument :active, GraphQL::BOOLEAN_TYPE, required: true, - description: 'Whether the integration is receiving alerts' + description: 'Whether the integration is receiving alerts.' argument :api_url, GraphQL::STRING_TYPE, required: true, - description: 'Endpoint at which prometheus can be queried' + description: 'Endpoint at which prometheus can be queried.' def resolve(args) project = authorized_find!(full_path: args[:project_path]) diff --git a/app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb b/app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb index 6b690ac239a..cb243f49b33 100644 --- a/app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb +++ b/app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb @@ -7,7 +7,7 @@ module Mutations field :integration, Types::AlertManagement::PrometheusIntegrationType, null: true, - description: "The newly created integration" + description: "The newly created integration." authorize :admin_project diff --git a/app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb b/app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb index effecd8364d..428be091436 100644 --- a/app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb +++ b/app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb @@ -8,7 +8,7 @@ module Mutations argument :id, Types::GlobalIDType[::PrometheusService], required: true, - description: "The ID of the integration to mutate" + description: "The ID of the integration to mutate." def resolve(id:) integration = authorized_find!(id: id) diff --git a/app/graphql/mutations/alert_management/prometheus_integration/update.rb b/app/graphql/mutations/alert_management/prometheus_integration/update.rb index 46f4c23b739..62fb81bca5a 100644 --- a/app/graphql/mutations/alert_management/prometheus_integration/update.rb +++ b/app/graphql/mutations/alert_management/prometheus_integration/update.rb @@ -8,15 +8,15 @@ module Mutations argument :id, Types::GlobalIDType[::PrometheusService], required: true, - description: "The ID of the integration to mutate" + description: "The ID of the integration to mutate." argument :active, GraphQL::BOOLEAN_TYPE, required: false, - description: "Whether the integration is receiving alerts" + description: "Whether the integration is receiving alerts." argument :api_url, GraphQL::STRING_TYPE, required: false, - description: "Endpoint at which prometheus can be queried" + description: "Endpoint at which prometheus can be queried." def resolve(args) integration = authorized_find!(id: args[:id]) diff --git a/app/graphql/mutations/alert_management/update_alert_status.rb b/app/graphql/mutations/alert_management/update_alert_status.rb index 74185dca529..67f8ba9118f 100644 --- a/app/graphql/mutations/alert_management/update_alert_status.rb +++ b/app/graphql/mutations/alert_management/update_alert_status.rb @@ -7,7 +7,7 @@ module Mutations argument :status, Types::AlertManagement::StatusEnum, required: true, - description: 'The status to set the alert' + description: 'The status to set the alert.' def resolve(project_path:, iid:, status:) alert = authorized_find!(project_path: project_path, iid: iid) diff --git a/app/graphql/mutations/award_emojis/base.rb b/app/graphql/mutations/award_emojis/base.rb index 4bd8304c3fc..4f41a9cafd8 100644 --- a/app/graphql/mutations/award_emojis/base.rb +++ b/app/graphql/mutations/award_emojis/base.rb @@ -12,7 +12,7 @@ module Mutations argument :awardable_id, ::Types::GlobalIDType[::Awardable], required: true, - description: 'The global ID of the awardable resource' + description: 'The global ID of the awardable resource.' argument :name, GraphQL::STRING_TYPE, @@ -22,7 +22,7 @@ module Mutations field :award_emoji, Types::AwardEmojis::AwardEmojiType, null: true, - description: 'The award emoji after mutation' + description: 'The award emoji after mutation.' private diff --git a/app/graphql/mutations/boards/destroy.rb b/app/graphql/mutations/boards/destroy.rb index 7c381113d38..8ec13b885d5 100644 --- a/app/graphql/mutations/boards/destroy.rb +++ b/app/graphql/mutations/boards/destroy.rb @@ -8,11 +8,11 @@ module Mutations field :board, Types::BoardType, null: true, - description: 'The board after mutation' + description: 'The board after mutation.' argument :id, ::Types::GlobalIDType[::Board], required: true, - description: 'The global ID of the board to destroy' + description: 'The global ID of the board to destroy.' authorize :admin_board diff --git a/app/graphql/mutations/boards/issues/issue_move_list.rb b/app/graphql/mutations/boards/issues/issue_move_list.rb index 813b6d3cb2a..91dfd9fc3e9 100644 --- a/app/graphql/mutations/boards/issues/issue_move_list.rb +++ b/app/graphql/mutations/boards/issues/issue_move_list.rb @@ -9,31 +9,31 @@ module Mutations argument :board_id, GraphQL::ID_TYPE, required: true, loads: Types::BoardType, - description: 'Global ID of the board that the issue is in' + description: 'Global ID of the board that the issue is in.' argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Project the issue to mutate is in' + description: 'Project the issue to mutate is in.' argument :iid, GraphQL::STRING_TYPE, required: true, - description: 'IID of the issue to mutate' + description: 'IID of the issue to mutate.' argument :from_list_id, GraphQL::ID_TYPE, required: false, - description: 'ID of the board list that the issue will be moved from' + description: 'ID of the board list that the issue will be moved from.' argument :to_list_id, GraphQL::ID_TYPE, required: false, - description: 'ID of the board list that the issue will be moved to' + description: 'ID of the board list that the issue will be moved to.' argument :move_before_id, GraphQL::ID_TYPE, required: false, - description: 'ID of issue that should be placed before the current issue' + description: 'ID of issue that should be placed before the current issue.' argument :move_after_id, GraphQL::ID_TYPE, required: false, - description: 'ID of issue that should be placed after the current issue' + description: 'ID of issue that should be placed after the current issue.' def ready?(**args) if move_arguments(args).blank? diff --git a/app/graphql/mutations/boards/lists/base.rb b/app/graphql/mutations/boards/lists/base.rb index d244d6bf8dd..34c138bddc9 100644 --- a/app/graphql/mutations/boards/lists/base.rb +++ b/app/graphql/mutations/boards/lists/base.rb @@ -8,12 +8,12 @@ module Mutations argument :board_id, ::Types::GlobalIDType[::Board], required: true, - description: 'Global ID of the issue board to mutate' + description: 'Global ID of the issue board to mutate.' field :list, Types::BoardListType, null: true, - description: 'List of the issue board' + description: 'List of the issue board.' authorize :admin_list diff --git a/app/graphql/mutations/boards/lists/create.rb b/app/graphql/mutations/boards/lists/create.rb index f6df63365b2..9eb9a4d4b87 100644 --- a/app/graphql/mutations/boards/lists/create.rb +++ b/app/graphql/mutations/boards/lists/create.rb @@ -8,11 +8,11 @@ module Mutations argument :backlog, GraphQL::BOOLEAN_TYPE, required: false, - description: 'Create the backlog list' + description: 'Create the backlog list.' argument :label_id, ::Types::GlobalIDType[::Label], required: false, - description: 'Global ID of an existing label' + description: 'Global ID of an existing label.' def ready?(**args) if args.slice(*mutually_exclusive_args).size != 1 diff --git a/app/graphql/mutations/boards/lists/update.rb b/app/graphql/mutations/boards/lists/update.rb index 14502b5174f..d30d1d89bb2 100644 --- a/app/graphql/mutations/boards/lists/update.rb +++ b/app/graphql/mutations/boards/lists/update.rb @@ -13,16 +13,16 @@ module Mutations argument :position, GraphQL::INT_TYPE, required: false, - description: 'Position of list within the board' + description: 'Position of list within the board.' argument :collapsed, GraphQL::BOOLEAN_TYPE, required: false, - description: 'Indicates if list is collapsed for this user' + description: 'Indicates if list is collapsed for this user.' field :list, Types::BoardListType, null: true, - description: 'Mutated list' + description: 'Mutated list.' def resolve(list: nil, **args) raise_resource_not_available_error! unless can_read_list?(list) diff --git a/app/graphql/mutations/branches/create.rb b/app/graphql/mutations/branches/create.rb index 214fead2e80..9fe9bef5403 100644 --- a/app/graphql/mutations/branches/create.rb +++ b/app/graphql/mutations/branches/create.rb @@ -9,21 +9,21 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Project full path the branch is associated with' + description: 'Project full path the branch is associated with.' argument :name, GraphQL::STRING_TYPE, required: true, - description: 'Name of the branch' + description: 'Name of the branch.' argument :ref, GraphQL::STRING_TYPE, required: true, - description: 'Branch name or commit SHA to create branch from' + description: 'Branch name or commit SHA to create branch from.' field :branch, Types::BranchType, null: true, - description: 'Branch after mutation' + description: 'Branch after mutation.' authorize :push_code diff --git a/app/graphql/mutations/commits/create.rb b/app/graphql/mutations/commits/create.rb index 2b9107350fd..ae14401558b 100644 --- a/app/graphql/mutations/commits/create.rb +++ b/app/graphql/mutations/commits/create.rb @@ -9,15 +9,15 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Project full path the branch is associated with' + description: 'Project full path the branch is associated with.' argument :branch, GraphQL::STRING_TYPE, required: true, - description: 'Name of the branch to commit into, it can be a new branch' + description: 'Name of the branch to commit into, it can be a new branch.' argument :start_branch, GraphQL::STRING_TYPE, required: false, - description: 'If on a new branch, name of the original branch' + description: 'If on a new branch, name of the original branch.' argument :message, GraphQL::STRING_TYPE, @@ -27,12 +27,12 @@ module Mutations argument :actions, [Types::CommitActionType], required: true, - description: 'Array of action hashes to commit as a batch' + description: 'Array of action hashes to commit as a batch.' field :commit, Types::CommitType, null: true, - description: 'The commit after mutation' + description: 'The commit after mutation.' authorize :push_code diff --git a/app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb b/app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb index 04a9abf9529..e2b3f4b046f 100644 --- a/app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb +++ b/app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb @@ -9,11 +9,11 @@ module Mutations included do argument :project_path, GraphQL::ID_TYPE, required: false, - description: 'The project full path the resource is associated with' + description: 'The project full path the resource is associated with.' argument :group_path, GraphQL::ID_TYPE, required: false, - description: 'The group full path the resource is associated with' + description: 'The group full path the resource is associated with.' end def ready?(**args) diff --git a/app/graphql/mutations/concerns/mutations/resolves_subscription.rb b/app/graphql/mutations/concerns/mutations/resolves_subscription.rb index e8c5d0d404d..e26ae7d228c 100644 --- a/app/graphql/mutations/concerns/mutations/resolves_subscription.rb +++ b/app/graphql/mutations/concerns/mutations/resolves_subscription.rb @@ -7,7 +7,7 @@ module Mutations argument :subscribed_state, GraphQL::BOOLEAN_TYPE, required: true, - description: 'The desired state of the subscription' + description: 'The desired state of the subscription.' end def resolve(project_path:, iid:, subscribed_state:) diff --git a/app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb b/app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb index 7aef55f8011..e5df8565618 100644 --- a/app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb +++ b/app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb @@ -8,7 +8,7 @@ module Mutations field :spam, GraphQL::BOOLEAN_TYPE, null: true, - description: 'Indicates whether the operation returns a record detected as spam' + description: 'Indicates whether the operation returns a record detected as spam.' end def with_spam_params(&block) diff --git a/app/graphql/mutations/container_expiration_policies/update.rb b/app/graphql/mutations/container_expiration_policies/update.rb index 4bff04bb705..37cf2fa6bf3 100644 --- a/app/graphql/mutations/container_expiration_policies/update.rb +++ b/app/graphql/mutations/container_expiration_policies/update.rb @@ -12,7 +12,7 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'The project path where the container expiration policy is located' + description: 'The project path where the container expiration policy is located.' argument :enabled, GraphQL::BOOLEAN_TYPE, @@ -47,7 +47,7 @@ module Mutations field :container_expiration_policy, Types::ContainerExpirationPolicyType, null: true, - description: 'The container expiration policy after mutation' + description: 'The container expiration policy after mutation.' def resolve(project_path:, **args) project = authorized_find!(full_path: project_path) diff --git a/app/graphql/mutations/container_repositories/destroy_tags.rb b/app/graphql/mutations/container_repositories/destroy_tags.rb index ca6a67867c3..636ceccee04 100644 --- a/app/graphql/mutations/container_repositories/destroy_tags.rb +++ b/app/graphql/mutations/container_repositories/destroy_tags.rb @@ -28,7 +28,7 @@ module Mutations field :deleted_tag_names, [GraphQL::STRING_TYPE], - description: 'Deleted container repository tags', + description: 'Deleted container repository tags.', null: false def resolve(id:, tag_names:) diff --git a/app/graphql/mutations/custom_emoji/create.rb b/app/graphql/mutations/custom_emoji/create.rb index d912a29d12e..9ec96be0f26 100644 --- a/app/graphql/mutations/custom_emoji/create.rb +++ b/app/graphql/mutations/custom_emoji/create.rb @@ -12,20 +12,20 @@ module Mutations field :custom_emoji, Types::CustomEmojiType, null: true, - description: 'The new custom emoji' + description: 'The new custom emoji.' argument :group_path, GraphQL::ID_TYPE, required: true, - description: 'Namespace full path the emoji is associated with' + description: 'Namespace full path the emoji is associated with.' argument :name, GraphQL::STRING_TYPE, required: true, - description: 'Name of the emoji' + description: 'Name of the emoji.' argument :url, GraphQL::STRING_TYPE, required: true, as: :file, - description: 'Location of the emoji file' + description: 'Location of the emoji file.' def resolve(group_path:, **args) group = authorized_find!(group_path: group_path) diff --git a/app/graphql/mutations/design_management/base.rb b/app/graphql/mutations/design_management/base.rb index 69fd22e46cd..14d85885793 100644 --- a/app/graphql/mutations/design_management/base.rb +++ b/app/graphql/mutations/design_management/base.rb @@ -7,11 +7,11 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: "The project where the issue is to upload designs for" + description: "The project where the issue is to upload designs for." argument :iid, GraphQL::ID_TYPE, required: true, - description: "The IID of the issue to modify designs for" + description: "The IID of the issue to modify designs for." private diff --git a/app/graphql/mutations/design_management/delete.rb b/app/graphql/mutations/design_management/delete.rb index d2ef2c9bcca..f604542edef 100644 --- a/app/graphql/mutations/design_management/delete.rb +++ b/app/graphql/mutations/design_management/delete.rb @@ -9,14 +9,14 @@ module Mutations argument :filenames, [GraphQL::STRING_TYPE], required: true, - description: "The filenames of the designs to delete", + description: "The filenames of the designs to delete.", prepare: ->(names, _ctx) do names.presence || (raise Errors::ArgumentError, 'no filenames') end field :version, Types::DesignManagement::VersionType, null: true, # null on error - description: 'The new version in which the designs are deleted' + description: 'The new version in which the designs are deleted.' authorize :destroy_design diff --git a/app/graphql/mutations/design_management/move.rb b/app/graphql/mutations/design_management/move.rb index aed4cfec0fd..fe280e926d2 100644 --- a/app/graphql/mutations/design_management/move.rb +++ b/app/graphql/mutations/design_management/move.rb @@ -8,17 +8,17 @@ module Mutations DesignID = ::Types::GlobalIDType[::DesignManagement::Design] argument :id, DesignID, required: true, as: :current_design, - description: "ID of the design to move" + description: "ID of the design to move." argument :previous, DesignID, required: false, as: :previous_design, - description: "ID of the immediately preceding design" + description: "ID of the immediately preceding design." argument :next, DesignID, required: false, as: :next_design, - description: "ID of the immediately following design" + description: "ID of the immediately following design." field :design_collection, Types::DesignManagement::DesignCollectionType, null: true, - description: "The current state of the collection" + description: "The current state of the collection." def resolve(**args) service = ::DesignManagement::MoveDesignsService.new(current_user, parameters(**args)) diff --git a/app/graphql/mutations/design_management/upload.rb b/app/graphql/mutations/design_management/upload.rb index 1ed7f8e49e6..2ccf2ef8ff5 100644 --- a/app/graphql/mutations/design_management/upload.rb +++ b/app/graphql/mutations/design_management/upload.rb @@ -7,13 +7,13 @@ module Mutations argument :files, [ApolloUploadServer::Upload], required: true, - description: "The files to upload" + description: "The files to upload." authorize :create_design field :designs, [Types::DesignManagement::DesignType], null: false, - description: "The designs that were uploaded by the mutation" + description: "The designs that were uploaded by the mutation." field :skipped_designs, [Types::DesignManagement::DesignType], null: false, diff --git a/app/graphql/mutations/discussions/toggle_resolve.rb b/app/graphql/mutations/discussions/toggle_resolve.rb index 0e3baf8d548..c9834c946b2 100644 --- a/app/graphql/mutations/discussions/toggle_resolve.rb +++ b/app/graphql/mutations/discussions/toggle_resolve.rb @@ -10,17 +10,17 @@ module Mutations argument :id, Types::GlobalIDType[Discussion], required: true, - description: 'The global ID of the discussion' + description: 'The global ID of the discussion.' argument :resolve, GraphQL::BOOLEAN_TYPE, required: true, - description: 'Will resolve the discussion when true, and unresolve the discussion when false' + description: 'Will resolve the discussion when true, and unresolve the discussion when false.' field :discussion, Types::Notes::DiscussionType, null: true, - description: 'The discussion after mutation' + description: 'The discussion after mutation.' def resolve(id:, resolve:) discussion = authorized_find_discussion!(id: id) diff --git a/app/graphql/mutations/environments/canary_ingress/update.rb b/app/graphql/mutations/environments/canary_ingress/update.rb index 1798143053a..45dcc8314a0 100644 --- a/app/graphql/mutations/environments/canary_ingress/update.rb +++ b/app/graphql/mutations/environments/canary_ingress/update.rb @@ -11,12 +11,12 @@ module Mutations argument :id, ::Types::GlobalIDType[::Environment], required: true, - description: 'The global ID of the environment to update' + description: 'The global ID of the environment to update.' argument :weight, GraphQL::INT_TYPE, required: true, - description: 'The weight of the Canary Ingress' + description: 'The weight of the Canary Ingress.' def resolve(id:, **kwargs) environment = authorized_find!(id: id) diff --git a/app/graphql/mutations/issues/base.rb b/app/graphql/mutations/issues/base.rb index 529d48f3cd0..b25987a43f6 100644 --- a/app/graphql/mutations/issues/base.rb +++ b/app/graphql/mutations/issues/base.rb @@ -7,16 +7,16 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: "The project the issue to mutate is in" + description: "The project the issue to mutate is in." argument :iid, GraphQL::STRING_TYPE, required: true, - description: "The IID of the issue to mutate" + description: "The IID of the issue to mutate." field :issue, Types::IssueType, null: true, - description: "The issue after mutation" + description: "The issue after mutation." authorize :update_issue diff --git a/app/graphql/mutations/issues/create.rb b/app/graphql/mutations/issues/create.rb index 1454916bc77..18b80ff1736 100644 --- a/app/graphql/mutations/issues/create.rb +++ b/app/graphql/mutations/issues/create.rb @@ -12,11 +12,11 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Project full path the issue is associated with' + description: 'Project full path the issue is associated with.' argument :iid, GraphQL::INT_TYPE, required: false, - description: 'The IID (internal ID) of a project issue. Only admins and project owners can modify' + description: 'The IID (internal ID) of a project issue. Only admins and project owners can modify.' argument :title, GraphQL::STRING_TYPE, required: true, @@ -24,7 +24,7 @@ module Mutations argument :milestone_id, ::Types::GlobalIDType[::Milestone], required: false, - description: 'The ID of the milestone to assign to the issue. On update milestone will be removed if set to null' + description: 'The ID of the milestone to assign to the issue. On update milestone will be removed if set to null.' argument :labels, [GraphQL::STRING_TYPE], required: false, @@ -32,28 +32,28 @@ module Mutations argument :label_ids, [::Types::GlobalIDType[::Label]], required: false, - description: 'The IDs of labels to be added to the issue' + description: 'The IDs of labels to be added to the issue.' argument :created_at, Types::TimeType, required: false, - description: 'Timestamp when the issue was created. Available only for admins and project owners' + description: 'Timestamp when the issue was created. Available only for admins and project owners.' argument :merge_request_to_resolve_discussions_of, ::Types::GlobalIDType[::MergeRequest], required: false, - description: 'The IID of a merge request for which to resolve discussions' + description: 'The IID of a merge request for which to resolve discussions.' argument :discussion_to_resolve, GraphQL::STRING_TYPE, required: false, - description: 'The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`' + description: 'The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`.' argument :assignee_ids, [::Types::GlobalIDType[::User]], required: false, - description: 'The array of user IDs to assign to the issue' + description: 'The array of user IDs to assign to the issue.' field :issue, Types::IssueType, null: true, - description: 'The issue after mutation' + description: 'The issue after mutation.' def ready?(**args) if args.slice(*mutually_exclusive_label_args).size > 1 diff --git a/app/graphql/mutations/issues/move.rb b/app/graphql/mutations/issues/move.rb index e6971c9df8c..3f97325c921 100644 --- a/app/graphql/mutations/issues/move.rb +++ b/app/graphql/mutations/issues/move.rb @@ -8,7 +8,7 @@ module Mutations argument :target_project_path, GraphQL::ID_TYPE, required: true, - description: 'The project to move the issue to' + description: 'The project to move the issue to.' def resolve(project_path:, iid:, target_project_path:) Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab/-/issues/267762') diff --git a/app/graphql/mutations/issues/set_due_date.rb b/app/graphql/mutations/issues/set_due_date.rb index effd863c541..da7892f4ed4 100644 --- a/app/graphql/mutations/issues/set_due_date.rb +++ b/app/graphql/mutations/issues/set_due_date.rb @@ -8,7 +8,7 @@ module Mutations argument :due_date, Types::TimeType, required: true, - description: 'The desired due date for the issue' + description: 'The desired due date for the issue.' def resolve(project_path:, iid:, due_date:) issue = authorized_find!(project_path: project_path, iid: iid) diff --git a/app/graphql/mutations/issues/set_locked.rb b/app/graphql/mutations/issues/set_locked.rb index 63a8483067a..611226e48ad 100644 --- a/app/graphql/mutations/issues/set_locked.rb +++ b/app/graphql/mutations/issues/set_locked.rb @@ -8,7 +8,7 @@ module Mutations argument :locked, GraphQL::BOOLEAN_TYPE, required: true, - description: 'Whether or not to lock discussion on the issue' + description: 'Whether or not to lock discussion on the issue.' def resolve(project_path:, iid:, locked:) issue = authorized_find!(project_path: project_path, iid: iid) diff --git a/app/graphql/mutations/issues/update.rb b/app/graphql/mutations/issues/update.rb index d34e351b2a6..eea2cd49aa0 100644 --- a/app/graphql/mutations/issues/update.rb +++ b/app/graphql/mutations/issues/update.rb @@ -13,18 +13,18 @@ module Mutations argument :milestone_id, GraphQL::ID_TYPE, # rubocop: disable Graphql/IDType required: false, - description: 'The ID of the milestone to assign to the issue. On update milestone will be removed if set to null' + description: 'The ID of the milestone to assign to the issue. On update milestone will be removed if set to null.' argument :add_label_ids, [GraphQL::ID_TYPE], required: false, - description: 'The IDs of labels to be added to the issue' + description: 'The IDs of labels to be added to the issue.' argument :remove_label_ids, [GraphQL::ID_TYPE], required: false, - description: 'The IDs of labels to be removed from the issue' + description: 'The IDs of labels to be removed from the issue.' argument :state_event, Types::IssueStateEventEnum, - description: 'Close or reopen an issue', + description: 'Close or reopen an issue.', required: false def resolve(project_path:, iid:, **args) diff --git a/app/graphql/mutations/jira_import/import_users.rb b/app/graphql/mutations/jira_import/import_users.rb index 0d59537b903..616ef390657 100644 --- a/app/graphql/mutations/jira_import/import_users.rb +++ b/app/graphql/mutations/jira_import/import_users.rb @@ -14,10 +14,10 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'The project to import the Jira users into' + description: 'The project to import the Jira users into.' argument :start_at, GraphQL::INT_TYPE, required: false, - description: 'The index of the record the import should started at, default 0 (50 records returned)' + description: 'The index of the record the import should started at, default 0 (50 records returned).' def resolve(project_path:, start_at: 0) project = authorized_find!(full_path: project_path) diff --git a/app/graphql/mutations/jira_import/start.rb b/app/graphql/mutations/jira_import/start.rb index eda28059272..3d50ebde13a 100644 --- a/app/graphql/mutations/jira_import/start.rb +++ b/app/graphql/mutations/jira_import/start.rb @@ -10,21 +10,21 @@ module Mutations field :jira_import, Types::JiraImportType, null: true, - description: 'The Jira import data after mutation' + description: 'The Jira import data after mutation.' argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'The project to import the Jira project into' + description: 'The project to import the Jira project into.' argument :jira_project_key, GraphQL::STRING_TYPE, required: true, - description: 'Project key of the importer Jira project' + description: 'Project key of the importer Jira project.' argument :jira_project_name, GraphQL::STRING_TYPE, required: false, - description: 'Project name of the importer Jira project' + description: 'Project name of the importer Jira project.' argument :users_mapping, [Types::JiraUsersMappingInputType], required: false, - description: 'The mapping of Jira to GitLab users' + description: 'The mapping of Jira to GitLab users.' def resolve(project_path:, jira_project_key:, users_mapping:) project = authorized_find!(full_path: project_path) diff --git a/app/graphql/mutations/labels/create.rb b/app/graphql/mutations/labels/create.rb index cb03651618e..ccbd1c37cbf 100644 --- a/app/graphql/mutations/labels/create.rb +++ b/app/graphql/mutations/labels/create.rb @@ -10,20 +10,20 @@ module Mutations field :label, Types::LabelType, null: true, - description: 'The label after mutation' + description: 'The label after mutation.' argument :title, GraphQL::STRING_TYPE, required: true, - description: 'Title of the label' + description: 'Title of the label.' argument :description, GraphQL::STRING_TYPE, required: false, - description: 'Description of the label' + description: 'Description of the label.' argument :color, GraphQL::STRING_TYPE, required: false, default_value: Label::DEFAULT_COLOR, - description: "The color of the label given in 6-digit hex notation with leading '#' sign (e.g. #FFAABB) or one of the CSS color names in https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords" + description: "The color of the label given in 6-digit hex notation with leading '#' sign (e.g. #FFAABB) or one of the CSS color names in https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords." authorize :admin_label diff --git a/app/graphql/mutations/merge_requests/base.rb b/app/graphql/mutations/merge_requests/base.rb index 57920259cf7..cd919a19ba2 100644 --- a/app/graphql/mutations/merge_requests/base.rb +++ b/app/graphql/mutations/merge_requests/base.rb @@ -7,16 +7,16 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: "The project the merge request to mutate is in" + description: "The project the merge request to mutate is in." argument :iid, GraphQL::STRING_TYPE, required: true, - description: "The IID of the merge request to mutate" + description: "The IID of the merge request to mutate." field :merge_request, Types::MergeRequestType, null: true, - description: "The merge request after mutation" + description: "The merge request after mutation." authorize :update_merge_request diff --git a/app/graphql/mutations/merge_requests/create.rb b/app/graphql/mutations/merge_requests/create.rb index fd2cd58a5ee..64fa8417e50 100644 --- a/app/graphql/mutations/merge_requests/create.rb +++ b/app/graphql/mutations/merge_requests/create.rb @@ -9,7 +9,7 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Project full path the merge request is associated with' + description: 'Project full path the merge request is associated with.' argument :title, GraphQL::STRING_TYPE, required: true, @@ -34,7 +34,7 @@ module Mutations field :merge_request, Types::MergeRequestType, null: true, - description: 'The merge request after mutation' + description: 'The merge request after mutation.' authorize :create_merge_request_from diff --git a/app/graphql/mutations/metrics/dashboard/annotations/create.rb b/app/graphql/mutations/metrics/dashboard/annotations/create.rb index c2ec88c68ed..85937809eb8 100644 --- a/app/graphql/mutations/metrics/dashboard/annotations/create.rb +++ b/app/graphql/mutations/metrics/dashboard/annotations/create.rb @@ -15,35 +15,35 @@ module Mutations field :annotation, Types::Metrics::Dashboards::AnnotationType, null: true, - description: 'The created annotation' + description: 'The created annotation.' argument :environment_id, ::Types::GlobalIDType[::Environment], required: false, - description: 'The global ID of the environment to add an annotation to' + description: 'The global ID of the environment to add an annotation to.' argument :cluster_id, ::Types::GlobalIDType[::Clusters::Cluster], required: false, - description: 'The global ID of the cluster to add an annotation to' + description: 'The global ID of the cluster to add an annotation to.' argument :starting_at, Types::TimeType, required: true, - description: 'Timestamp indicating starting moment to which the annotation relates' + description: 'Timestamp indicating starting moment to which the annotation relates.' argument :ending_at, Types::TimeType, required: false, - description: 'Timestamp indicating ending moment to which the annotation relates' + description: 'Timestamp indicating ending moment to which the annotation relates.' argument :dashboard_path, GraphQL::STRING_TYPE, required: true, - description: 'The path to a file defining the dashboard on which the annotation should be added' + description: 'The path to a file defining the dashboard on which the annotation should be added.' argument :description, GraphQL::STRING_TYPE, required: true, - description: 'The description of the annotation' + description: 'The description of the annotation.' AnnotationSource = Struct.new(:object, keyword_init: true) do def type_keys diff --git a/app/graphql/mutations/metrics/dashboard/annotations/delete.rb b/app/graphql/mutations/metrics/dashboard/annotations/delete.rb index 5d6763d8711..e0fadff13d4 100644 --- a/app/graphql/mutations/metrics/dashboard/annotations/delete.rb +++ b/app/graphql/mutations/metrics/dashboard/annotations/delete.rb @@ -11,7 +11,7 @@ module Mutations argument :id, ::Types::GlobalIDType[::Metrics::Dashboard::Annotation], required: true, - description: 'Global ID of the annotation to delete' + description: 'Global ID of the annotation to delete.' def resolve(id:) annotation = authorized_find!(id: id) diff --git a/app/graphql/mutations/notes/base.rb b/app/graphql/mutations/notes/base.rb index f2678211335..ff401167ba1 100644 --- a/app/graphql/mutations/notes/base.rb +++ b/app/graphql/mutations/notes/base.rb @@ -6,7 +6,7 @@ module Mutations field :note, Types::Notes::NoteType, null: true, - description: 'The note after mutation' + description: 'The note after mutation.' private diff --git a/app/graphql/mutations/notes/create/base.rb b/app/graphql/mutations/notes/create/base.rb index a1d81c62d91..2351af01813 100644 --- a/app/graphql/mutations/notes/create/base.rb +++ b/app/graphql/mutations/notes/create/base.rb @@ -11,7 +11,7 @@ module Mutations argument :noteable_id, ::Types::GlobalIDType[::Noteable], required: true, - description: 'The global ID of the resource to add a note to' + description: 'The global ID of the resource to add a note to.' argument :body, GraphQL::STRING_TYPE, diff --git a/app/graphql/mutations/notes/create/note.rb b/app/graphql/mutations/notes/create/note.rb index f1cd3bddca8..7af93521e0d 100644 --- a/app/graphql/mutations/notes/create/note.rb +++ b/app/graphql/mutations/notes/create/note.rb @@ -9,7 +9,7 @@ module Mutations argument :discussion_id, ::Types::GlobalIDType[::Discussion], required: false, - description: 'The global ID of the discussion this note is in reply to' + description: 'The global ID of the discussion this note is in reply to.' private diff --git a/app/graphql/mutations/notes/destroy.rb b/app/graphql/mutations/notes/destroy.rb index 0e6a215bf00..21b2cd15a7e 100644 --- a/app/graphql/mutations/notes/destroy.rb +++ b/app/graphql/mutations/notes/destroy.rb @@ -10,7 +10,7 @@ module Mutations argument :id, ::Types::GlobalIDType[::Note], required: true, - description: 'The global ID of the note to destroy' + description: 'The global ID of the note to destroy.' def resolve(id:) note = authorized_find!(id: id) diff --git a/app/graphql/mutations/notes/reposition_image_diff_note.rb b/app/graphql/mutations/notes/reposition_image_diff_note.rb index 15bfb361b13..31d3b7c9bb0 100644 --- a/app/graphql/mutations/notes/reposition_image_diff_note.rb +++ b/app/graphql/mutations/notes/reposition_image_diff_note.rb @@ -16,7 +16,7 @@ module Mutations loads: Types::Notes::NoteType, as: :note, required: true, - description: 'The global ID of the DiffNote to update' + description: 'The global ID of the DiffNote to update.' argument :position, Types::Notes::UpdateDiffImagePositionInputType, diff --git a/app/graphql/mutations/notes/update/base.rb b/app/graphql/mutations/notes/update/base.rb index 42dac20f5d3..4edb7429b97 100644 --- a/app/graphql/mutations/notes/update/base.rb +++ b/app/graphql/mutations/notes/update/base.rb @@ -11,7 +11,7 @@ module Mutations argument :id, ::Types::GlobalIDType[::Note], required: true, - description: 'The global ID of the note to update' + description: 'The global ID of the note to update.' def resolve(args) note = authorized_find!(id: args[:id]) diff --git a/app/graphql/mutations/releases/base.rb b/app/graphql/mutations/releases/base.rb index d53cfbe6a11..dd1724fe320 100644 --- a/app/graphql/mutations/releases/base.rb +++ b/app/graphql/mutations/releases/base.rb @@ -7,7 +7,7 @@ module Mutations argument :project_path, GraphQL::ID_TYPE, required: true, - description: 'Full path of the project the release is associated with' + description: 'Full path of the project the release is associated with.' private diff --git a/app/graphql/mutations/releases/create.rb b/app/graphql/mutations/releases/create.rb index 156cd252848..91ac256033e 100644 --- a/app/graphql/mutations/releases/create.rb +++ b/app/graphql/mutations/releases/create.rb @@ -8,23 +8,23 @@ module Mutations field :release, Types::ReleaseType, null: true, - description: 'The release after mutation' + description: 'The release after mutation.' argument :tag_name, GraphQL::STRING_TYPE, required: true, as: :tag, - description: 'Name of the tag to associate with the release' + description: 'Name of the tag to associate with the release.' argument :ref, GraphQL::STRING_TYPE, required: false, - description: 'The commit SHA or branch name to use if creating a new tag' + description: 'The commit SHA or branch name to use if creating a new tag.' argument :name, GraphQL::STRING_TYPE, required: false, - description: 'Name of the release' + description: 'Name of the release.' argument :description, GraphQL::STRING_TYPE, required: false, - description: 'Description (also known as "release notes") of the release' + description: 'Description (also known as "release notes") of the release.' argument :released_at, Types::TimeType, required: false, @@ -36,7 +36,7 @@ module Mutations argument :assets, Types::ReleaseAssetsInputType, required: false, - description: 'Assets associated to the release' + description: 'Assets associated to the release.' authorize :create_release diff --git a/app/graphql/mutations/releases/update.rb b/app/graphql/mutations/releases/update.rb index 33bfae80542..dff743254bd 100644 --- a/app/graphql/mutations/releases/update.rb +++ b/app/graphql/mutations/releases/update.rb @@ -12,19 +12,19 @@ module Mutations argument :tag_name, GraphQL::STRING_TYPE, required: true, as: :tag, - description: 'Name of the tag associated with the release' + description: 'Name of the tag associated with the release.' argument :name, GraphQL::STRING_TYPE, required: false, - description: 'Name of the release' + description: 'Name of the release.' argument :description, GraphQL::STRING_TYPE, required: false, - description: 'Description (release notes) of the release' + description: 'Description (release notes) of the release.' argument :released_at, Types::TimeType, required: false, - description: 'The release date' + description: 'The release date.' argument :milestones, [GraphQL::STRING_TYPE], required: false, diff --git a/app/graphql/mutations/snippets/base.rb b/app/graphql/mutations/snippets/base.rb index 023f876d035..5196bc5c7ed 100644 --- a/app/graphql/mutations/snippets/base.rb +++ b/app/graphql/mutations/snippets/base.rb @@ -6,7 +6,7 @@ module Mutations field :snippet, Types::SnippetType, null: true, - description: 'The snippet after mutation' + description: 'The snippet after mutation.' private diff --git a/app/graphql/mutations/snippets/create.rb b/app/graphql/mutations/snippets/create.rb index 56c3b398949..b4485e28c5a 100644 --- a/app/graphql/mutations/snippets/create.rb +++ b/app/graphql/mutations/snippets/create.rb @@ -12,30 +12,30 @@ module Mutations field :snippet, Types::SnippetType, null: true, - description: 'The snippet after mutation' + description: 'The snippet after mutation.' argument :title, GraphQL::STRING_TYPE, required: true, - description: 'Title of the snippet' + description: 'Title of the snippet.' argument :description, GraphQL::STRING_TYPE, required: false, - description: 'Description of the snippet' + description: 'Description of the snippet.' argument :visibility_level, Types::VisibilityLevelsEnum, - description: 'The visibility level of the snippet', + description: 'The visibility level of the snippet.', required: true argument :project_path, GraphQL::ID_TYPE, required: false, - description: 'The project full path the snippet is associated with' + description: 'The project full path the snippet is associated with.' argument :uploaded_files, [GraphQL::STRING_TYPE], required: false, - description: 'The paths to files uploaded in the snippet description' + description: 'The paths to files uploaded in the snippet description.' argument :blob_actions, [Types::Snippets::BlobActionInputType], - description: 'Actions to perform over the snippet repository and blobs', + description: 'Actions to perform over the snippet repository and blobs.', required: false def resolve(project_path: nil, **args) diff --git a/app/graphql/mutations/snippets/destroy.rb b/app/graphql/mutations/snippets/destroy.rb index bee6503372d..9b00f62e2f9 100644 --- a/app/graphql/mutations/snippets/destroy.rb +++ b/app/graphql/mutations/snippets/destroy.rb @@ -9,7 +9,7 @@ module Mutations argument :id, ::Types::GlobalIDType[::Snippet], required: true, - description: 'The global ID of the snippet to destroy' + description: 'The global ID of the snippet to destroy.' def resolve(id:) snippet = authorized_find!(id: id) diff --git a/app/graphql/mutations/snippets/mark_as_spam.rb b/app/graphql/mutations/snippets/mark_as_spam.rb index 2d6fea1f5ec..d6e3e131b81 100644 --- a/app/graphql/mutations/snippets/mark_as_spam.rb +++ b/app/graphql/mutations/snippets/mark_as_spam.rb @@ -7,7 +7,7 @@ module Mutations argument :id, ::Types::GlobalIDType[::Snippet], required: true, - description: 'The global ID of the snippet to update' + description: 'The global ID of the snippet to update.' def resolve(id:) snippet = authorized_find!(id: id) diff --git a/app/graphql/mutations/snippets/update.rb b/app/graphql/mutations/snippets/update.rb index 6df1ad6d8b9..930440fbd35 100644 --- a/app/graphql/mutations/snippets/update.rb +++ b/app/graphql/mutations/snippets/update.rb @@ -9,22 +9,22 @@ module Mutations argument :id, ::Types::GlobalIDType[::Snippet], required: true, - description: 'The global ID of the snippet to update' + description: 'The global ID of the snippet to update.' argument :title, GraphQL::STRING_TYPE, required: false, - description: 'Title of the snippet' + description: 'Title of the snippet.' argument :description, GraphQL::STRING_TYPE, required: false, - description: 'Description of the snippet' + description: 'Description of the snippet.' argument :visibility_level, Types::VisibilityLevelsEnum, - description: 'The visibility level of the snippet', + description: 'The visibility level of the snippet.', required: false argument :blob_actions, [Types::Snippets::BlobActionInputType], - description: 'Actions to perform over the snippet repository and blobs', + description: 'Actions to perform over the snippet repository and blobs.', required: false def resolve(id:, **args) diff --git a/app/graphql/mutations/terraform/state/base.rb b/app/graphql/mutations/terraform/state/base.rb index b1721c784b1..01f69934ea3 100644 --- a/app/graphql/mutations/terraform/state/base.rb +++ b/app/graphql/mutations/terraform/state/base.rb @@ -9,7 +9,7 @@ module Mutations argument :id, Types::GlobalIDType[::Terraform::State], required: true, - description: 'Global ID of the Terraform state' + description: 'Global ID of the Terraform state.' private diff --git a/app/graphql/mutations/todos/create.rb b/app/graphql/mutations/todos/create.rb index 53c88696fdd..814f7ec4fc4 100644 --- a/app/graphql/mutations/todos/create.rb +++ b/app/graphql/mutations/todos/create.rb @@ -10,11 +10,11 @@ module Mutations argument :target_id, Types::GlobalIDType[Todoable], required: true, - description: "The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported" + description: "The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported." field :todo, Types::TodoType, null: true, - description: 'The to-do created' + description: 'The to-do created.' def resolve(target_id:) id = ::Types::GlobalIDType[Todoable].coerce_isolated_input(target_id) diff --git a/app/graphql/mutations/todos/mark_all_done.rb b/app/graphql/mutations/todos/mark_all_done.rb index 97bbbeeaa2f..c8359953567 100644 --- a/app/graphql/mutations/todos/mark_all_done.rb +++ b/app/graphql/mutations/todos/mark_all_done.rb @@ -11,11 +11,11 @@ module Mutations [::Types::GlobalIDType[::Todo]], null: false, deprecated: { reason: 'Use todos', milestone: '13.2' }, - description: 'Ids of the updated todos' + description: 'Ids of the updated todos.' field :todos, [::Types::TodoType], null: false, - description: 'Updated todos' + description: 'Updated todos.' def resolve authorize!(current_user) diff --git a/app/graphql/mutations/todos/mark_done.rb b/app/graphql/mutations/todos/mark_done.rb index 2ae50846108..95144abb040 100644 --- a/app/graphql/mutations/todos/mark_done.rb +++ b/app/graphql/mutations/todos/mark_done.rb @@ -10,11 +10,11 @@ module Mutations argument :id, ::Types::GlobalIDType[::Todo], required: true, - description: 'The global ID of the todo to mark as done' + description: 'The global ID of the todo to mark as done.' field :todo, Types::TodoType, null: false, - description: 'The requested todo' + description: 'The requested todo.' def resolve(id:) todo = authorized_find!(id: id) diff --git a/app/graphql/mutations/todos/restore.rb b/app/graphql/mutations/todos/restore.rb index c532b455a16..e496627aec2 100644 --- a/app/graphql/mutations/todos/restore.rb +++ b/app/graphql/mutations/todos/restore.rb @@ -10,11 +10,11 @@ module Mutations argument :id, ::Types::GlobalIDType[::Todo], required: true, - description: 'The global ID of the todo to restore' + description: 'The global ID of the todo to restore.' field :todo, Types::TodoType, null: false, - description: 'The requested todo' + description: 'The requested todo.' def resolve(id:) todo = authorized_find!(id: id) diff --git a/app/graphql/mutations/todos/restore_many.rb b/app/graphql/mutations/todos/restore_many.rb index 59965589856..9263c1d9afe 100644 --- a/app/graphql/mutations/todos/restore_many.rb +++ b/app/graphql/mutations/todos/restore_many.rb @@ -10,16 +10,16 @@ module Mutations argument :ids, [::Types::GlobalIDType[::Todo]], required: true, - description: 'The global IDs of the todos to restore (a maximum of 50 is supported at once)' + description: 'The global IDs of the todos to restore (a maximum of 50 is supported at once).' field :updated_ids, [::Types::GlobalIDType[Todo]], null: false, - description: 'The IDs of the updated todo items', + description: 'The IDs of the updated todo items.', deprecated: { reason: 'Use todos', milestone: '13.2' } field :todos, [::Types::TodoType], null: false, - description: 'Updated todos' + description: 'Updated todos.' def resolve(ids:) check_update_amount_limit!(ids) diff --git a/app/services/ci/destroy_expired_job_artifacts_service.rb b/app/services/ci/destroy_expired_job_artifacts_service.rb index 9413f41259f..4f5a3f7868f 100644 --- a/app/services/ci/destroy_expired_job_artifacts_service.rb +++ b/app/services/ci/destroy_expired_job_artifacts_service.rb @@ -75,6 +75,8 @@ module Ci # TODO: Make sure this can also be parallelized # https://gitlab.com/gitlab-org/gitlab/-/issues/270973 def destroy_pipeline_artifacts_batch + return false if ::Feature.enabled?(:ci_split_pipeline_artifacts_removal) + artifacts = Ci::PipelineArtifact.expired(BATCH_SIZE).to_a return false if artifacts.empty? diff --git a/app/services/ci/pipeline_artifacts/destroy_expired_artifacts_service.rb b/app/services/ci/pipeline_artifacts/destroy_expired_artifacts_service.rb new file mode 100644 index 00000000000..0dbabe178da --- /dev/null +++ b/app/services/ci/pipeline_artifacts/destroy_expired_artifacts_service.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module Ci + module PipelineArtifacts + class DestroyExpiredArtifactsService + include ::Gitlab::LoopHelpers + include ::Gitlab::Utils::StrongMemoize + + BATCH_SIZE = 100 + LOOP_TIMEOUT = 5.minutes + LOOP_LIMIT = 1000 + + def initialize + @removed_artifacts_count = 0 + end + + def execute + loop_until(timeout: LOOP_TIMEOUT, limit: LOOP_LIMIT) do + destroy_artifacts_batch + end + + @removed_artifacts_count + end + + private + + def destroy_artifacts_batch + artifacts = ::Ci::PipelineArtifact.expired(BATCH_SIZE).to_a + return false if artifacts.empty? + + artifacts.each(&:destroy!) + increment_stats(artifacts.size) + + true + end + + def increment_stats(size) + destroyed_artifacts_counter.increment({}, size) + @removed_artifacts_count += size + end + + def destroyed_artifacts_counter + strong_memoize(:destroyed_artifacts_counter) do + name = :destroyed_pipeline_artifacts_count_total + comment = 'Counter of destroyed expired pipeline artifacts' + + ::Gitlab::Metrics.counter(name, comment) + end + end + end + end +end diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 7d1d85ef2b6..94c4da30ed8 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -147,6 +147,14 @@ :weight: 1 :idempotent: :tags: [] +- :name: cronjob:ci_pipeline_artifacts_expire_artifacts + :feature_category: :continuous_integration + :has_external_dependencies: + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: true + :tags: [] - :name: cronjob:ci_platform_metrics_update_cron :feature_category: :continuous_integration :has_external_dependencies: diff --git a/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb b/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb new file mode 100644 index 00000000000..6a02c980c99 --- /dev/null +++ b/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Ci + module PipelineArtifacts + class ExpireArtifactsWorker + include ApplicationWorker + # rubocop:disable Scalability/CronWorkerContext + # This worker does not perform work scoped to a context + include CronjobQueue + # rubocop:enable Scalability/CronWorkerContext + + deduplicate :until_executed, including_scheduled: true + idempotent! + feature_category :continuous_integration + + def perform + return unless ::Feature.enabled?(:ci_split_pipeline_artifacts_removal) + + service = ::Ci::PipelineArtifacts::DestroyExpiredArtifactsService.new + artifacts_count = service.execute + log_extra_metadata_on_done(:destroyed_pipeline_artifacts_count, artifacts_count) + end + end + end +end diff --git a/changelogs/unreleased/mw-replace-dropdown-input-fa-color-with-gray-500.yml b/changelogs/unreleased/mw-replace-dropdown-input-fa-color-with-gray-500.yml new file mode 100644 index 00000000000..a37d16beb6a --- /dev/null +++ b/changelogs/unreleased/mw-replace-dropdown-input-fa-color-with-gray-500.yml @@ -0,0 +1,5 @@ +--- +title: Replace dropdown-input-fa-color with gray-500 +merge_request: 49213 +author: +type: changed diff --git a/config/feature_flags/development/ci_split_pipeline_artifacts_removal.yml b/config/feature_flags/development/ci_split_pipeline_artifacts_removal.yml new file mode 100644 index 00000000000..be56931a331 --- /dev/null +++ b/config/feature_flags/development/ci_split_pipeline_artifacts_removal.yml @@ -0,0 +1,8 @@ +--- +name: ci_split_pipeline_artifacts_removal +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50446 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/295300 +milestone: '13.8' +type: development +group: group::continuous integration +default_enabled: false diff --git a/config/feature_flags/development/usage_data_incident_management_alerts_total_unique_counts.yml b/config/feature_flags/development/usage_data_incident_management_alerts_total_unique_counts.yml deleted file mode 100644 index 38e94e74399..00000000000 --- a/config/feature_flags/development/usage_data_incident_management_alerts_total_unique_counts.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: usage_data_incident_management_alerts_total_unique_counts -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48087 -rollout_issue_url: -milestone: '13.7' -type: development -group: group::monitor -default_enabled: false diff --git a/config/feature_flags/development/usage_data_incident_management_incidents_total_unique_counts.yml b/config/feature_flags/development/usage_data_incident_management_incidents_total_unique_counts.yml deleted file mode 100644 index 1bb602730e7..00000000000 --- a/config/feature_flags/development/usage_data_incident_management_incidents_total_unique_counts.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: usage_data_incident_management_incidents_total_unique_counts -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48087 -rollout_issue_url: -milestone: '13.7' -type: development -group: group::monitor -default_enabled: false diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 8dbabe5b06d..92e7501d49d 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -436,6 +436,9 @@ production: &base # Remove expired build artifacts expire_build_artifacts_worker: cron: "*/7 * * * *" + # Remove expired pipeline artifacts + ci_pipelines_expire_artifacts_worker: + cron: "*/23 * * * *" # Remove files from object storage ci_schedule_delete_objects_worker: cron: "*/16 * * * *" diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 39a48daf9a1..b3ea72fc7e5 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -420,6 +420,9 @@ Settings.cron_jobs['pipeline_schedule_worker']['job_class'] = 'PipelineScheduleW Settings.cron_jobs['expire_build_artifacts_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['expire_build_artifacts_worker']['cron'] ||= '*/7 * * * *' Settings.cron_jobs['expire_build_artifacts_worker']['job_class'] = 'ExpireBuildArtifactsWorker' +Settings.cron_jobs['ci_pipelines_expire_artifacts_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['ci_pipelines_expire_artifacts_worker']['cron'] ||= '*/23 * * * *' +Settings.cron_jobs['ci_pipelines_expire_artifacts_worker']['job_class'] = 'Ci::PipelineArtifacts::ExpireArtifactsWorker' Settings.cron_jobs['ci_schedule_delete_objects_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['ci_schedule_delete_objects_worker']['cron'] ||= '*/16 * * * *' Settings.cron_jobs['ci_schedule_delete_objects_worker']['job_class'] = 'Ci::ScheduleDeleteObjectsCronWorker' diff --git a/doc/administration/geo/index.md b/doc/administration/geo/index.md index 334f05ef3ce..1985ea2e04c 100644 --- a/doc/administration/geo/index.md +++ b/doc/administration/geo/index.md @@ -292,12 +292,6 @@ This list of limitations only reflects the latest version of GitLab. If you are ### Limitations on replication/verification -You can keep track of the progress to implement the missing items in -these epics/issues: - -- [Unreplicated Data Types](https://gitlab.com/groups/gitlab-org/-/epics/893) -- [Verify all replicated data](https://gitlab.com/groups/gitlab-org/-/epics/1430) - There is a complete list of all GitLab [data types](replication/datatypes.md) and [existing support for replication and verification](replication/datatypes.md#limitations-on-replicationverification). ## Frequently Asked Questions diff --git a/doc/administration/monitoring/prometheus/gitlab_metrics.md b/doc/administration/monitoring/prometheus/gitlab_metrics.md index c5e0570515d..4493c1677bc 100644 --- a/doc/administration/monitoring/prometheus/gitlab_metrics.md +++ b/doc/administration/monitoring/prometheus/gitlab_metrics.md @@ -210,6 +210,7 @@ configuration option in `gitlab.yml`. These metrics are served from the | `limited_capacity_worker_max_running_jobs` | Gauge | 13.5 | Maximum number of running jobs | `worker` | | `limited_capacity_worker_remaining_work_count` | Gauge | 13.5 | Number of jobs waiting to be enqueued | `worker` | | `destroyed_job_artifacts_count_total` | Counter | 13.6 | Number of destroyed expired job artifacts | | +| `destroyed_pipeline_artifacts_count_total` | Counter | 13.8 | Number of destroyed expired pipeline artifacts | | ## Database load balancing metrics **(PREMIUM ONLY)** diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 6ab2f3b363b..79278b1496a 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -30,7 +30,7 @@ Autogenerated input type of AddAwardEmoji """ input AddAwardEmojiInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -50,7 +50,7 @@ Autogenerated return type of AddAwardEmoji """ type AddAwardEmojiPayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -125,7 +125,7 @@ input AdminSidekiqQueuesDeleteJobsInput { project: String """ - The name of the queue to delete jobs from + The name of the queue to delete jobs from. """ queueName: String! @@ -170,7 +170,7 @@ type AdminSidekiqQueuesDeleteJobsPayload { errors: [String!]! """ - Information about the status of the deletion request + Information about the status of the deletion request. """ result: DeleteJobsResponse } @@ -857,7 +857,7 @@ input AlertSetAssigneesInput { clientMutationId: String """ - The IID of the alert to mutate + The IID of the alert to mutate. """ iid: String! @@ -867,7 +867,7 @@ input AlertSetAssigneesInput { operationMode: MutationOperationMode """ - The project the alert to mutate is in + The project the alert to mutate is in. """ projectPath: ID! } @@ -877,7 +877,7 @@ Autogenerated return type of AlertSetAssignees """ type AlertSetAssigneesPayload { """ - The alert after mutation + The alert after mutation. """ alert: AlertManagementAlert @@ -892,12 +892,12 @@ type AlertSetAssigneesPayload { errors: [String!]! """ - The issue created after mutation + The issue created after mutation. """ issue: Issue """ - The todo after mutation + The todo after mutation. """ todo: Todo } @@ -912,12 +912,12 @@ input AlertTodoCreateInput { clientMutationId: String """ - The IID of the alert to mutate + The IID of the alert to mutate. """ iid: String! """ - The project the alert to mutate is in + The project the alert to mutate is in. """ projectPath: ID! } @@ -927,7 +927,7 @@ Autogenerated return type of AlertTodoCreate """ type AlertTodoCreatePayload { """ - The alert after mutation + The alert after mutation. """ alert: AlertManagementAlert @@ -942,12 +942,12 @@ type AlertTodoCreatePayload { errors: [String!]! """ - The issue created after mutation + The issue created after mutation. """ issue: Issue """ - The todo after mutation + The todo after mutation. """ todo: Todo } @@ -1012,7 +1012,7 @@ Autogenerated input type of AwardEmojiAdd """ input AwardEmojiAddInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -1032,7 +1032,7 @@ Autogenerated return type of AwardEmojiAdd """ type AwardEmojiAddPayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -1052,7 +1052,7 @@ Autogenerated input type of AwardEmojiRemove """ input AwardEmojiRemoveInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -1072,7 +1072,7 @@ Autogenerated return type of AwardEmojiRemove """ type AwardEmojiRemovePayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -1092,7 +1092,7 @@ Autogenerated input type of AwardEmojiToggle """ input AwardEmojiToggleInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -1112,7 +1112,7 @@ Autogenerated return type of AwardEmojiToggle """ type AwardEmojiTogglePayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -2121,12 +2121,12 @@ input BoardListCreateInput { assigneeId: UserID """ - Create the backlog list + Create the backlog list. """ backlog: Boolean """ - Global ID of the issue board to mutate + Global ID of the issue board to mutate. """ boardId: BoardID! @@ -2141,7 +2141,7 @@ input BoardListCreateInput { iterationId: IterationID """ - Global ID of an existing label + Global ID of an existing label. """ labelId: LabelID @@ -2166,7 +2166,7 @@ type BoardListCreatePayload { errors: [String!]! """ - List of the issue board + List of the issue board. """ list: BoardList } @@ -3506,12 +3506,12 @@ Autogenerated input type of CommitCreate """ input CommitCreateInput { """ - Array of action hashes to commit as a batch + Array of action hashes to commit as a batch. """ actions: [CommitAction!]! """ - Name of the branch to commit into, it can be a new branch + Name of the branch to commit into, it can be a new branch. """ branch: String! @@ -3526,12 +3526,12 @@ input CommitCreateInput { message: String! """ - Project full path the branch is associated with + Project full path the branch is associated with. """ projectPath: ID! """ - If on a new branch, name of the original branch + If on a new branch, name of the original branch. """ startBranch: String } @@ -3546,7 +3546,7 @@ type CommitCreatePayload { clientMutationId: String """ - The commit after mutation + The commit after mutation. """ commit: Commit @@ -4171,12 +4171,12 @@ input CreateAlertIssueInput { clientMutationId: String """ - The IID of the alert to mutate + The IID of the alert to mutate. """ iid: String! """ - The project the alert to mutate is in + The project the alert to mutate is in. """ projectPath: ID! } @@ -4186,7 +4186,7 @@ Autogenerated return type of CreateAlertIssue """ type CreateAlertIssuePayload { """ - The alert after mutation + The alert after mutation. """ alert: AlertManagementAlert @@ -4201,12 +4201,12 @@ type CreateAlertIssuePayload { errors: [String!]! """ - The issue created after mutation + The issue created after mutation. """ issue: Issue """ - The todo after mutation + The todo after mutation. """ todo: Todo } @@ -4221,32 +4221,32 @@ input CreateAnnotationInput { clientMutationId: String """ - The global ID of the cluster to add an annotation to + The global ID of the cluster to add an annotation to. """ clusterId: ClustersClusterID """ - The path to a file defining the dashboard on which the annotation should be added + The path to a file defining the dashboard on which the annotation should be added. """ dashboardPath: String! """ - The description of the annotation + The description of the annotation. """ description: String! """ - Timestamp indicating ending moment to which the annotation relates + Timestamp indicating ending moment to which the annotation relates. """ endingAt: Time """ - The global ID of the environment to add an annotation to + The global ID of the environment to add an annotation to. """ environmentId: EnvironmentID """ - Timestamp indicating starting moment to which the annotation relates + Timestamp indicating starting moment to which the annotation relates. """ startingAt: Time! } @@ -4256,7 +4256,7 @@ Autogenerated return type of CreateAnnotation """ type CreateAnnotationPayload { """ - The created annotation + The created annotation. """ annotation: MetricsDashboardAnnotation @@ -4286,7 +4286,7 @@ input CreateBoardInput { clientMutationId: String """ - The group full path the resource is associated with + The group full path the resource is associated with. """ groupPath: ID @@ -4326,7 +4326,7 @@ input CreateBoardInput { name: String """ - The project full path the resource is associated with + The project full path the resource is associated with. """ projectPath: ID @@ -4366,17 +4366,17 @@ input CreateBranchInput { clientMutationId: String """ - Name of the branch + Name of the branch. """ name: String! """ - Project full path the branch is associated with + Project full path the branch is associated with. """ projectPath: ID! """ - Branch name or commit SHA to create branch from + Branch name or commit SHA to create branch from. """ ref: String! } @@ -4386,7 +4386,7 @@ Autogenerated return type of CreateBranch """ type CreateBranchPayload { """ - Branch after mutation + Branch after mutation. """ branch: Branch @@ -4491,17 +4491,17 @@ input CreateCustomEmojiInput { clientMutationId: String """ - Namespace full path the emoji is associated with + Namespace full path the emoji is associated with. """ groupPath: ID! """ - Name of the emoji + Name of the emoji. """ name: String! """ - Location of the emoji file + Location of the emoji file. """ url: String! } @@ -4516,7 +4516,7 @@ type CreateCustomEmojiPayload { clientMutationId: String """ - The new custom emoji + The new custom emoji. """ customEmoji: CustomEmoji @@ -4586,7 +4586,7 @@ input CreateDiffNoteInput { confidential: Boolean """ - The global ID of the resource to add a note to + The global ID of the resource to add a note to. """ noteableId: NoteableID! @@ -4611,7 +4611,7 @@ type CreateDiffNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -4716,7 +4716,7 @@ input CreateImageDiffNoteInput { confidential: Boolean """ - The global ID of the resource to add a note to + The global ID of the resource to add a note to. """ noteableId: NoteableID! @@ -4741,7 +4741,7 @@ type CreateImageDiffNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -4751,7 +4751,7 @@ Autogenerated input type of CreateIssue """ input CreateIssueInput { """ - The array of user IDs to assign to the issue + The array of user IDs to assign to the issue. """ assigneeIds: [UserID!] @@ -4766,7 +4766,7 @@ input CreateIssueInput { confidential: Boolean """ - Timestamp when the issue was created. Available only for admins and project owners + Timestamp when the issue was created. Available only for admins and project owners. """ createdAt: Time @@ -4776,7 +4776,7 @@ input CreateIssueInput { description: String """ - The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of` + The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`. """ discussionToResolve: String @@ -4796,12 +4796,12 @@ input CreateIssueInput { healthStatus: HealthStatus """ - The IID (internal ID) of a project issue. Only admins and project owners can modify + The IID (internal ID) of a project issue. Only admins and project owners can modify. """ iid: Int """ - The IDs of labels to be added to the issue + The IDs of labels to be added to the issue. """ labelIds: [LabelID!] @@ -4816,17 +4816,17 @@ input CreateIssueInput { locked: Boolean """ - The IID of a merge request for which to resolve discussions + The IID of a merge request for which to resolve discussions. """ mergeRequestToResolveDiscussionsOf: MergeRequestID """ - The ID of the milestone to assign to the issue. On update milestone will be removed if set to null + The ID of the milestone to assign to the issue. On update milestone will be removed if set to null. """ milestoneId: MilestoneID """ - Project full path the issue is associated with + Project full path the issue is associated with. """ projectPath: ID! @@ -4856,7 +4856,7 @@ type CreateIssuePayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -4941,12 +4941,12 @@ input CreateNoteInput { confidential: Boolean """ - The global ID of the discussion this note is in reply to + The global ID of the discussion this note is in reply to. """ discussionId: DiscussionID """ - The global ID of the resource to add a note to + The global ID of the resource to add a note to. """ noteableId: NoteableID! } @@ -4966,7 +4966,7 @@ type CreateNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -5021,7 +5021,7 @@ Autogenerated input type of CreateSnippet """ input CreateSnippetInput { """ - Actions to perform over the snippet repository and blobs + Actions to perform over the snippet repository and blobs. """ blobActions: [SnippetBlobActionInputType!] @@ -5031,27 +5031,27 @@ input CreateSnippetInput { clientMutationId: String """ - Description of the snippet + Description of the snippet. """ description: String """ - The project full path the snippet is associated with + The project full path the snippet is associated with. """ projectPath: ID """ - Title of the snippet + Title of the snippet. """ title: String! """ - The paths to files uploaded in the snippet description + The paths to files uploaded in the snippet description. """ uploadedFiles: [String!] """ - The visibility level of the snippet + The visibility level of the snippet. """ visibilityLevel: VisibilityLevelsEnum! } @@ -5071,12 +5071,12 @@ type CreateSnippetPayload { errors: [String!]! """ - The snippet after mutation + The snippet after mutation. """ snippet: Snippet """ - Indicates whether the operation returns a record detected as spam + Indicates whether the operation returns a record detected as spam. """ spam: Boolean } @@ -6090,7 +6090,7 @@ input DeleteAnnotationInput { clientMutationId: String """ - Global ID of the annotation to delete + Global ID of the annotation to delete. """ id: MetricsDashboardAnnotationID! } @@ -6705,17 +6705,17 @@ input DesignManagementDeleteInput { clientMutationId: String """ - The filenames of the designs to delete + The filenames of the designs to delete. """ filenames: [String!]! """ - The IID of the issue to modify designs for + The IID of the issue to modify designs for. """ iid: ID! """ - The project where the issue is to upload designs for + The project where the issue is to upload designs for. """ projectPath: ID! } @@ -6735,7 +6735,7 @@ type DesignManagementDeletePayload { errors: [String!]! """ - The new version in which the designs are deleted + The new version in which the designs are deleted. """ version: DesignVersion } @@ -6760,17 +6760,17 @@ input DesignManagementMoveInput { clientMutationId: String """ - ID of the design to move + ID of the design to move. """ id: DesignManagementDesignID! """ - ID of the immediately following design + ID of the immediately following design. """ next: DesignManagementDesignID """ - ID of the immediately preceding design + ID of the immediately preceding design. """ previous: DesignManagementDesignID } @@ -6785,7 +6785,7 @@ type DesignManagementMovePayload { clientMutationId: String """ - The current state of the collection + The current state of the collection. """ designCollection: DesignCollection @@ -6805,17 +6805,17 @@ input DesignManagementUploadInput { clientMutationId: String """ - The files to upload + The files to upload. """ files: [Upload!]! """ - The IID of the issue to modify designs for + The IID of the issue to modify designs for. """ iid: ID! """ - The project where the issue is to upload designs for + The project where the issue is to upload designs for. """ projectPath: ID! } @@ -6830,7 +6830,7 @@ type DesignManagementUploadPayload { clientMutationId: String """ - The designs that were uploaded by the mutation + The designs that were uploaded by the mutation. """ designs: [Design!]! @@ -7015,7 +7015,7 @@ input DestroyBoardInput { clientMutationId: String """ - The global ID of the board to destroy + The global ID of the board to destroy. """ id: BoardID! } @@ -7060,7 +7060,7 @@ Autogenerated return type of DestroyBoard """ type DestroyBoardPayload { """ - The board after mutation + The board after mutation. """ board: Board @@ -7170,7 +7170,7 @@ type DestroyContainerRepositoryTagsPayload { clientMutationId: String """ - Deleted container repository tags + Deleted container repository tags. """ deletedTagNames: [String!]! @@ -7190,7 +7190,7 @@ input DestroyNoteInput { clientMutationId: String """ - The global ID of the note to destroy + The global ID of the note to destroy. """ id: NoteID! } @@ -7210,7 +7210,7 @@ type DestroyNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -7225,7 +7225,7 @@ input DestroySnippetInput { clientMutationId: String """ - The global ID of the snippet to destroy + The global ID of the snippet to destroy. """ id: SnippetID! } @@ -7245,7 +7245,7 @@ type DestroySnippetPayload { errors: [String!]! """ - The snippet after mutation + The snippet after mutation. """ snippet: Snippet } @@ -7744,12 +7744,12 @@ input DiscussionToggleResolveInput { clientMutationId: String """ - The global ID of the discussion + The global ID of the discussion. """ id: DiscussionID! """ - Will resolve the discussion when true, and unresolve the discussion when false + Will resolve the discussion when true, and unresolve the discussion when false. """ resolve: Boolean! } @@ -7764,7 +7764,7 @@ type DiscussionToggleResolvePayload { clientMutationId: String """ - The discussion after mutation + The discussion after mutation. """ discussion: Discussion @@ -7950,12 +7950,12 @@ input EnvironmentsCanaryIngressUpdateInput { clientMutationId: String """ - The global ID of the environment to update + The global ID of the environment to update. """ id: EnvironmentID! """ - The weight of the Canary Ingress + The weight of the Canary Ingress. """ weight: Int! } @@ -11105,7 +11105,7 @@ Autogenerated input type of HttpIntegrationCreate """ input HttpIntegrationCreateInput { """ - Whether the integration is receiving alerts + Whether the integration is receiving alerts. """ active: Boolean! @@ -11115,12 +11115,12 @@ input HttpIntegrationCreateInput { clientMutationId: String """ - The name of the integration + The name of the integration. """ name: String! """ - The project to create the integration in + The project to create the integration in. """ projectPath: ID! } @@ -11140,7 +11140,7 @@ type HttpIntegrationCreatePayload { errors: [String!]! """ - The HTTP integration + The HTTP integration. """ integration: AlertManagementHttpIntegration } @@ -11155,7 +11155,7 @@ input HttpIntegrationDestroyInput { clientMutationId: String """ - The ID of the integration to remove + The ID of the integration to remove. """ id: AlertManagementHttpIntegrationID! } @@ -11175,7 +11175,7 @@ type HttpIntegrationDestroyPayload { errors: [String!]! """ - The HTTP integration + The HTTP integration. """ integration: AlertManagementHttpIntegration } @@ -11190,7 +11190,7 @@ input HttpIntegrationResetTokenInput { clientMutationId: String """ - The ID of the integration to mutate + The ID of the integration to mutate. """ id: AlertManagementHttpIntegrationID! } @@ -11210,7 +11210,7 @@ type HttpIntegrationResetTokenPayload { errors: [String!]! """ - The HTTP integration + The HTTP integration. """ integration: AlertManagementHttpIntegration } @@ -11220,7 +11220,7 @@ Autogenerated input type of HttpIntegrationUpdate """ input HttpIntegrationUpdateInput { """ - Whether the integration is receiving alerts + Whether the integration is receiving alerts. """ active: Boolean @@ -11230,12 +11230,12 @@ input HttpIntegrationUpdateInput { clientMutationId: String """ - The ID of the integration to mutate + The ID of the integration to mutate. """ id: AlertManagementHttpIntegrationID! """ - The name of the integration + The name of the integration. """ name: String } @@ -11255,7 +11255,7 @@ type HttpIntegrationUpdatePayload { errors: [String!]! """ - The HTTP integration + The HTTP integration. """ integration: AlertManagementHttpIntegration } @@ -12094,17 +12094,17 @@ input IssueMoveInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! """ - The project to move the issue to + The project to move the issue to. """ targetProjectPath: ID! } @@ -12114,7 +12114,7 @@ Autogenerated input type of IssueMoveList """ input IssueMoveListInput { """ - Global ID of the board that the issue is in + Global ID of the board that the issue is in. """ boardId: ID! @@ -12129,32 +12129,32 @@ input IssueMoveListInput { epicId: EpicID """ - ID of the board list that the issue will be moved from + ID of the board list that the issue will be moved from. """ fromListId: ID """ - IID of the issue to mutate + IID of the issue to mutate. """ iid: String! """ - ID of issue that should be placed after the current issue + ID of issue that should be placed after the current issue. """ moveAfterId: ID """ - ID of issue that should be placed before the current issue + ID of issue that should be placed before the current issue. """ moveBeforeId: ID """ - Project the issue to mutate is in + Project the issue to mutate is in. """ projectPath: ID! """ - ID of the board list that the issue will be moved to + ID of the board list that the issue will be moved to. """ toListId: ID } @@ -12174,7 +12174,7 @@ type IssueMoveListPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12194,7 +12194,7 @@ type IssueMovePayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12259,7 +12259,7 @@ input IssueSetAssigneesInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! @@ -12269,7 +12269,7 @@ input IssueSetAssigneesInput { operationMode: MutationOperationMode """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12289,7 +12289,7 @@ type IssueSetAssigneesPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12309,12 +12309,12 @@ input IssueSetConfidentialInput { confidential: Boolean! """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12334,7 +12334,7 @@ type IssueSetConfidentialPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12349,17 +12349,17 @@ input IssueSetDueDateInput { clientMutationId: String """ - The desired due date for the issue + The desired due date for the issue. """ dueDate: Time! """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12379,7 +12379,7 @@ type IssueSetDueDatePayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12399,12 +12399,12 @@ input IssueSetEpicInput { epicId: EpicID """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12424,7 +12424,7 @@ type IssueSetEpicPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12439,7 +12439,7 @@ input IssueSetIterationInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! @@ -12449,7 +12449,7 @@ input IssueSetIterationInput { iterationId: IterationID """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12469,7 +12469,7 @@ type IssueSetIterationPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12484,17 +12484,17 @@ input IssueSetLockedInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - Whether or not to lock discussion on the issue + Whether or not to lock discussion on the issue. """ locked: Boolean! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -12514,7 +12514,7 @@ type IssueSetLockedPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12529,12 +12529,12 @@ input IssueSetSeverityInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! @@ -12559,7 +12559,7 @@ type IssueSetSeverityPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12574,17 +12574,17 @@ input IssueSetSubscriptionInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! """ - The desired state of the subscription + The desired state of the subscription. """ subscribedState: Boolean! } @@ -12604,7 +12604,7 @@ type IssueSetSubscriptionPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -12619,12 +12619,12 @@ input IssueSetWeightInput { clientMutationId: String """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! @@ -12649,7 +12649,7 @@ type IssueSetWeightPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -13087,22 +13087,22 @@ input JiraImportStartInput { clientMutationId: String """ - Project key of the importer Jira project + Project key of the importer Jira project. """ jiraProjectKey: String! """ - Project name of the importer Jira project + Project name of the importer Jira project. """ jiraProjectName: String """ - The project to import the Jira project into + The project to import the Jira project into. """ projectPath: ID! """ - The mapping of Jira to GitLab users + The mapping of Jira to GitLab users. """ usersMapping: [JiraUsersMappingInputType!] } @@ -13122,7 +13122,7 @@ type JiraImportStartPayload { errors: [String!]! """ - The Jira import data after mutation + The Jira import data after mutation. """ jiraImport: JiraImport } @@ -13137,12 +13137,12 @@ input JiraImportUsersInput { clientMutationId: String """ - The project to import the Jira users into + The project to import the Jira users into. """ projectPath: ID! """ - The index of the record the import should started at, default 0 (50 records returned) + The index of the record the import should started at, default 0 (50 records returned). """ startAt: Int } @@ -13404,27 +13404,27 @@ input LabelCreateInput { """ The color of the label given in 6-digit hex notation with leading '#' sign (e.g. #FFAABB) or one of the CSS color names in - https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords + https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords. """ color: String = "#428BCA" """ - Description of the label + Description of the label. """ description: String """ - The group full path the resource is associated with + The group full path the resource is associated with. """ groupPath: ID """ - The project full path the resource is associated with + The project full path the resource is associated with. """ projectPath: ID """ - Title of the label + Title of the label. """ title: String! } @@ -13444,7 +13444,7 @@ type LabelCreatePayload { errors: [String!]! """ - The label after mutation + The label after mutation. """ label: Label } @@ -13493,7 +13493,7 @@ input MarkAsSpamSnippetInput { clientMutationId: String """ - The global ID of the snippet to update + The global ID of the snippet to update. """ id: SnippetID! } @@ -13513,7 +13513,7 @@ type MarkAsSpamSnippetPayload { errors: [String!]! """ - The snippet after mutation + The snippet after mutation. """ snippet: Snippet } @@ -14327,7 +14327,7 @@ input MergeRequestCreateInput { labels: [String!] """ - Project full path the merge request is associated with + Project full path the merge request is associated with. """ projectPath: ID! @@ -14362,7 +14362,7 @@ type MergeRequestCreatePayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14532,7 +14532,7 @@ input MergeRequestSetAssigneesInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! @@ -14542,7 +14542,7 @@ input MergeRequestSetAssigneesInput { operationMode: MutationOperationMode """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! } @@ -14562,7 +14562,7 @@ type MergeRequestSetAssigneesPayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14577,7 +14577,7 @@ input MergeRequestSetLabelsInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! @@ -14592,7 +14592,7 @@ input MergeRequestSetLabelsInput { operationMode: MutationOperationMode """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! } @@ -14612,7 +14612,7 @@ type MergeRequestSetLabelsPayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14627,7 +14627,7 @@ input MergeRequestSetLockedInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! @@ -14637,7 +14637,7 @@ input MergeRequestSetLockedInput { locked: Boolean! """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! } @@ -14657,7 +14657,7 @@ type MergeRequestSetLockedPayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14672,7 +14672,7 @@ input MergeRequestSetMilestoneInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! @@ -14682,7 +14682,7 @@ input MergeRequestSetMilestoneInput { milestoneId: MilestoneID """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! } @@ -14702,7 +14702,7 @@ type MergeRequestSetMilestonePayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14717,17 +14717,17 @@ input MergeRequestSetSubscriptionInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! """ - The desired state of the subscription + The desired state of the subscription. """ subscribedState: Boolean! } @@ -14747,7 +14747,7 @@ type MergeRequestSetSubscriptionPayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14762,12 +14762,12 @@ input MergeRequestSetWipInput { clientMutationId: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! @@ -14792,7 +14792,7 @@ type MergeRequestSetWipPayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -14908,12 +14908,12 @@ input MergeRequestUpdateInput { description: String """ - The IID of the merge request to mutate + The IID of the merge request to mutate. """ iid: String! """ - The project the merge request to mutate is in + The project the merge request to mutate is in. """ projectPath: ID! @@ -14943,7 +14943,7 @@ type MergeRequestUpdatePayload { errors: [String!]! """ - The merge request after mutation + The merge request after mutation. """ mergeRequest: MergeRequest } @@ -19297,12 +19297,12 @@ Autogenerated input type of PrometheusIntegrationCreate """ input PrometheusIntegrationCreateInput { """ - Whether the integration is receiving alerts + Whether the integration is receiving alerts. """ active: Boolean! """ - Endpoint at which prometheus can be queried + Endpoint at which prometheus can be queried. """ apiUrl: String! @@ -19312,7 +19312,7 @@ input PrometheusIntegrationCreateInput { clientMutationId: String """ - The project to create the integration in + The project to create the integration in. """ projectPath: ID! } @@ -19332,7 +19332,7 @@ type PrometheusIntegrationCreatePayload { errors: [String!]! """ - The newly created integration + The newly created integration. """ integration: AlertManagementPrometheusIntegration } @@ -19347,7 +19347,7 @@ input PrometheusIntegrationResetTokenInput { clientMutationId: String """ - The ID of the integration to mutate + The ID of the integration to mutate. """ id: PrometheusServiceID! } @@ -19367,7 +19367,7 @@ type PrometheusIntegrationResetTokenPayload { errors: [String!]! """ - The newly created integration + The newly created integration. """ integration: AlertManagementPrometheusIntegration } @@ -19377,12 +19377,12 @@ Autogenerated input type of PrometheusIntegrationUpdate """ input PrometheusIntegrationUpdateInput { """ - Whether the integration is receiving alerts + Whether the integration is receiving alerts. """ active: Boolean """ - Endpoint at which prometheus can be queried + Endpoint at which prometheus can be queried. """ apiUrl: String @@ -19392,7 +19392,7 @@ input PrometheusIntegrationUpdateInput { clientMutationId: String """ - The ID of the integration to mutate + The ID of the integration to mutate. """ id: PrometheusServiceID! } @@ -19412,7 +19412,7 @@ type PrometheusIntegrationUpdatePayload { errors: [String!]! """ - The newly created integration + The newly created integration. """ integration: AlertManagementPrometheusIntegration } @@ -19437,12 +19437,12 @@ input PromoteToEpicInput { groupPath: ID """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! } @@ -19467,7 +19467,7 @@ type PromoteToEpicPayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -20386,7 +20386,7 @@ Autogenerated input type of ReleaseCreate """ input ReleaseCreateInput { """ - Assets associated to the release + Assets associated to the release. """ assets: ReleaseAssetsInput @@ -20396,7 +20396,7 @@ input ReleaseCreateInput { clientMutationId: String """ - Description (also known as "release notes") of the release + Description (also known as "release notes") of the release. """ description: String @@ -20406,17 +20406,17 @@ input ReleaseCreateInput { milestones: [String!] """ - Name of the release + Name of the release. """ name: String """ - Full path of the project the release is associated with + Full path of the project the release is associated with. """ projectPath: ID! """ - The commit SHA or branch name to use if creating a new tag + The commit SHA or branch name to use if creating a new tag. """ ref: String @@ -20426,7 +20426,7 @@ input ReleaseCreateInput { releasedAt: Time """ - Name of the tag to associate with the release + Name of the tag to associate with the release. """ tagName: String! } @@ -20446,7 +20446,7 @@ type ReleaseCreatePayload { errors: [String!]! """ - The release after mutation + The release after mutation. """ release: Release } @@ -20461,7 +20461,7 @@ input ReleaseDeleteInput { clientMutationId: String """ - Full path of the project the release is associated with + Full path of the project the release is associated with. """ projectPath: ID! @@ -20688,7 +20688,7 @@ input ReleaseUpdateInput { clientMutationId: String """ - Description (release notes) of the release + Description (release notes) of the release. """ description: String @@ -20698,22 +20698,22 @@ input ReleaseUpdateInput { milestones: [String!] """ - Name of the release + Name of the release. """ name: String """ - Full path of the project the release is associated with + Full path of the project the release is associated with. """ projectPath: ID! """ - The release date + The release date. """ releasedAt: Time """ - Name of the tag associated with the release + Name of the tag associated with the release. """ tagName: String! } @@ -20743,7 +20743,7 @@ Autogenerated input type of RemoveAwardEmoji """ input RemoveAwardEmojiInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -20763,7 +20763,7 @@ Autogenerated return type of RemoveAwardEmoji """ type RemoveAwardEmojiPayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -20818,7 +20818,7 @@ input RepositionImageDiffNoteInput { clientMutationId: String """ - The global ID of the DiffNote to update + The global ID of the DiffNote to update. """ id: DiffNoteID! @@ -20843,7 +20843,7 @@ type RepositionImageDiffNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -23219,7 +23219,7 @@ input TerraformStateDeleteInput { clientMutationId: String """ - Global ID of the Terraform state + Global ID of the Terraform state. """ id: TerraformStateID! } @@ -23269,7 +23269,7 @@ input TerraformStateLockInput { clientMutationId: String """ - Global ID of the Terraform state + Global ID of the Terraform state. """ id: TerraformStateID! } @@ -23299,7 +23299,7 @@ input TerraformStateUnlockInput { clientMutationId: String """ - Global ID of the Terraform state + Global ID of the Terraform state. """ id: TerraformStateID! } @@ -23733,7 +23733,7 @@ input TodoCreateInput { clientMutationId: String """ - The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported + The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported. """ targetId: TodoableID! } @@ -23753,7 +23753,7 @@ type TodoCreatePayload { errors: [String!]! """ - The to-do created + The to-do created. """ todo: Todo } @@ -23788,7 +23788,7 @@ input TodoMarkDoneInput { clientMutationId: String """ - The global ID of the todo to mark as done + The global ID of the todo to mark as done. """ id: TodoID! } @@ -23808,7 +23808,7 @@ type TodoMarkDonePayload { errors: [String!]! """ - The requested todo + The requested todo. """ todo: Todo! } @@ -23823,7 +23823,7 @@ input TodoRestoreInput { clientMutationId: String """ - The global ID of the todo to restore + The global ID of the todo to restore. """ id: TodoID! } @@ -23838,7 +23838,7 @@ input TodoRestoreManyInput { clientMutationId: String """ - The global IDs of the todos to restore (a maximum of 50 is supported at once) + The global IDs of the todos to restore (a maximum of 50 is supported at once). """ ids: [TodoID!]! } @@ -23858,12 +23858,12 @@ type TodoRestoreManyPayload { errors: [String!]! """ - Updated todos + Updated todos. """ todos: [Todo!]! """ - The IDs of the updated todo items Deprecated in 13.2: Use todos. + The IDs of the updated todo items. Deprecated in 13.2: Use todos. """ updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2.") } @@ -23883,7 +23883,7 @@ type TodoRestorePayload { errors: [String!]! """ - The requested todo + The requested todo. """ todo: Todo! } @@ -23955,12 +23955,12 @@ type TodosMarkAllDonePayload { errors: [String!]! """ - Updated todos + Updated todos. """ todos: [Todo!]! """ - Ids of the updated todos Deprecated in 13.2: Use todos. + Ids of the updated todos. Deprecated in 13.2: Use todos. """ updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2.") } @@ -23970,7 +23970,7 @@ Autogenerated input type of ToggleAwardEmoji """ input ToggleAwardEmojiInput { """ - The global ID of the awardable resource + The global ID of the awardable resource. """ awardableId: AwardableID! @@ -23990,7 +23990,7 @@ Autogenerated return type of ToggleAwardEmoji """ type ToggleAwardEmojiPayload { """ - The award emoji after mutation + The award emoji after mutation. """ awardEmoji: AwardEmoji @@ -24192,17 +24192,17 @@ input UpdateAlertStatusInput { clientMutationId: String """ - The IID of the alert to mutate + The IID of the alert to mutate. """ iid: String! """ - The project the alert to mutate is in + The project the alert to mutate is in. """ projectPath: ID! """ - The status to set the alert + The status to set the alert. """ status: AlertManagementStatus! } @@ -24212,7 +24212,7 @@ Autogenerated return type of UpdateAlertStatus """ type UpdateAlertStatusPayload { """ - The alert after mutation + The alert after mutation. """ alert: AlertManagementAlert @@ -24227,12 +24227,12 @@ type UpdateAlertStatusPayload { errors: [String!]! """ - The issue created after mutation + The issue created after mutation. """ issue: Issue """ - The todo after mutation + The todo after mutation. """ todo: Todo } @@ -24352,7 +24352,7 @@ input UpdateBoardListInput { clientMutationId: String """ - Indicates if list is collapsed for this user + Indicates if list is collapsed for this user. """ collapsed: Boolean @@ -24362,7 +24362,7 @@ input UpdateBoardListInput { listId: ListID! """ - Position of list within the board + Position of list within the board. """ position: Int } @@ -24382,7 +24382,7 @@ type UpdateBoardListPayload { errors: [String!]! """ - Mutated list + Mutated list. """ list: BoardList } @@ -24487,7 +24487,7 @@ input UpdateContainerExpirationPolicyInput { olderThan: ContainerExpirationPolicyOlderThanEnum """ - The project path where the container expiration policy is located + The project path where the container expiration policy is located. """ projectPath: ID! } @@ -24502,7 +24502,7 @@ type UpdateContainerExpirationPolicyPayload { clientMutationId: String """ - The container expiration policy after mutation + The container expiration policy after mutation. """ containerExpirationPolicy: ContainerExpirationPolicy @@ -24684,7 +24684,7 @@ input UpdateImageDiffNoteInput { clientMutationId: String """ - The global ID of the note to update + The global ID of the note to update. """ id: NoteID! @@ -24709,7 +24709,7 @@ type UpdateImageDiffNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -24719,7 +24719,7 @@ Autogenerated input type of UpdateIssue """ input UpdateIssueInput { """ - The IDs of labels to be added to the issue + The IDs of labels to be added to the issue. """ addLabelIds: [ID!] @@ -24754,7 +24754,7 @@ input UpdateIssueInput { healthStatus: HealthStatus """ - The IID of the issue to mutate + The IID of the issue to mutate. """ iid: String! @@ -24764,22 +24764,22 @@ input UpdateIssueInput { locked: Boolean """ - The ID of the milestone to assign to the issue. On update milestone will be removed if set to null + The ID of the milestone to assign to the issue. On update milestone will be removed if set to null. """ milestoneId: ID """ - The project the issue to mutate is in + The project the issue to mutate is in. """ projectPath: ID! """ - The IDs of labels to be removed from the issue + The IDs of labels to be removed from the issue. """ removeLabelIds: [ID!] """ - Close or reopen an issue + Close or reopen an issue. """ stateEvent: IssueStateEvent @@ -24809,7 +24809,7 @@ type UpdateIssuePayload { errors: [String!]! """ - The issue after mutation + The issue after mutation. """ issue: Issue } @@ -24940,7 +24940,7 @@ input UpdateNoteInput { confidential: Boolean """ - The global ID of the note to update + The global ID of the note to update. """ id: NoteID! } @@ -24960,7 +24960,7 @@ type UpdateNotePayload { errors: [String!]! """ - The note after mutation + The note after mutation. """ note: Note } @@ -25030,7 +25030,7 @@ Autogenerated input type of UpdateSnippet """ input UpdateSnippetInput { """ - Actions to perform over the snippet repository and blobs + Actions to perform over the snippet repository and blobs. """ blobActions: [SnippetBlobActionInputType!] @@ -25040,22 +25040,22 @@ input UpdateSnippetInput { clientMutationId: String """ - Description of the snippet + Description of the snippet. """ description: String """ - The global ID of the snippet to update + The global ID of the snippet to update. """ id: SnippetID! """ - Title of the snippet + Title of the snippet. """ title: String """ - The visibility level of the snippet + The visibility level of the snippet. """ visibilityLevel: VisibilityLevelsEnum } @@ -25075,12 +25075,12 @@ type UpdateSnippetPayload { errors: [String!]! """ - The snippet after mutation + The snippet after mutation. """ snippet: Snippet """ - Indicates whether the operation returns a record detected as spam + Indicates whether the operation returns a record detected as spam. """ spam: Boolean } diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 2fdb5274f1b..969ac16422f 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -105,7 +105,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -153,7 +153,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -403,7 +403,7 @@ }, { "name": "queueName", - "description": "The name of the queue to delete jobs from", + "description": "The name of the queue to delete jobs from.", "type": { "kind": "NON_NULL", "name": null, @@ -477,7 +477,7 @@ }, { "name": "result", - "description": "Information about the status of the deletion request", + "description": "Information about the status of the deletion request.", "args": [ ], @@ -2122,7 +2122,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the alert to mutate is in", + "description": "The project the alert to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -2136,7 +2136,7 @@ }, { "name": "iid", - "description": "The IID of the alert to mutate", + "description": "The IID of the alert to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -2202,7 +2202,7 @@ "fields": [ { "name": "alert", - "description": "The alert after mutation", + "description": "The alert after mutation.", "args": [ ], @@ -2256,7 +2256,7 @@ }, { "name": "issue", - "description": "The issue created after mutation", + "description": "The issue created after mutation.", "args": [ ], @@ -2270,7 +2270,7 @@ }, { "name": "todo", - "description": "The todo after mutation", + "description": "The todo after mutation.", "args": [ ], @@ -2298,7 +2298,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the alert to mutate is in", + "description": "The project the alert to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -2312,7 +2312,7 @@ }, { "name": "iid", - "description": "The IID of the alert to mutate", + "description": "The IID of the alert to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -2346,7 +2346,7 @@ "fields": [ { "name": "alert", - "description": "The alert after mutation", + "description": "The alert after mutation.", "args": [ ], @@ -2400,7 +2400,7 @@ }, { "name": "issue", - "description": "The issue created after mutation", + "description": "The issue created after mutation.", "args": [ ], @@ -2414,7 +2414,7 @@ }, { "name": "todo", - "description": "The todo after mutation", + "description": "The todo after mutation.", "args": [ ], @@ -2596,7 +2596,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -2644,7 +2644,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -2712,7 +2712,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -2760,7 +2760,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -2828,7 +2828,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -2876,7 +2876,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -5602,7 +5602,7 @@ "inputFields": [ { "name": "boardId", - "description": "Global ID of the issue board to mutate", + "description": "Global ID of the issue board to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -5616,7 +5616,7 @@ }, { "name": "backlog", - "description": "Create the backlog list", + "description": "Create the backlog list.", "type": { "kind": "SCALAR", "name": "Boolean", @@ -5626,7 +5626,7 @@ }, { "name": "labelId", - "description": "Global ID of an existing label", + "description": "Global ID of an existing label.", "type": { "kind": "SCALAR", "name": "LabelID", @@ -5726,7 +5726,7 @@ }, { "name": "list", - "description": "List of the issue board", + "description": "List of the issue board.", "args": [ ], @@ -9564,7 +9564,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Project full path the branch is associated with", + "description": "Project full path the branch is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -9578,7 +9578,7 @@ }, { "name": "branch", - "description": "Name of the branch to commit into, it can be a new branch", + "description": "Name of the branch to commit into, it can be a new branch.", "type": { "kind": "NON_NULL", "name": null, @@ -9592,7 +9592,7 @@ }, { "name": "startBranch", - "description": "If on a new branch, name of the original branch", + "description": "If on a new branch, name of the original branch.", "type": { "kind": "SCALAR", "name": "String", @@ -9616,7 +9616,7 @@ }, { "name": "actions", - "description": "Array of action hashes to commit as a batch", + "description": "Array of action hashes to commit as a batch.", "type": { "kind": "NON_NULL", "name": null, @@ -9672,7 +9672,7 @@ }, { "name": "commit", - "description": "The commit after mutation", + "description": "The commit after mutation.", "args": [ ], @@ -11388,7 +11388,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the alert to mutate is in", + "description": "The project the alert to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -11402,7 +11402,7 @@ }, { "name": "iid", - "description": "The IID of the alert to mutate", + "description": "The IID of the alert to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -11436,7 +11436,7 @@ "fields": [ { "name": "alert", - "description": "The alert after mutation", + "description": "The alert after mutation.", "args": [ ], @@ -11490,7 +11490,7 @@ }, { "name": "issue", - "description": "The issue created after mutation", + "description": "The issue created after mutation.", "args": [ ], @@ -11504,7 +11504,7 @@ }, { "name": "todo", - "description": "The todo after mutation", + "description": "The todo after mutation.", "args": [ ], @@ -11532,7 +11532,7 @@ "inputFields": [ { "name": "environmentId", - "description": "The global ID of the environment to add an annotation to", + "description": "The global ID of the environment to add an annotation to.", "type": { "kind": "SCALAR", "name": "EnvironmentID", @@ -11542,7 +11542,7 @@ }, { "name": "clusterId", - "description": "The global ID of the cluster to add an annotation to", + "description": "The global ID of the cluster to add an annotation to.", "type": { "kind": "SCALAR", "name": "ClustersClusterID", @@ -11552,7 +11552,7 @@ }, { "name": "startingAt", - "description": "Timestamp indicating starting moment to which the annotation relates", + "description": "Timestamp indicating starting moment to which the annotation relates.", "type": { "kind": "NON_NULL", "name": null, @@ -11566,7 +11566,7 @@ }, { "name": "endingAt", - "description": "Timestamp indicating ending moment to which the annotation relates", + "description": "Timestamp indicating ending moment to which the annotation relates.", "type": { "kind": "SCALAR", "name": "Time", @@ -11576,7 +11576,7 @@ }, { "name": "dashboardPath", - "description": "The path to a file defining the dashboard on which the annotation should be added", + "description": "The path to a file defining the dashboard on which the annotation should be added.", "type": { "kind": "NON_NULL", "name": null, @@ -11590,7 +11590,7 @@ }, { "name": "description", - "description": "The description of the annotation", + "description": "The description of the annotation.", "type": { "kind": "NON_NULL", "name": null, @@ -11624,7 +11624,7 @@ "fields": [ { "name": "annotation", - "description": "The created annotation", + "description": "The created annotation.", "args": [ ], @@ -11692,7 +11692,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project full path the resource is associated with", + "description": "The project full path the resource is associated with.", "type": { "kind": "SCALAR", "name": "ID", @@ -11702,7 +11702,7 @@ }, { "name": "groupPath", - "description": "The group full path the resource is associated with", + "description": "The group full path the resource is associated with.", "type": { "kind": "SCALAR", "name": "ID", @@ -11906,7 +11906,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Project full path the branch is associated with", + "description": "Project full path the branch is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -11920,7 +11920,7 @@ }, { "name": "name", - "description": "Name of the branch", + "description": "Name of the branch.", "type": { "kind": "NON_NULL", "name": null, @@ -11934,7 +11934,7 @@ }, { "name": "ref", - "description": "Branch name or commit SHA to create branch from", + "description": "Branch name or commit SHA to create branch from.", "type": { "kind": "NON_NULL", "name": null, @@ -11968,7 +11968,7 @@ "fields": [ { "name": "branch", - "description": "Branch after mutation", + "description": "Branch after mutation.", "args": [ ], @@ -12268,7 +12268,7 @@ "inputFields": [ { "name": "groupPath", - "description": "Namespace full path the emoji is associated with", + "description": "Namespace full path the emoji is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -12282,7 +12282,7 @@ }, { "name": "name", - "description": "Name of the emoji", + "description": "Name of the emoji.", "type": { "kind": "NON_NULL", "name": null, @@ -12296,7 +12296,7 @@ }, { "name": "url", - "description": "Location of the emoji file", + "description": "Location of the emoji file.", "type": { "kind": "NON_NULL", "name": null, @@ -12344,7 +12344,7 @@ }, { "name": "customEmoji", - "description": "The new custom emoji", + "description": "The new custom emoji.", "args": [ ], @@ -12518,7 +12518,7 @@ "inputFields": [ { "name": "noteableId", - "description": "The global ID of the resource to add a note to", + "description": "The global ID of the resource to add a note to.", "type": { "kind": "NON_NULL", "name": null, @@ -12630,7 +12630,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -12866,7 +12866,7 @@ "inputFields": [ { "name": "noteableId", - "description": "The global ID of the resource to add a note to", + "description": "The global ID of the resource to add a note to.", "type": { "kind": "NON_NULL", "name": null, @@ -12978,7 +12978,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -13046,7 +13046,7 @@ }, { "name": "projectPath", - "description": "Project full path the issue is associated with", + "description": "Project full path the issue is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -13060,7 +13060,7 @@ }, { "name": "iid", - "description": "The IID (internal ID) of a project issue. Only admins and project owners can modify", + "description": "The IID (internal ID) of a project issue. Only admins and project owners can modify.", "type": { "kind": "SCALAR", "name": "Int", @@ -13084,7 +13084,7 @@ }, { "name": "milestoneId", - "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null", + "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null.", "type": { "kind": "SCALAR", "name": "MilestoneID", @@ -13112,7 +13112,7 @@ }, { "name": "labelIds", - "description": "The IDs of labels to be added to the issue", + "description": "The IDs of labels to be added to the issue.", "type": { "kind": "LIST", "name": null, @@ -13130,7 +13130,7 @@ }, { "name": "createdAt", - "description": "Timestamp when the issue was created. Available only for admins and project owners", + "description": "Timestamp when the issue was created. Available only for admins and project owners.", "type": { "kind": "SCALAR", "name": "Time", @@ -13140,7 +13140,7 @@ }, { "name": "mergeRequestToResolveDiscussionsOf", - "description": "The IID of a merge request for which to resolve discussions", + "description": "The IID of a merge request for which to resolve discussions.", "type": { "kind": "SCALAR", "name": "MergeRequestID", @@ -13150,7 +13150,7 @@ }, { "name": "discussionToResolve", - "description": "The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`", + "description": "The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`.", "type": { "kind": "SCALAR", "name": "String", @@ -13160,7 +13160,7 @@ }, { "name": "assigneeIds", - "description": "The array of user IDs to assign to the issue", + "description": "The array of user IDs to assign to the issue.", "type": { "kind": "LIST", "name": null, @@ -13268,7 +13268,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -13444,7 +13444,7 @@ "inputFields": [ { "name": "noteableId", - "description": "The global ID of the resource to add a note to", + "description": "The global ID of the resource to add a note to.", "type": { "kind": "NON_NULL", "name": null, @@ -13482,7 +13482,7 @@ }, { "name": "discussionId", - "description": "The global ID of the discussion this note is in reply to", + "description": "The global ID of the discussion this note is in reply to.", "type": { "kind": "SCALAR", "name": "DiscussionID", @@ -13552,7 +13552,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -13702,7 +13702,7 @@ "inputFields": [ { "name": "title", - "description": "Title of the snippet", + "description": "Title of the snippet.", "type": { "kind": "NON_NULL", "name": null, @@ -13716,7 +13716,7 @@ }, { "name": "description", - "description": "Description of the snippet", + "description": "Description of the snippet.", "type": { "kind": "SCALAR", "name": "String", @@ -13726,7 +13726,7 @@ }, { "name": "visibilityLevel", - "description": "The visibility level of the snippet", + "description": "The visibility level of the snippet.", "type": { "kind": "NON_NULL", "name": null, @@ -13740,7 +13740,7 @@ }, { "name": "projectPath", - "description": "The project full path the snippet is associated with", + "description": "The project full path the snippet is associated with.", "type": { "kind": "SCALAR", "name": "ID", @@ -13750,7 +13750,7 @@ }, { "name": "uploadedFiles", - "description": "The paths to files uploaded in the snippet description", + "description": "The paths to files uploaded in the snippet description.", "type": { "kind": "LIST", "name": null, @@ -13768,7 +13768,7 @@ }, { "name": "blobActions", - "description": "Actions to perform over the snippet repository and blobs", + "description": "Actions to perform over the snippet repository and blobs.", "type": { "kind": "LIST", "name": null, @@ -13846,7 +13846,7 @@ }, { "name": "snippet", - "description": "The snippet after mutation", + "description": "The snippet after mutation.", "args": [ ], @@ -13860,7 +13860,7 @@ }, { "name": "spam", - "description": "Indicates whether the operation returns a record detected as spam", + "description": "Indicates whether the operation returns a record detected as spam.", "args": [ ], @@ -16565,7 +16565,7 @@ "inputFields": [ { "name": "id", - "description": "Global ID of the annotation to delete", + "description": "Global ID of the annotation to delete.", "type": { "kind": "NON_NULL", "name": null, @@ -18340,7 +18340,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project where the issue is to upload designs for", + "description": "The project where the issue is to upload designs for.", "type": { "kind": "NON_NULL", "name": null, @@ -18354,7 +18354,7 @@ }, { "name": "iid", - "description": "The IID of the issue to modify designs for", + "description": "The IID of the issue to modify designs for.", "type": { "kind": "NON_NULL", "name": null, @@ -18368,7 +18368,7 @@ }, { "name": "filenames", - "description": "The filenames of the designs to delete", + "description": "The filenames of the designs to delete.", "type": { "kind": "NON_NULL", "name": null, @@ -18450,7 +18450,7 @@ }, { "name": "version", - "description": "The new version in which the designs are deleted", + "description": "The new version in which the designs are deleted.", "args": [ ], @@ -18498,7 +18498,7 @@ "inputFields": [ { "name": "id", - "description": "ID of the design to move", + "description": "ID of the design to move.", "type": { "kind": "NON_NULL", "name": null, @@ -18512,7 +18512,7 @@ }, { "name": "previous", - "description": "ID of the immediately preceding design", + "description": "ID of the immediately preceding design.", "type": { "kind": "SCALAR", "name": "DesignManagementDesignID", @@ -18522,7 +18522,7 @@ }, { "name": "next", - "description": "ID of the immediately following design", + "description": "ID of the immediately following design.", "type": { "kind": "SCALAR", "name": "DesignManagementDesignID", @@ -18566,7 +18566,7 @@ }, { "name": "designCollection", - "description": "The current state of the collection", + "description": "The current state of the collection.", "args": [ ], @@ -18620,7 +18620,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project where the issue is to upload designs for", + "description": "The project where the issue is to upload designs for.", "type": { "kind": "NON_NULL", "name": null, @@ -18634,7 +18634,7 @@ }, { "name": "iid", - "description": "The IID of the issue to modify designs for", + "description": "The IID of the issue to modify designs for.", "type": { "kind": "NON_NULL", "name": null, @@ -18648,7 +18648,7 @@ }, { "name": "files", - "description": "The files to upload", + "description": "The files to upload.", "type": { "kind": "NON_NULL", "name": null, @@ -18704,7 +18704,7 @@ }, { "name": "designs", - "description": "The designs that were uploaded by the mutation", + "description": "The designs that were uploaded by the mutation.", "args": [ ], @@ -19199,7 +19199,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the board to destroy", + "description": "The global ID of the board to destroy.", "type": { "kind": "NON_NULL", "name": null, @@ -19335,7 +19335,7 @@ "fields": [ { "name": "board", - "description": "The board after mutation", + "description": "The board after mutation.", "args": [ ], @@ -19667,7 +19667,7 @@ }, { "name": "deletedTagNames", - "description": "Deleted container repository tags", + "description": "Deleted container repository tags.", "args": [ ], @@ -19733,7 +19733,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the note to destroy", + "description": "The global ID of the note to destroy.", "type": { "kind": "NON_NULL", "name": null, @@ -19807,7 +19807,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -19835,7 +19835,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the snippet to destroy", + "description": "The global ID of the snippet to destroy.", "type": { "kind": "NON_NULL", "name": null, @@ -19909,7 +19909,7 @@ }, { "name": "snippet", - "description": "The snippet after mutation", + "description": "The snippet after mutation.", "args": [ ], @@ -21444,7 +21444,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the discussion", + "description": "The global ID of the discussion.", "type": { "kind": "NON_NULL", "name": null, @@ -21458,7 +21458,7 @@ }, { "name": "resolve", - "description": "Will resolve the discussion when true, and unresolve the discussion when false", + "description": "Will resolve the discussion when true, and unresolve the discussion when false.", "type": { "kind": "NON_NULL", "name": null, @@ -21506,7 +21506,7 @@ }, { "name": "discussion", - "description": "The discussion after mutation", + "description": "The discussion after mutation.", "args": [ ], @@ -22094,7 +22094,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the environment to update", + "description": "The global ID of the environment to update.", "type": { "kind": "NON_NULL", "name": null, @@ -22108,7 +22108,7 @@ }, { "name": "weight", - "description": "The weight of the Canary Ingress", + "description": "The weight of the Canary Ingress.", "type": { "kind": "NON_NULL", "name": null, @@ -30351,7 +30351,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project to create the integration in", + "description": "The project to create the integration in.", "type": { "kind": "NON_NULL", "name": null, @@ -30365,7 +30365,7 @@ }, { "name": "name", - "description": "The name of the integration", + "description": "The name of the integration.", "type": { "kind": "NON_NULL", "name": null, @@ -30379,7 +30379,7 @@ }, { "name": "active", - "description": "Whether the integration is receiving alerts", + "description": "Whether the integration is receiving alerts.", "type": { "kind": "NON_NULL", "name": null, @@ -30453,7 +30453,7 @@ }, { "name": "integration", - "description": "The HTTP integration", + "description": "The HTTP integration.", "args": [ ], @@ -30481,7 +30481,7 @@ "inputFields": [ { "name": "id", - "description": "The ID of the integration to remove", + "description": "The ID of the integration to remove.", "type": { "kind": "NON_NULL", "name": null, @@ -30555,7 +30555,7 @@ }, { "name": "integration", - "description": "The HTTP integration", + "description": "The HTTP integration.", "args": [ ], @@ -30583,7 +30583,7 @@ "inputFields": [ { "name": "id", - "description": "The ID of the integration to mutate", + "description": "The ID of the integration to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -30657,7 +30657,7 @@ }, { "name": "integration", - "description": "The HTTP integration", + "description": "The HTTP integration.", "args": [ ], @@ -30685,7 +30685,7 @@ "inputFields": [ { "name": "id", - "description": "The ID of the integration to mutate", + "description": "The ID of the integration to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -30699,7 +30699,7 @@ }, { "name": "name", - "description": "The name of the integration", + "description": "The name of the integration.", "type": { "kind": "SCALAR", "name": "String", @@ -30709,7 +30709,7 @@ }, { "name": "active", - "description": "Whether the integration is receiving alerts", + "description": "Whether the integration is receiving alerts.", "type": { "kind": "SCALAR", "name": "Boolean", @@ -30779,7 +30779,7 @@ }, { "name": "integration", - "description": "The HTTP integration", + "description": "The HTTP integration.", "args": [ ], @@ -33167,7 +33167,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33181,7 +33181,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -33195,7 +33195,7 @@ }, { "name": "targetProjectPath", - "description": "The project to move the issue to", + "description": "The project to move the issue to.", "type": { "kind": "NON_NULL", "name": null, @@ -33230,7 +33230,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Project the issue to mutate is in", + "description": "Project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33244,7 +33244,7 @@ }, { "name": "iid", - "description": "IID of the issue to mutate", + "description": "IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -33258,7 +33258,7 @@ }, { "name": "boardId", - "description": "Global ID of the board that the issue is in", + "description": "Global ID of the board that the issue is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33272,7 +33272,7 @@ }, { "name": "fromListId", - "description": "ID of the board list that the issue will be moved from", + "description": "ID of the board list that the issue will be moved from.", "type": { "kind": "SCALAR", "name": "ID", @@ -33282,7 +33282,7 @@ }, { "name": "toListId", - "description": "ID of the board list that the issue will be moved to", + "description": "ID of the board list that the issue will be moved to.", "type": { "kind": "SCALAR", "name": "ID", @@ -33292,7 +33292,7 @@ }, { "name": "moveBeforeId", - "description": "ID of issue that should be placed before the current issue", + "description": "ID of issue that should be placed before the current issue.", "type": { "kind": "SCALAR", "name": "ID", @@ -33302,7 +33302,7 @@ }, { "name": "moveAfterId", - "description": "ID of issue that should be placed after the current issue", + "description": "ID of issue that should be placed after the current issue.", "type": { "kind": "SCALAR", "name": "ID", @@ -33382,7 +33382,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -33449,7 +33449,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -33634,7 +33634,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33648,7 +33648,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -33754,7 +33754,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -33782,7 +33782,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33796,7 +33796,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -33884,7 +33884,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -33912,7 +33912,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -33926,7 +33926,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -33940,7 +33940,7 @@ }, { "name": "dueDate", - "description": "The desired due date for the issue", + "description": "The desired due date for the issue.", "type": { "kind": "NON_NULL", "name": null, @@ -34014,7 +34014,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34042,7 +34042,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34056,7 +34056,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34140,7 +34140,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34168,7 +34168,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34182,7 +34182,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34266,7 +34266,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34294,7 +34294,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34308,7 +34308,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34322,7 +34322,7 @@ }, { "name": "locked", - "description": "Whether or not to lock discussion on the issue", + "description": "Whether or not to lock discussion on the issue.", "type": { "kind": "NON_NULL", "name": null, @@ -34396,7 +34396,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34424,7 +34424,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34438,7 +34438,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34526,7 +34526,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34554,7 +34554,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34568,7 +34568,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34582,7 +34582,7 @@ }, { "name": "subscribedState", - "description": "The desired state of the subscription", + "description": "The desired state of the subscription.", "type": { "kind": "NON_NULL", "name": null, @@ -34656,7 +34656,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -34684,7 +34684,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -34698,7 +34698,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -34786,7 +34786,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -35817,7 +35817,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project to import the Jira project into", + "description": "The project to import the Jira project into.", "type": { "kind": "NON_NULL", "name": null, @@ -35831,7 +35831,7 @@ }, { "name": "jiraProjectKey", - "description": "Project key of the importer Jira project", + "description": "Project key of the importer Jira project.", "type": { "kind": "NON_NULL", "name": null, @@ -35845,7 +35845,7 @@ }, { "name": "jiraProjectName", - "description": "Project name of the importer Jira project", + "description": "Project name of the importer Jira project.", "type": { "kind": "SCALAR", "name": "String", @@ -35855,7 +35855,7 @@ }, { "name": "usersMapping", - "description": "The mapping of Jira to GitLab users", + "description": "The mapping of Jira to GitLab users.", "type": { "kind": "LIST", "name": null, @@ -35933,7 +35933,7 @@ }, { "name": "jiraImport", - "description": "The Jira import data after mutation", + "description": "The Jira import data after mutation.", "args": [ ], @@ -35961,7 +35961,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project to import the Jira users into", + "description": "The project to import the Jira users into.", "type": { "kind": "NON_NULL", "name": null, @@ -35975,7 +35975,7 @@ }, { "name": "startAt", - "description": "The index of the record the import should started at, default 0 (50 records returned)", + "description": "The index of the record the import should started at, default 0 (50 records returned).", "type": { "kind": "SCALAR", "name": "Int", @@ -36875,7 +36875,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project full path the resource is associated with", + "description": "The project full path the resource is associated with.", "type": { "kind": "SCALAR", "name": "ID", @@ -36885,7 +36885,7 @@ }, { "name": "groupPath", - "description": "The group full path the resource is associated with", + "description": "The group full path the resource is associated with.", "type": { "kind": "SCALAR", "name": "ID", @@ -36895,7 +36895,7 @@ }, { "name": "title", - "description": "Title of the label", + "description": "Title of the label.", "type": { "kind": "NON_NULL", "name": null, @@ -36909,7 +36909,7 @@ }, { "name": "description", - "description": "Description of the label", + "description": "Description of the label.", "type": { "kind": "SCALAR", "name": "String", @@ -36919,7 +36919,7 @@ }, { "name": "color", - "description": "The color of the label given in 6-digit hex notation with leading '#' sign (e.g. #FFAABB) or one of the CSS color names in https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords", + "description": "The color of the label given in 6-digit hex notation with leading '#' sign (e.g. #FFAABB) or one of the CSS color names in https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords.", "type": { "kind": "SCALAR", "name": "String", @@ -36989,7 +36989,7 @@ }, { "name": "label", - "description": "The label after mutation", + "description": "The label after mutation.", "args": [ ], @@ -37111,7 +37111,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the snippet to update", + "description": "The global ID of the snippet to update.", "type": { "kind": "NON_NULL", "name": null, @@ -37185,7 +37185,7 @@ }, { "name": "snippet", - "description": "The snippet after mutation", + "description": "The snippet after mutation.", "args": [ ], @@ -39381,7 +39381,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Project full path the merge request is associated with", + "description": "Project full path the merge request is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -39525,7 +39525,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40028,7 +40028,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40042,7 +40042,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40148,7 +40148,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40176,7 +40176,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40190,7 +40190,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40296,7 +40296,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40324,7 +40324,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40338,7 +40338,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40426,7 +40426,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40454,7 +40454,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40468,7 +40468,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40552,7 +40552,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40580,7 +40580,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40594,7 +40594,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40608,7 +40608,7 @@ }, { "name": "subscribedState", - "description": "The desired state of the subscription", + "description": "The desired state of the subscription.", "type": { "kind": "NON_NULL", "name": null, @@ -40682,7 +40682,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40710,7 +40710,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -40724,7 +40724,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -40812,7 +40812,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -40988,7 +40988,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the merge request to mutate is in", + "description": "The project the merge request to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -41002,7 +41002,7 @@ }, { "name": "iid", - "description": "The IID of the merge request to mutate", + "description": "The IID of the merge request to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -41106,7 +41106,7 @@ }, { "name": "mergeRequest", - "description": "The merge request after mutation", + "description": "The merge request after mutation.", "args": [ ], @@ -56321,7 +56321,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project to create the integration in", + "description": "The project to create the integration in.", "type": { "kind": "NON_NULL", "name": null, @@ -56335,7 +56335,7 @@ }, { "name": "active", - "description": "Whether the integration is receiving alerts", + "description": "Whether the integration is receiving alerts.", "type": { "kind": "NON_NULL", "name": null, @@ -56349,7 +56349,7 @@ }, { "name": "apiUrl", - "description": "Endpoint at which prometheus can be queried", + "description": "Endpoint at which prometheus can be queried.", "type": { "kind": "NON_NULL", "name": null, @@ -56423,7 +56423,7 @@ }, { "name": "integration", - "description": "The newly created integration", + "description": "The newly created integration.", "args": [ ], @@ -56451,7 +56451,7 @@ "inputFields": [ { "name": "id", - "description": "The ID of the integration to mutate", + "description": "The ID of the integration to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -56525,7 +56525,7 @@ }, { "name": "integration", - "description": "The newly created integration", + "description": "The newly created integration.", "args": [ ], @@ -56553,7 +56553,7 @@ "inputFields": [ { "name": "id", - "description": "The ID of the integration to mutate", + "description": "The ID of the integration to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -56567,7 +56567,7 @@ }, { "name": "active", - "description": "Whether the integration is receiving alerts", + "description": "Whether the integration is receiving alerts.", "type": { "kind": "SCALAR", "name": "Boolean", @@ -56577,7 +56577,7 @@ }, { "name": "apiUrl", - "description": "Endpoint at which prometheus can be queried", + "description": "Endpoint at which prometheus can be queried.", "type": { "kind": "SCALAR", "name": "String", @@ -56647,7 +56647,7 @@ }, { "name": "integration", - "description": "The newly created integration", + "description": "The newly created integration.", "args": [ ], @@ -56685,7 +56685,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -56699,7 +56699,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -56797,7 +56797,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -59048,7 +59048,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Full path of the project the release is associated with", + "description": "Full path of the project the release is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -59062,7 +59062,7 @@ }, { "name": "tagName", - "description": "Name of the tag to associate with the release", + "description": "Name of the tag to associate with the release.", "type": { "kind": "NON_NULL", "name": null, @@ -59076,7 +59076,7 @@ }, { "name": "ref", - "description": "The commit SHA or branch name to use if creating a new tag", + "description": "The commit SHA or branch name to use if creating a new tag.", "type": { "kind": "SCALAR", "name": "String", @@ -59086,7 +59086,7 @@ }, { "name": "name", - "description": "Name of the release", + "description": "Name of the release.", "type": { "kind": "SCALAR", "name": "String", @@ -59096,7 +59096,7 @@ }, { "name": "description", - "description": "Description (also known as \"release notes\") of the release", + "description": "Description (also known as \"release notes\") of the release.", "type": { "kind": "SCALAR", "name": "String", @@ -59134,7 +59134,7 @@ }, { "name": "assets", - "description": "Assets associated to the release", + "description": "Assets associated to the release.", "type": { "kind": "INPUT_OBJECT", "name": "ReleaseAssetsInput", @@ -59204,7 +59204,7 @@ }, { "name": "release", - "description": "The release after mutation", + "description": "The release after mutation.", "args": [ ], @@ -59232,7 +59232,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Full path of the project the release is associated with", + "description": "Full path of the project the release is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -59877,7 +59877,7 @@ "inputFields": [ { "name": "projectPath", - "description": "Full path of the project the release is associated with", + "description": "Full path of the project the release is associated with.", "type": { "kind": "NON_NULL", "name": null, @@ -59891,7 +59891,7 @@ }, { "name": "tagName", - "description": "Name of the tag associated with the release", + "description": "Name of the tag associated with the release.", "type": { "kind": "NON_NULL", "name": null, @@ -59905,7 +59905,7 @@ }, { "name": "name", - "description": "Name of the release", + "description": "Name of the release.", "type": { "kind": "SCALAR", "name": "String", @@ -59915,7 +59915,7 @@ }, { "name": "description", - "description": "Description (release notes) of the release", + "description": "Description (release notes) of the release.", "type": { "kind": "SCALAR", "name": "String", @@ -59925,7 +59925,7 @@ }, { "name": "releasedAt", - "description": "The release date", + "description": "The release date.", "type": { "kind": "SCALAR", "name": "Time", @@ -60041,7 +60041,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -60089,7 +60089,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -60245,7 +60245,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the DiffNote to update", + "description": "The global ID of the DiffNote to update.", "type": { "kind": "NON_NULL", "name": null, @@ -60333,7 +60333,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -67552,7 +67552,7 @@ "inputFields": [ { "name": "id", - "description": "Global ID of the Terraform state", + "description": "Global ID of the Terraform state.", "type": { "kind": "NON_NULL", "name": null, @@ -67695,7 +67695,7 @@ "inputFields": [ { "name": "id", - "description": "Global ID of the Terraform state", + "description": "Global ID of the Terraform state.", "type": { "kind": "NON_NULL", "name": null, @@ -67783,7 +67783,7 @@ "inputFields": [ { "name": "id", - "description": "Global ID of the Terraform state", + "description": "Global ID of the Terraform state.", "type": { "kind": "NON_NULL", "name": null, @@ -69183,7 +69183,7 @@ "inputFields": [ { "name": "targetId", - "description": "The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported", + "description": "The global ID of the to-do item's parent. Issues, merge requests, designs and epics are supported.", "type": { "kind": "NON_NULL", "name": null, @@ -69257,7 +69257,7 @@ }, { "name": "todo", - "description": "The to-do created", + "description": "The to-do created.", "args": [ ], @@ -69340,7 +69340,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the todo to mark as done", + "description": "The global ID of the todo to mark as done.", "type": { "kind": "NON_NULL", "name": null, @@ -69414,7 +69414,7 @@ }, { "name": "todo", - "description": "The requested todo", + "description": "The requested todo.", "args": [ ], @@ -69446,7 +69446,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the todo to restore", + "description": "The global ID of the todo to restore.", "type": { "kind": "NON_NULL", "name": null, @@ -69481,7 +69481,7 @@ "inputFields": [ { "name": "ids", - "description": "The global IDs of the todos to restore (a maximum of 50 is supported at once)", + "description": "The global IDs of the todos to restore (a maximum of 50 is supported at once).", "type": { "kind": "NON_NULL", "name": null, @@ -69563,7 +69563,7 @@ }, { "name": "todos", - "description": "Updated todos", + "description": "Updated todos.", "args": [ ], @@ -69589,7 +69589,7 @@ }, { "name": "updatedIds", - "description": "The IDs of the updated todo items Deprecated in 13.2: Use todos.", + "description": "The IDs of the updated todo items. Deprecated in 13.2: Use todos.", "args": [ ], @@ -69668,7 +69668,7 @@ }, { "name": "todo", - "description": "The requested todo", + "description": "The requested todo.", "args": [ ], @@ -69840,7 +69840,7 @@ }, { "name": "todos", - "description": "Updated todos", + "description": "Updated todos.", "args": [ ], @@ -69866,7 +69866,7 @@ }, { "name": "updatedIds", - "description": "Ids of the updated todos Deprecated in 13.2: Use todos.", + "description": "Ids of the updated todos. Deprecated in 13.2: Use todos.", "args": [ ], @@ -69906,7 +69906,7 @@ "inputFields": [ { "name": "awardableId", - "description": "The global ID of the awardable resource", + "description": "The global ID of the awardable resource.", "type": { "kind": "NON_NULL", "name": null, @@ -69954,7 +69954,7 @@ "fields": [ { "name": "awardEmoji", - "description": "The award emoji after mutation", + "description": "The award emoji after mutation.", "args": [ ], @@ -70536,7 +70536,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the alert to mutate is in", + "description": "The project the alert to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -70550,7 +70550,7 @@ }, { "name": "iid", - "description": "The IID of the alert to mutate", + "description": "The IID of the alert to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -70564,7 +70564,7 @@ }, { "name": "status", - "description": "The status to set the alert", + "description": "The status to set the alert.", "type": { "kind": "NON_NULL", "name": null, @@ -70598,7 +70598,7 @@ "fields": [ { "name": "alert", - "description": "The alert after mutation", + "description": "The alert after mutation.", "args": [ ], @@ -70652,7 +70652,7 @@ }, { "name": "issue", - "description": "The issue created after mutation", + "description": "The issue created after mutation.", "args": [ ], @@ -70666,7 +70666,7 @@ }, { "name": "todo", - "description": "The todo after mutation", + "description": "The todo after mutation.", "args": [ ], @@ -70979,7 +70979,7 @@ }, { "name": "position", - "description": "Position of list within the board", + "description": "Position of list within the board.", "type": { "kind": "SCALAR", "name": "Int", @@ -70989,7 +70989,7 @@ }, { "name": "collapsed", - "description": "Indicates if list is collapsed for this user", + "description": "Indicates if list is collapsed for this user.", "type": { "kind": "SCALAR", "name": "Boolean", @@ -71059,7 +71059,7 @@ }, { "name": "list", - "description": "Mutated list", + "description": "Mutated list.", "args": [ ], @@ -71270,7 +71270,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project path where the container expiration policy is located", + "description": "The project path where the container expiration policy is located.", "type": { "kind": "NON_NULL", "name": null, @@ -71378,7 +71378,7 @@ }, { "name": "containerExpirationPolicy", - "description": "The container expiration policy after mutation", + "description": "The container expiration policy after mutation.", "args": [ ], @@ -71849,7 +71849,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the note to update", + "description": "The global ID of the note to update.", "type": { "kind": "NON_NULL", "name": null, @@ -71943,7 +71943,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -71971,7 +71971,7 @@ "inputFields": [ { "name": "projectPath", - "description": "The project the issue to mutate is in", + "description": "The project the issue to mutate is in.", "type": { "kind": "NON_NULL", "name": null, @@ -71985,7 +71985,7 @@ }, { "name": "iid", - "description": "The IID of the issue to mutate", + "description": "The IID of the issue to mutate.", "type": { "kind": "NON_NULL", "name": null, @@ -72049,7 +72049,7 @@ }, { "name": "milestoneId", - "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null", + "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null.", "type": { "kind": "SCALAR", "name": "ID", @@ -72059,7 +72059,7 @@ }, { "name": "addLabelIds", - "description": "The IDs of labels to be added to the issue", + "description": "The IDs of labels to be added to the issue.", "type": { "kind": "LIST", "name": null, @@ -72077,7 +72077,7 @@ }, { "name": "removeLabelIds", - "description": "The IDs of labels to be removed from the issue", + "description": "The IDs of labels to be removed from the issue.", "type": { "kind": "LIST", "name": null, @@ -72095,7 +72095,7 @@ }, { "name": "stateEvent", - "description": "Close or reopen an issue", + "description": "Close or reopen an issue.", "type": { "kind": "ENUM", "name": "IssueStateEvent", @@ -72195,7 +72195,7 @@ }, { "name": "issue", - "description": "The issue after mutation", + "description": "The issue after mutation.", "args": [ ], @@ -72501,7 +72501,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the note to update", + "description": "The global ID of the note to update.", "type": { "kind": "NON_NULL", "name": null, @@ -72595,7 +72595,7 @@ }, { "name": "note", - "description": "The note after mutation", + "description": "The note after mutation.", "args": [ ], @@ -72779,7 +72779,7 @@ "inputFields": [ { "name": "id", - "description": "The global ID of the snippet to update", + "description": "The global ID of the snippet to update.", "type": { "kind": "NON_NULL", "name": null, @@ -72793,7 +72793,7 @@ }, { "name": "title", - "description": "Title of the snippet", + "description": "Title of the snippet.", "type": { "kind": "SCALAR", "name": "String", @@ -72803,7 +72803,7 @@ }, { "name": "description", - "description": "Description of the snippet", + "description": "Description of the snippet.", "type": { "kind": "SCALAR", "name": "String", @@ -72813,7 +72813,7 @@ }, { "name": "visibilityLevel", - "description": "The visibility level of the snippet", + "description": "The visibility level of the snippet.", "type": { "kind": "ENUM", "name": "VisibilityLevelsEnum", @@ -72823,7 +72823,7 @@ }, { "name": "blobActions", - "description": "Actions to perform over the snippet repository and blobs", + "description": "Actions to perform over the snippet repository and blobs.", "type": { "kind": "LIST", "name": null, @@ -72901,7 +72901,7 @@ }, { "name": "snippet", - "description": "The snippet after mutation", + "description": "The snippet after mutation.", "args": [ ], @@ -72915,7 +72915,7 @@ }, { "name": "spam", - "description": "Indicates whether the operation returns a record detected as spam", + "description": "Indicates whether the operation returns a record detected as spam.", "args": [ ], diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 9bbd47a041e..36137c241a5 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -50,7 +50,7 @@ Autogenerated return type of AddAwardEmoji. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -72,7 +72,7 @@ Autogenerated return type of AdminSidekiqQueuesDeleteJobs. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `result` | DeleteJobsResponse | Information about the status of the deletion request | +| `result` | DeleteJobsResponse | Information about the status of the deletion request. | ### AlertManagementAlert @@ -152,11 +152,11 @@ Autogenerated return type of AlertSetAssignees. | Field | Type | Description | | ----- | ---- | ----------- | -| `alert` | AlertManagementAlert | The alert after mutation | +| `alert` | AlertManagementAlert | The alert after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue created after mutation | -| `todo` | Todo | The todo after mutation | +| `issue` | Issue | The issue created after mutation. | +| `todo` | Todo | The todo after mutation. | ### AlertTodoCreatePayload @@ -164,11 +164,11 @@ Autogenerated return type of AlertTodoCreate. | Field | Type | Description | | ----- | ---- | ----------- | -| `alert` | AlertManagementAlert | The alert after mutation | +| `alert` | AlertManagementAlert | The alert after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue created after mutation | -| `todo` | Todo | The todo after mutation | +| `issue` | Issue | The issue created after mutation. | +| `todo` | Todo | The todo after mutation. | ### AwardEmoji @@ -189,7 +189,7 @@ Autogenerated return type of AwardEmojiAdd. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -199,7 +199,7 @@ Autogenerated return type of AwardEmojiRemove. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -209,7 +209,7 @@ Autogenerated return type of AwardEmojiToggle. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `toggledOn` | Boolean! | Indicates the status of the emoji. True if the toggle awarded the emoji, and false if the toggle removed the emoji. | @@ -344,7 +344,7 @@ Autogenerated return type of BoardListCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `list` | BoardList | List of the issue board | +| `list` | BoardList | List of the issue board. | ### BoardListUpdateLimitMetricsPayload @@ -552,7 +552,7 @@ Autogenerated return type of CommitCreate. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `commit` | Commit | The commit after mutation | +| `commit` | Commit | The commit after mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### ComplianceFramework @@ -654,11 +654,11 @@ Autogenerated return type of CreateAlertIssue. | Field | Type | Description | | ----- | ---- | ----------- | -| `alert` | AlertManagementAlert | The alert after mutation | +| `alert` | AlertManagementAlert | The alert after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue created after mutation | -| `todo` | Todo | The todo after mutation | +| `issue` | Issue | The issue created after mutation. | +| `todo` | Todo | The todo after mutation. | ### CreateAnnotationPayload @@ -666,7 +666,7 @@ Autogenerated return type of CreateAnnotation. | Field | Type | Description | | ----- | ---- | ----------- | -| `annotation` | MetricsDashboardAnnotation | The created annotation | +| `annotation` | MetricsDashboardAnnotation | The created annotation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -686,7 +686,7 @@ Autogenerated return type of CreateBranch. | Field | Type | Description | | ----- | ---- | ----------- | -| `branch` | Branch | Branch after mutation | +| `branch` | Branch | Branch after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -717,7 +717,7 @@ Autogenerated return type of CreateCustomEmoji. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `customEmoji` | CustomEmoji | The new custom emoji | +| `customEmoji` | CustomEmoji | The new custom emoji. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### CreateDevopsAdoptionSegmentPayload @@ -738,7 +738,7 @@ Autogenerated return type of CreateDiffNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### CreateEpicPayload @@ -758,7 +758,7 @@ Autogenerated return type of CreateImageDiffNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### CreateIssuePayload @@ -768,7 +768,7 @@ Autogenerated return type of CreateIssue. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### CreateIterationPayload @@ -788,7 +788,7 @@ Autogenerated return type of CreateNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### CreateRequirementPayload @@ -808,8 +808,8 @@ Autogenerated return type of CreateSnippet. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `snippet` | Snippet | The snippet after mutation | -| `spam` | Boolean | Indicates whether the operation returns a record detected as spam | +| `snippet` | Snippet | The snippet after mutation. | +| `spam` | Boolean | Indicates whether the operation returns a record detected as spam. | ### CreateTestCasePayload @@ -1070,7 +1070,7 @@ Autogenerated return type of DesignManagementDelete. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `version` | DesignVersion | The new version in which the designs are deleted | +| `version` | DesignVersion | The new version in which the designs are deleted. | ### DesignManagementMovePayload @@ -1079,7 +1079,7 @@ Autogenerated return type of DesignManagementMove. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `designCollection` | DesignCollection | The current state of the collection | +| `designCollection` | DesignCollection | The current state of the collection. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### DesignManagementUploadPayload @@ -1089,7 +1089,7 @@ Autogenerated return type of DesignManagementUpload. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `designs` | Design! => Array | The designs that were uploaded by the mutation | +| `designs` | Design! => Array | The designs that were uploaded by the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `skippedDesigns` | Design! => Array | Any designs that were skipped from the upload due to there being no change to their content since their last version | @@ -1121,7 +1121,7 @@ Autogenerated return type of DestroyBoard. | Field | Type | Description | | ----- | ---- | ----------- | -| `board` | Board | The board after mutation | +| `board` | Board | The board after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -1151,7 +1151,7 @@ Autogenerated return type of DestroyContainerRepositoryTags. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `deletedTagNames` | String! => Array | Deleted container repository tags | +| `deletedTagNames` | String! => Array | Deleted container repository tags. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### DestroyNotePayload @@ -1162,7 +1162,7 @@ Autogenerated return type of DestroyNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### DestroySnippetPayload @@ -1172,7 +1172,7 @@ Autogenerated return type of DestroySnippet. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `snippet` | Snippet | The snippet after mutation | +| `snippet` | Snippet | The snippet after mutation. | ### DetailedStatus @@ -1281,7 +1281,7 @@ Autogenerated return type of DiscussionToggleResolve. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `discussion` | Discussion | The discussion after mutation | +| `discussion` | Discussion | The discussion after mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### DismissVulnerabilityPayload @@ -1689,7 +1689,7 @@ Autogenerated return type of HttpIntegrationCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementHttpIntegration | The HTTP integration | +| `integration` | AlertManagementHttpIntegration | The HTTP integration. | ### HttpIntegrationDestroyPayload @@ -1699,7 +1699,7 @@ Autogenerated return type of HttpIntegrationDestroy. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementHttpIntegration | The HTTP integration | +| `integration` | AlertManagementHttpIntegration | The HTTP integration. | ### HttpIntegrationResetTokenPayload @@ -1709,7 +1709,7 @@ Autogenerated return type of HttpIntegrationResetToken. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementHttpIntegration | The HTTP integration | +| `integration` | AlertManagementHttpIntegration | The HTTP integration. | ### HttpIntegrationUpdatePayload @@ -1719,7 +1719,7 @@ Autogenerated return type of HttpIntegrationUpdate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementHttpIntegration | The HTTP integration | +| `integration` | AlertManagementHttpIntegration | The HTTP integration. | ### IncidentManagementOncallRotation @@ -1832,7 +1832,7 @@ Autogenerated return type of IssueMoveList. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueMovePayload @@ -1842,7 +1842,7 @@ Autogenerated return type of IssueMove. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssuePermissions @@ -1867,7 +1867,7 @@ Autogenerated return type of IssueSetAssignees. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetConfidentialPayload @@ -1877,7 +1877,7 @@ Autogenerated return type of IssueSetConfidential. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetDueDatePayload @@ -1887,7 +1887,7 @@ Autogenerated return type of IssueSetDueDate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetEpicPayload @@ -1897,7 +1897,7 @@ Autogenerated return type of IssueSetEpic. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetIterationPayload @@ -1907,7 +1907,7 @@ Autogenerated return type of IssueSetIteration. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetLockedPayload @@ -1917,7 +1917,7 @@ Autogenerated return type of IssueSetLocked. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetSeverityPayload @@ -1927,7 +1927,7 @@ Autogenerated return type of IssueSetSeverity. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetSubscriptionPayload @@ -1937,7 +1937,7 @@ Autogenerated return type of IssueSetSubscription. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueSetWeightPayload @@ -1947,7 +1947,7 @@ Autogenerated return type of IssueSetWeight. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### IssueStatusCountsType @@ -2001,7 +2001,7 @@ Autogenerated return type of JiraImportStart. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `jiraImport` | JiraImport | The Jira import data after mutation | +| `jiraImport` | JiraImport | The Jira import data after mutation. | ### JiraImportUsersPayload @@ -2059,7 +2059,7 @@ Autogenerated return type of LabelCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `label` | Label | The label after mutation | +| `label` | Label | The label after mutation. | ### MarkAsSpamSnippetPayload @@ -2069,7 +2069,7 @@ Autogenerated return type of MarkAsSpamSnippet. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `snippet` | Snippet | The snippet after mutation | +| `snippet` | Snippet | The snippet after mutation. | ### MergeRequest @@ -2164,7 +2164,7 @@ Autogenerated return type of MergeRequestCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestDiffRegistry @@ -2205,7 +2205,7 @@ Autogenerated return type of MergeRequestSetAssignees. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestSetLabelsPayload @@ -2215,7 +2215,7 @@ Autogenerated return type of MergeRequestSetLabels. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestSetLockedPayload @@ -2225,7 +2225,7 @@ Autogenerated return type of MergeRequestSetLocked. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestSetMilestonePayload @@ -2235,7 +2235,7 @@ Autogenerated return type of MergeRequestSetMilestone. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestSetSubscriptionPayload @@ -2245,7 +2245,7 @@ Autogenerated return type of MergeRequestSetSubscription. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestSetWipPayload @@ -2255,7 +2255,7 @@ Autogenerated return type of MergeRequestSetWip. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### MergeRequestUpdatePayload @@ -2265,7 +2265,7 @@ Autogenerated return type of MergeRequestUpdate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `mergeRequest` | MergeRequest | The merge request after mutation | +| `mergeRequest` | MergeRequest | The merge request after mutation. | ### Metadata @@ -2799,7 +2799,7 @@ Autogenerated return type of PrometheusIntegrationCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementPrometheusIntegration | The newly created integration | +| `integration` | AlertManagementPrometheusIntegration | The newly created integration. | ### PrometheusIntegrationResetTokenPayload @@ -2809,7 +2809,7 @@ Autogenerated return type of PrometheusIntegrationResetToken. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementPrometheusIntegration | The newly created integration | +| `integration` | AlertManagementPrometheusIntegration | The newly created integration. | ### PrometheusIntegrationUpdatePayload @@ -2819,7 +2819,7 @@ Autogenerated return type of PrometheusIntegrationUpdate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `integration` | AlertManagementPrometheusIntegration | The newly created integration | +| `integration` | AlertManagementPrometheusIntegration | The newly created integration. | ### PromoteToEpicPayload @@ -2830,7 +2830,7 @@ Autogenerated return type of PromoteToEpic. | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `epic` | Epic | The epic after issue promotion | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### Release @@ -2884,7 +2884,7 @@ Autogenerated return type of ReleaseCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `release` | Release | The release after mutation | +| `release` | Release | The release after mutation. | ### ReleaseDeletePayload @@ -2944,7 +2944,7 @@ Autogenerated return type of RemoveAwardEmoji. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | @@ -2965,7 +2965,7 @@ Autogenerated return type of RepositionImageDiffNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### Repository @@ -3538,7 +3538,7 @@ Autogenerated return type of TodoCreate. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `todo` | Todo | The to-do created | +| `todo` | Todo | The to-do created. | ### TodoMarkDonePayload @@ -3548,7 +3548,7 @@ Autogenerated return type of TodoMarkDone. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `todo` | Todo! | The requested todo | +| `todo` | Todo! | The requested todo. | ### TodoRestoreManyPayload @@ -3558,7 +3558,7 @@ Autogenerated return type of TodoRestoreMany. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `todos` | Todo! => Array | Updated todos | +| `todos` | Todo! => Array | Updated todos. | | `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2. | ### TodoRestorePayload @@ -3569,7 +3569,7 @@ Autogenerated return type of TodoRestore. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `todo` | Todo! | The requested todo | +| `todo` | Todo! | The requested todo. | ### TodosMarkAllDonePayload @@ -3579,7 +3579,7 @@ Autogenerated return type of TodosMarkAllDone. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `todos` | Todo! => Array | Updated todos | +| `todos` | Todo! => Array | Updated todos. | | `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2. | ### ToggleAwardEmojiPayload @@ -3588,7 +3588,7 @@ Autogenerated return type of ToggleAwardEmoji. | Field | Type | Description | | ----- | ---- | ----------- | -| `awardEmoji` | AwardEmoji | The award emoji after mutation | +| `awardEmoji` | AwardEmoji | The award emoji after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `toggledOn` | Boolean! | Indicates the status of the emoji. True if the toggle awarded the emoji, and false if the toggle removed the emoji. | @@ -3623,11 +3623,11 @@ Autogenerated return type of UpdateAlertStatus. | Field | Type | Description | | ----- | ---- | ----------- | -| `alert` | AlertManagementAlert | The alert after mutation | +| `alert` | AlertManagementAlert | The alert after mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue created after mutation | -| `todo` | Todo | The todo after mutation | +| `issue` | Issue | The issue created after mutation. | +| `todo` | Todo | The todo after mutation. | ### UpdateBoardEpicUserPreferencesPayload @@ -3647,7 +3647,7 @@ Autogenerated return type of UpdateBoardList. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `list` | BoardList | Mutated list | +| `list` | BoardList | Mutated list. | ### UpdateBoardPayload @@ -3676,7 +3676,7 @@ Autogenerated return type of UpdateContainerExpirationPolicy. | Field | Type | Description | | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | -| `containerExpirationPolicy` | ContainerExpirationPolicy | The container expiration policy after mutation | +| `containerExpirationPolicy` | ContainerExpirationPolicy | The container expiration policy after mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | ### UpdateDevopsAdoptionSegmentPayload @@ -3707,7 +3707,7 @@ Autogenerated return type of UpdateImageDiffNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### UpdateIssuePayload @@ -3717,7 +3717,7 @@ Autogenerated return type of UpdateIssue. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `issue` | Issue | The issue after mutation | +| `issue` | Issue | The issue after mutation. | ### UpdateIterationPayload @@ -3747,7 +3747,7 @@ Autogenerated return type of UpdateNote. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `note` | Note | The note after mutation | +| `note` | Note | The note after mutation. | ### UpdateRequirementPayload @@ -3767,8 +3767,8 @@ Autogenerated return type of UpdateSnippet. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `snippet` | Snippet | The snippet after mutation | -| `spam` | Boolean | Indicates whether the operation returns a record detected as spam | +| `snippet` | Snippet | The snippet after mutation. | +| `spam` | Boolean | Indicates whether the operation returns a record detected as spam. | ### User diff --git a/doc/development/product_analytics/usage_ping.md b/doc/development/product_analytics/usage_ping.md index 7f4dad172ec..535c8d9fe9d 100644 --- a/doc/development/product_analytics/usage_ping.md +++ b/doc/development/product_analytics/usage_ping.md @@ -114,9 +114,9 @@ sequenceDiagram ## How Usage Ping works 1. The Usage Ping [cron job](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/gitlab_usage_ping_worker.rb#L30) is set in Sidekiq to run weekly. -1. When the cron job runs, it calls [`GitLab::UsageData.to_json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L22). -1. `GitLab::UsageData.to_json` [cascades down](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L22) to ~400+ other counter method calls. -1. The response of all methods calls are [merged together](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L14) into a single JSON payload in `GitLab::UsageData.to_json`. +1. When the cron job runs, it calls [`Gitlab::UsageData.to_json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L22). +1. `Gitlab::UsageData.to_json` [cascades down](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L22) to ~400+ other counter method calls. +1. The response of all methods calls are [merged together](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L14) into a single JSON payload in `Gitlab::UsageData.to_json`. 1. The JSON payload is then [posted to the Versions application]( https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L20) If a firewall exception is needed, the required URL depends on several things. If the hostname is `version.gitlab.com`, the protocol is `TCP`, and the port number is `443`, diff --git a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml index b7c0abae227..a7a2a058483 100644 --- a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml +++ b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml @@ -22,7 +22,6 @@ 'incident_management_alert_todo', 'incident_management_alert_create_incident' ] - feature_flag: usage_data_incident_management_alerts_total_unique_counts - name: incident_management_incidents_total_unique_counts operator: OR events: [ @@ -38,4 +37,3 @@ 'incident_management_incident_unrelate', 'incident_management_incident_change_confidential' ] - feature_flag: usage_data_incident_management_incidents_total_unique_counts diff --git a/locale/gitlab.pot b/locale/gitlab.pot index eae16815173..d87fac90360 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -31477,7 +31477,7 @@ msgstr "" msgid "Webhooks|This URL will be triggered when a confidential issue is created/updated/merged" msgstr "" -msgid "Webhooks|This URL will be triggered when a member is added to a group" +msgid "Webhooks|This URL will be triggered when a group member is created/updated/removed" msgstr "" msgid "Webhooks|This URL will be triggered when a merge request is created/updated/merged" diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb index 6647a4e9291..d9743f6f330 100644 --- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb @@ -62,7 +62,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', it 'sees branch pipelines and detached merge request pipelines in correct order' do page.within('.ci-table') do expect(page).to have_selector('.ci-pending', count: 2) - expect(first('.js-pipeline-url-link')).to have_content("##{detached_merge_request_pipeline.id}") + expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}") end end @@ -97,16 +97,16 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', page.within('.ci-table') do expect(page).to have_selector('.ci-pending', count: 4) - expect(all('.js-pipeline-url-link')[0]) + expect(all('[data-testid="pipeline-url-link"]')[0]) .to have_content("##{detached_merge_request_pipeline_2.id}") - expect(all('.js-pipeline-url-link')[1]) + expect(all('[data-testid="pipeline-url-link"]')[1]) .to have_content("##{detached_merge_request_pipeline.id}") - expect(all('.js-pipeline-url-link')[2]) + expect(all('[data-testid="pipeline-url-link"]')[2]) .to have_content("##{push_pipeline_2.id}") - expect(all('.js-pipeline-url-link')[3]) + expect(all('[data-testid="pipeline-url-link"]')[3]) .to have_content("##{push_pipeline.id}") end end @@ -197,7 +197,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', it 'sees a branch pipeline in pipeline tab' do page.within('.ci-table') do expect(page).to have_selector('.ci-pending', count: 1) - expect(first('.js-pipeline-url-link')).to have_content("##{push_pipeline.id}") + expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{push_pipeline.id}") end end @@ -246,7 +246,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', it 'sees branch pipelines and detached merge request pipelines in correct order' do page.within('.ci-table') do expect(page).to have_selector('.ci-pending', count: 2) - expect(first('.js-pipeline-url-link')).to have_content("##{detached_merge_request_pipeline.id}") + expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}") end end @@ -287,16 +287,16 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', page.within('.ci-table') do expect(page).to have_selector('.ci-pending', count: 4) - expect(all('.js-pipeline-url-link')[0]) + expect(all('[data-testid="pipeline-url-link"]')[0]) .to have_content("##{detached_merge_request_pipeline_2.id}") - expect(all('.js-pipeline-url-link')[1]) + expect(all('[data-testid="pipeline-url-link"]')[1]) .to have_content("##{detached_merge_request_pipeline.id}") - expect(all('.js-pipeline-url-link')[2]) + expect(all('[data-testid="pipeline-url-link"]')[2]) .to have_content("##{push_pipeline_2.id}") - expect(all('.js-pipeline-url-link')[3]) + expect(all('[data-testid="pipeline-url-link"]')[3]) .to have_content("##{push_pipeline.id}") end end diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb index 0d95d6ac466..77d2cb77ae3 100644 --- a/spec/features/merge_request/user_sees_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_spec.rb @@ -184,7 +184,7 @@ RSpec.describe 'Merge request > User sees pipelines', :js do page.within(first('.commit')) do page.within('.pipeline-tags') do - expect(page.find('.js-pipeline-url-link')[:href]).to include(expected_project.full_path) + expect(page.find('[data-testid="pipeline-url-link"]')[:href]).to include(expected_project.full_path) expect(page).to have_content('detached') end page.within('.pipeline-triggerer') do diff --git a/spec/lib/gitlab/auth_spec.rb b/spec/lib/gitlab/auth_spec.rb index dfd21983682..4e4bbd1bb60 100644 --- a/spec/lib/gitlab/auth_spec.rb +++ b/spec/lib/gitlab/auth_spec.rb @@ -372,6 +372,11 @@ RSpec.describe Gitlab::Auth, :use_clean_rails_memory_store_caching do expect(gl_auth.find_for_git_client(project_bot_user.username, project_access_token.token, project: project, ip: 'ip')) .to eq(Gitlab::Auth::Result.new(project_bot_user, nil, :personal_access_token, described_class.full_authentication_abilities)) end + + it 'successfully authenticates the project bot with a nil project' do + expect(gl_auth.find_for_git_client(project_bot_user.username, project_access_token.token, project: nil, ip: 'ip')) + .to eq(Gitlab::Auth::Result.new(project_bot_user, nil, :personal_access_token, described_class.full_authentication_abilities)) + end end context 'with invalid project access token' do diff --git a/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb b/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb index 666c2e78794..b3db8b56b7c 100644 --- a/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb +++ b/spec/services/ci/destroy_expired_job_artifacts_service_spec.rb @@ -220,11 +220,23 @@ RSpec.describe Ci::DestroyExpiredJobArtifactsService, :clean_gitlab_redis_shared before do [pipeline_artifact_1, pipeline_artifact_2].each { |pipeline_artifact| pipeline_artifact.pipeline.unlocked! } + + stub_feature_flags(ci_split_pipeline_artifacts_removal: false) end it 'destroys pipeline artifacts' do expect { subject }.to change { Ci::PipelineArtifact.count }.by(-2) end + + context 'with ci_split_pipeline_artifacts_removal enabled' do + before do + stub_feature_flags(ci_split_pipeline_artifacts_removal: true) + end + + it 'does not destroy pipeline artifacts' do + expect { subject }.not_to change { Ci::PipelineArtifact.count } + end + end end context 'when artifacts are not expired' do diff --git a/spec/services/ci/pipeline_artifacts/destroy_expired_artifacts_service_spec.rb b/spec/services/ci/pipeline_artifacts/destroy_expired_artifacts_service_spec.rb new file mode 100644 index 00000000000..ac1a590face --- /dev/null +++ b/spec/services/ci/pipeline_artifacts/destroy_expired_artifacts_service_spec.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Ci::PipelineArtifacts::DestroyExpiredArtifactsService do + let(:service) { described_class.new } + + describe '.execute' do + subject { service.execute } + + context 'when timeout happens' do + before do + stub_const('Ci::PipelineArtifacts::DestroyExpiredArtifactsService::LOOP_TIMEOUT', 0.1.seconds) + allow(service).to receive(:destroy_artifacts_batch) { true } + end + + it 'returns 0 and does not continue destroying' do + is_expected.to eq(0) + end + end + + context 'when there are no artifacts' do + it 'does not raise error' do + expect { subject }.not_to raise_error + end + end + + context 'when the loop limit is reached' do + before do + stub_const('::Ci::PipelineArtifacts::DestroyExpiredArtifactsService::LOOP_LIMIT', 1) + stub_const('::Ci::PipelineArtifacts::DestroyExpiredArtifactsService::BATCH_SIZE', 1) + + create_list(:ci_pipeline_artifact, 2, expire_at: 1.week.ago) + end + + it 'destroys one artifact' do + expect { subject }.to change { Ci::PipelineArtifact.count }.by(-1) + end + + it 'reports the number of destroyed artifacts' do + is_expected.to eq(1) + end + end + + context 'when there are artifacts more than batch sizes' do + before do + stub_const('Ci::PipelineArtifacts::DestroyExpiredArtifactsService::BATCH_SIZE', 1) + + create_list(:ci_pipeline_artifact, 2, expire_at: 1.week.ago) + end + + it 'destroys all expired artifacts' do + expect { subject }.to change { Ci::PipelineArtifact.count }.by(-2) + end + + it 'reports the number of destroyed artifacts' do + is_expected.to eq(2) + end + end + + context 'when artifacts are not expired' do + before do + create(:ci_pipeline_artifact, expire_at: 2.days.from_now) + end + + it 'does not destroy pipeline artifacts' do + expect { subject }.not_to change { Ci::PipelineArtifact.count } + end + + it 'reports the number of destroyed artifacts' do + is_expected.to eq(0) + end + end + end + + describe '.destroy_artifacts_batch' do + it 'returns a falsy value without artifacts' do + expect(service.send(:destroy_artifacts_batch)).to be_falsy + end + end +end diff --git a/spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb b/spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb new file mode 100644 index 00000000000..9e9aa962b63 --- /dev/null +++ b/spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Ci::PipelineArtifacts::ExpireArtifactsWorker do + let(:worker) { described_class.new } + + describe '#perform' do + let_it_be(:pipeline_artifact) do + create(:ci_pipeline_artifact, expire_at: 1.week.ago) + end + + it 'executes a service' do + expect_next_instance_of(::Ci::PipelineArtifacts::DestroyExpiredArtifactsService) do |instance| + expect(instance).to receive(:execute) + end + + worker.perform + end + + include_examples 'an idempotent worker' do + subject do + perform_multiple(worker: worker) + end + + it 'removes the artifact only once' do + expect(worker).to receive(:log_extra_metadata_on_done).with(:destroyed_pipeline_artifacts_count, 1) + expect(worker).to receive(:log_extra_metadata_on_done).with(:destroyed_pipeline_artifacts_count, 0) + + subject + + expect { pipeline_artifact.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + end +end diff --git a/tooling/overcommit/Gemfile b/tooling/overcommit/Gemfile index 52e8dcaa497..6d2c5bce29a 100644 --- a/tooling/overcommit/Gemfile +++ b/tooling/overcommit/Gemfile @@ -4,6 +4,6 @@ source 'https://rubygems.org' gem 'overcommit' -gem 'gitlab-styles', '~> 5.3.0', require: false +gem 'gitlab-styles', '~> 5.4.0', require: false gem 'scss_lint', '~> 0.56.0', require: false gem 'haml_lint', '~> 0.34.0', require: false diff --git a/tooling/overcommit/Gemfile.lock b/tooling/overcommit/Gemfile.lock index b46229ac9f8..f1d701b3e4b 100644 --- a/tooling/overcommit/Gemfile.lock +++ b/tooling/overcommit/Gemfile.lock @@ -11,7 +11,7 @@ GEM childprocess (3.0.0) concurrent-ruby (1.1.7) ffi (1.12.2) - gitlab-styles (5.3.0) + gitlab-styles (5.4.0) rubocop (~> 0.89.1) rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.8.1) @@ -88,7 +88,7 @@ PLATFORMS ruby DEPENDENCIES - gitlab-styles (~> 5.3.0) + gitlab-styles (~> 5.4.0) haml_lint (~> 0.34.0) overcommit scss_lint (~> 0.56.0) |