diff --git a/app/assets/javascripts/snippets/constants.js b/app/assets/javascripts/snippets/constants.js index 2d2eede9137..a4653b75bab 100644 --- a/app/assets/javascripts/snippets/constants.js +++ b/app/assets/javascripts/snippets/constants.js @@ -21,6 +21,9 @@ export const SNIPPET_VISIBILITY = { label: __('Public'), icon: 'earth', description: __('The snippet can be accessed without any authentication.'), + description_project: __( + 'The snippet can be accessed without any authentication. To embed snippets, a project must be public.', + ), }, }; diff --git a/app/graphql/types/alert_management/alert_type.rb b/app/graphql/types/alert_management/alert_type.rb index 36dd930c3d9..c17406b3e56 100644 --- a/app/graphql/types/alert_management/alert_type.rb +++ b/app/graphql/types/alert_management/alert_type.rb @@ -111,13 +111,6 @@ module Types null: true, description: 'Assignees of the alert.' - field :metrics_dashboard_url, - GraphQL::Types::String, - null: true, - description: 'URL for metrics embed for the alert.', - deprecated: { reason: 'Returns no data. Underlying feature was removed in 16.0', - milestone: '16.0' } - field :runbook, GraphQL::Types::String, null: true, @@ -143,12 +136,6 @@ module Types method: :details_url, null: false, description: 'URL of the alert.' - - def metrics_dashboard_url - return if Feature.enabled?(:remove_monitor_metrics) - - object.metrics_dashboard_url - end end end end diff --git a/app/presenters/alert_management/alert_presenter.rb b/app/presenters/alert_management/alert_presenter.rb index 41831d50692..60fa351b449 100644 --- a/app/presenters/alert_management/alert_presenter.rb +++ b/app/presenters/alert_management/alert_presenter.rb @@ -10,7 +10,7 @@ module AlertManagement MARKDOWN_LINE_BREAK = " \n" HORIZONTAL_LINE = "\n\n---\n\n" - delegate :metrics_dashboard_url, :runbook, to: :parsed_payload + delegate :runbook, to: :parsed_payload def initialize(alert, **attributes) super @@ -60,8 +60,7 @@ module AlertManagement def issue_summary_markdown <<~MARKDOWN.chomp - #{metadata_list} - #{metric_embed_for_alert} + #{metadata_list}\n MARKDOWN end @@ -80,10 +79,6 @@ module AlertManagement metadata.join(MARKDOWN_LINE_BREAK) end - def metric_embed_for_alert - "\n[](#{metrics_dashboard_url})" if metrics_dashboard_url - end - def list_item(key, value) "**#{key}:** #{value}".strip end diff --git a/db/docs/merge_request_review_llm_summaries.yml b/db/docs/merge_request_review_llm_summaries.yml new file mode 100644 index 00000000000..ca8f67cc27b --- /dev/null +++ b/db/docs/merge_request_review_llm_summaries.yml @@ -0,0 +1,11 @@ +--- +table_name: merge_request_review_llm_summaries +classes: +- MergeRequest::ReviewLlmSummary +feature_categories: +- code_review_workflow +description: This is the table that stores information about the review summaries + produced from different LLM's. +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124402 +milestone: '16.2' +gitlab_schema: gitlab_main diff --git a/db/migrate/20230622044119_create_merge_request_review_llm_summary.rb b/db/migrate/20230622044119_create_merge_request_review_llm_summary.rb new file mode 100644 index 00000000000..19b9cf27d90 --- /dev/null +++ b/db/migrate/20230622044119_create_merge_request_review_llm_summary.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class CreateMergeRequestReviewLlmSummary < Gitlab::Database::Migration[2.1] + INDEX_NAME = "index_merge_request_review_llm_summaries_on_mr_diff_id" + + def change + create_table :merge_request_review_llm_summaries do |t| + t.references :user, null: true, index: true + t.references :review, null: false, index: true + t.references :merge_request_diff, null: false, index: { name: INDEX_NAME } + t.timestamps_with_timezone null: false + t.integer :provider, null: false, limit: 2 + t.text :content, null: false, limit: 2056 + end + end +end diff --git a/db/migrate/20230622051925_add_user_foreign_key_to_merge_request_review_llm_summary.rb b/db/migrate/20230622051925_add_user_foreign_key_to_merge_request_review_llm_summary.rb new file mode 100644 index 00000000000..1fa19317913 --- /dev/null +++ b/db/migrate/20230622051925_add_user_foreign_key_to_merge_request_review_llm_summary.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddUserForeignKeyToMergeRequestReviewLlmSummary < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :merge_request_review_llm_summaries, :users, column: :user_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :merge_request_review_llm_summaries, column: :user_id + end + end +end diff --git a/db/migrate/20230622051943_add_review_foreign_key_to_merge_request_review_llm_summary.rb b/db/migrate/20230622051943_add_review_foreign_key_to_merge_request_review_llm_summary.rb new file mode 100644 index 00000000000..ec4eb6b3f91 --- /dev/null +++ b/db/migrate/20230622051943_add_review_foreign_key_to_merge_request_review_llm_summary.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddReviewForeignKeyToMergeRequestReviewLlmSummary < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :merge_request_review_llm_summaries, :reviews, column: :review_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :merge_request_review_llm_summaries, column: :review_id + end + end +end diff --git a/db/migrate/20230622052015_add_merge_request_diff_foreign_key_to_merge_request_review_llm_summary.rb b/db/migrate/20230622052015_add_merge_request_diff_foreign_key_to_merge_request_review_llm_summary.rb new file mode 100644 index 00000000000..f5409aa48e9 --- /dev/null +++ b/db/migrate/20230622052015_add_merge_request_diff_foreign_key_to_merge_request_review_llm_summary.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddMergeRequestDiffForeignKeyToMergeRequestReviewLlmSummary < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :merge_request_review_llm_summaries, :merge_request_diffs, + column: :merge_request_diff_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :merge_request_review_llm_summaries, column: :merge_request_diff_id + end + end +end diff --git a/db/post_migrate/20230627174139_add_index_to_pool_repositories.rb b/db/post_migrate/20230627174139_add_index_to_pool_repositories.rb new file mode 100644 index 00000000000..bb0ea0609da --- /dev/null +++ b/db/post_migrate/20230627174139_add_index_to_pool_repositories.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddIndexToPoolRepositories < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + TABLE_NAME = :pool_repositories + OLD_INDEX_NAME = :index_pool_repositories_on_disk_path + NEW_INDEX_NAME = :unique_pool_repositories_on_disk_path_and_shard_id + + def up + add_concurrent_index(TABLE_NAME, [:disk_path, :shard_id], name: NEW_INDEX_NAME, unique: true) + + remove_concurrent_index_by_name(TABLE_NAME, OLD_INDEX_NAME) + end + + def down + add_concurrent_index(TABLE_NAME, [:disk_path], name: OLD_INDEX_NAME, unique: true) + + remove_concurrent_index_by_name(TABLE_NAME, NEW_INDEX_NAME) + end +end diff --git a/db/schema_migrations/20230622044119 b/db/schema_migrations/20230622044119 new file mode 100644 index 00000000000..31c5297f030 --- /dev/null +++ b/db/schema_migrations/20230622044119 @@ -0,0 +1 @@ +b95691099886021c131b3ef04ce21a5610a31a635e9a95eee1d31a558b7dae8b \ No newline at end of file diff --git a/db/schema_migrations/20230622051925 b/db/schema_migrations/20230622051925 new file mode 100644 index 00000000000..54d986fde1d --- /dev/null +++ b/db/schema_migrations/20230622051925 @@ -0,0 +1 @@ +c171fb3fd46cd8b015bc173e94e3e413aefb9a2afa58d556e357454717978313 \ No newline at end of file diff --git a/db/schema_migrations/20230622051943 b/db/schema_migrations/20230622051943 new file mode 100644 index 00000000000..206327d89c2 --- /dev/null +++ b/db/schema_migrations/20230622051943 @@ -0,0 +1 @@ +be537d6f8024b067c302cd96429d1bccca410c13c9ea4392c0642af4ddd4eb19 \ No newline at end of file diff --git a/db/schema_migrations/20230622052015 b/db/schema_migrations/20230622052015 new file mode 100644 index 00000000000..d25ccb2099e --- /dev/null +++ b/db/schema_migrations/20230622052015 @@ -0,0 +1 @@ +6d6e5a996e7a7abcf5f1b6e019a8e86a3d4e9aab0052c6f7620ff02091527229 \ No newline at end of file diff --git a/db/schema_migrations/20230627174139 b/db/schema_migrations/20230627174139 new file mode 100644 index 00000000000..af37ba0baaa --- /dev/null +++ b/db/schema_migrations/20230627174139 @@ -0,0 +1 @@ +22ab53f5c190f37f37a3e3e57742b1dde3c0c724492b63f938bfdcb7c2a09fa1 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 11cbcfc9344..6bb87d65c40 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -18220,6 +18220,27 @@ CREATE SEQUENCE merge_request_predictions_merge_request_id_seq ALTER SEQUENCE merge_request_predictions_merge_request_id_seq OWNED BY merge_request_predictions.merge_request_id; +CREATE TABLE merge_request_review_llm_summaries ( + id bigint NOT NULL, + user_id bigint, + review_id bigint NOT NULL, + merge_request_diff_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + provider smallint NOT NULL, + content text NOT NULL, + CONSTRAINT check_72802358e9 CHECK ((char_length(content) <= 2056)) +); + +CREATE SEQUENCE merge_request_review_llm_summaries_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE merge_request_review_llm_summaries_id_seq OWNED BY merge_request_review_llm_summaries.id; + CREATE TABLE merge_request_reviewers ( id bigint NOT NULL, user_id bigint NOT NULL, @@ -25548,6 +25569,8 @@ ALTER TABLE ONLY merge_request_metrics ALTER COLUMN id SET DEFAULT nextval('merg ALTER TABLE ONLY merge_request_predictions ALTER COLUMN merge_request_id SET DEFAULT nextval('merge_request_predictions_merge_request_id_seq'::regclass); +ALTER TABLE ONLY merge_request_review_llm_summaries ALTER COLUMN id SET DEFAULT nextval('merge_request_review_llm_summaries_id_seq'::regclass); + ALTER TABLE ONLY merge_request_reviewers ALTER COLUMN id SET DEFAULT nextval('merge_request_reviewers_id_seq'::regclass); ALTER TABLE ONLY merge_request_user_mentions ALTER COLUMN id SET DEFAULT nextval('merge_request_user_mentions_id_seq'::regclass); @@ -27744,6 +27767,9 @@ ALTER TABLE ONLY merge_request_metrics ALTER TABLE ONLY merge_request_predictions ADD CONSTRAINT merge_request_predictions_pkey PRIMARY KEY (merge_request_id); +ALTER TABLE ONLY merge_request_review_llm_summaries + ADD CONSTRAINT merge_request_review_llm_summaries_pkey PRIMARY KEY (id); + ALTER TABLE ONLY merge_request_reviewers ADD CONSTRAINT merge_request_reviewers_pkey PRIMARY KEY (id); @@ -31789,6 +31815,12 @@ CREATE INDEX index_merge_request_metrics_on_pipeline_id ON merge_request_metrics CREATE INDEX index_merge_request_metrics_on_target_project_id ON merge_request_metrics USING btree (target_project_id); +CREATE INDEX index_merge_request_review_llm_summaries_on_mr_diff_id ON merge_request_review_llm_summaries USING btree (merge_request_diff_id); + +CREATE INDEX index_merge_request_review_llm_summaries_on_review_id ON merge_request_review_llm_summaries USING btree (review_id); + +CREATE INDEX index_merge_request_review_llm_summaries_on_user_id ON merge_request_review_llm_summaries USING btree (user_id); + CREATE UNIQUE INDEX index_merge_request_reviewers_on_merge_request_id_and_user_id ON merge_request_reviewers USING btree (merge_request_id, user_id); CREATE INDEX index_merge_request_reviewers_on_user_id ON merge_request_reviewers USING btree (user_id); @@ -32339,8 +32371,6 @@ CREATE INDEX index_pm_package_version_licenses_on_pm_package_version_id ON pm_pa CREATE INDEX index_pm_package_versions_on_pm_package_id ON pm_package_versions USING btree (pm_package_id); -CREATE UNIQUE INDEX index_pool_repositories_on_disk_path ON pool_repositories USING btree (disk_path); - CREATE INDEX index_pool_repositories_on_shard_id ON pool_repositories USING btree (shard_id); CREATE UNIQUE INDEX index_pool_repositories_on_source_project_id_and_shard_id ON pool_repositories USING btree (source_project_id, shard_id); @@ -33695,6 +33725,8 @@ CREATE UNIQUE INDEX unique_organizations_on_path ON organizations USING btree (p CREATE UNIQUE INDEX unique_packages_project_id_and_name_and_version_when_debian ON packages_packages USING btree (project_id, name, version) WHERE ((package_type = 9) AND (status <> 4)); +CREATE UNIQUE INDEX unique_pool_repositories_on_disk_path_and_shard_id ON pool_repositories USING btree (disk_path, shard_id); + CREATE UNIQUE INDEX unique_postgres_async_fk_validations_name_and_table_name ON postgres_async_foreign_key_validations USING btree (name, table_name); CREATE UNIQUE INDEX unique_projects_on_name_namespace_id ON projects USING btree (name, namespace_id); @@ -35644,6 +35676,9 @@ ALTER TABLE ONLY user_achievements ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_6149611a04 FOREIGN KEY (assignee_id) REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE ONLY merge_request_review_llm_summaries + ADD CONSTRAINT fk_6154a9cb89 FOREIGN KEY (review_id) REFERENCES reviews(id) ON DELETE CASCADE; + ALTER TABLE ONLY work_item_widget_definitions ADD CONSTRAINT fk_61bfa96db5 FOREIGN KEY (work_item_type_id) REFERENCES work_item_types(id) ON DELETE CASCADE; @@ -35827,6 +35862,9 @@ ALTER TABLE ONLY releases ALTER TABLE ONLY protected_tags ADD CONSTRAINT fk_8e4af87648 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY merge_request_review_llm_summaries + ADD CONSTRAINT fk_8ec009c6ab FOREIGN KEY (merge_request_diff_id) REFERENCES merge_request_diffs(id) ON DELETE CASCADE; + ALTER TABLE ONLY todos ADD CONSTRAINT fk_91d1f47b13 FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE; @@ -36118,6 +36156,9 @@ ALTER TABLE ONLY custom_emoji ALTER TABLE ONLY bulk_import_entities ADD CONSTRAINT fk_d06d023c30 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY merge_request_review_llm_summaries + ADD CONSTRAINT fk_d07eeb6392 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; + ALTER TABLE ONLY project_mirror_data ADD CONSTRAINT fk_d1aad367d7 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; diff --git a/doc/administration/audit_event_streaming/index.md b/doc/administration/audit_event_streaming/index.md index 5631b8df8a8..0fb155da68d 100644 --- a/doc/administration/audit_event_streaming/index.md +++ b/doc/administration/audit_event_streaming/index.md @@ -289,7 +289,7 @@ To update a streaming destination's event filters: 1. Select **Secure > Audit events**. 1. On the main area, select the **Streams** tab. 1. Select the stream URL to expand. -1. Select **Filter by stream event**. +1. Locate the **Filter by audit event type** dropdown. 1. Select the dropdown list and select or clear the required event types. 1. Select **Save** to update the event filters. diff --git a/doc/administration/geo/replication/single_sign_on.md b/doc/administration/geo/replication/single_sign_on.md index 55e77d5657c..15e24cdcefb 100644 --- a/doc/administration/geo/replication/single_sign_on.md +++ b/doc/administration/geo/replication/single_sign_on.md @@ -31,6 +31,10 @@ If you have configured SAML on the primary site correctly, then it should work o ### SAML with separate URL with proxying enabled +NOTE: +When proxying is enabled, SAML can only be used to sign in the secondary site if your SAML Identity Provider (IdP) allows an +application to have multiple callback URLs configured. Check with your IdP provider support team to confirm if this is the case. + If a secondary site uses a different `external_url` to the primary site, then configure your SAML Identity Provider (IdP) to allow the secondary site's SAML callback URL. For example, to configure Okta: 1. [Sign in to Okta](https://www.okta.com/login/). diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md index 660fc904fc2..eb8fb1ee26c 100644 --- a/doc/administration/geo/replication/troubleshooting.md +++ b/doc/administration/geo/replication/troubleshooting.md @@ -622,7 +622,7 @@ This happens on wrongly-formatted addresses in `postgresql['md5_auth_cidr_addres ``` To fix this, update the IP addresses in `/etc/gitlab/gitlab.rb` under `postgresql['md5_auth_cidr_addresses']` -to respect the CIDR format (that is, `1.2.3.4/32`). +to respect the CIDR format (for example, `10.0.0.1/32`). ### Message: `LOG: invalid IP mask "md5": Name or service not known` @@ -634,7 +634,7 @@ This happens when you have added IP addresses without a subnet mask in `postgres ``` To fix this, add the subnet mask in `/etc/gitlab/gitlab.rb` under `postgresql['md5_auth_cidr_addresses']` -to respect the CIDR format (that is, `1.2.3.4/32`). +to respect the CIDR format (for example, `10.0.0.1/32`). ### Message: `Found data in the gitlabhq_production database!` when running `gitlab-ctl replicate-geo-database` @@ -1295,7 +1295,7 @@ When [Geo proxying for secondary sites](../secondary_proxy/index.md) is enabled, Check the NGINX logs for errors similar to this example: ```plaintext -2022/01/26 00:02:13 [error] 26641#0: *829148 upstream sent too big header while reading response header from upstream, client: 1.2.3.4, server: geo.staging.gitlab.com, request: "POST /users/sign_in HTTP/2.0", upstream: "http://unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket:/users/sign_in", host: "geo.staging.gitlab.com", referrer: "https://geo.staging.gitlab.com/users/sign_in" +2022/01/26 00:02:13 [error] 26641#0: *829148 upstream sent too big header while reading response header from upstream, client: 10.0.2.2, server: geo.staging.gitlab.com, request: "POST /users/sign_in HTTP/2.0", upstream: "http://unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket:/users/sign_in", host: "geo.staging.gitlab.com", referrer: "https://geo.staging.gitlab.com/users/sign_in" ``` To resolve this issue: @@ -1345,15 +1345,8 @@ To fix this issue, set the primary site's internal URL to a URL that is: - Unique to the primary site. - Accessible from all secondary sites. -1. Enter the [Rails console](../../operations/rails_console.md) on the primary site. - -1. Run the following, replacing `https://unique.url.for.primary.site` with your specific internal URL. - For example, depending on your network configuration, you could use an IP address, like - `http://1.2.3.4`. - - ```ruby - GeoNode.where(primary: true).first.update!(internal_url: "https://unique.url.for.primary.site") - ``` +1. Visit the primary site. +1. [Set up the internal URLs](../../../user/admin_area/geo_sites.md#set-up-the-internal-urls). ### Secondary site returns `Received HTTP code 403 from proxy after CONNECT` diff --git a/doc/administration/geo/secondary_proxy/index.md b/doc/administration/geo/secondary_proxy/index.md index 3081d1c2485..2ab96a3d33d 100644 --- a/doc/administration/geo/secondary_proxy/index.md +++ b/doc/administration/geo/secondary_proxy/index.md @@ -131,6 +131,10 @@ and cannot be configured per Geo site. Therefore, all runners clone from the pri which Geo site they register on. For information about GitLab CI using a specific Geo secondary to clone from, see issue [3294](https://gitlab.com/gitlab-org/gitlab/-/issues/3294#note_1009488466). +- When secondary proxying is used together with separate URLs, + [signing in the secondary site using SAML](../replication/single_sign_on.md#saml-with-separate-url-with-proxying-enabled) + is only supported if the SAML Identity Provider (IdP) allows an application to be configured with multiple callback URLs. + ## Behavior of secondary sites when the primary Geo site is down Considering that web traffic is proxied to the primary, the behavior of the secondary sites differs when the primary diff --git a/doc/administration/gitaly/praefect.md b/doc/administration/gitaly/praefect.md index f80a5192c55..a93f4aea5dc 100644 --- a/doc/administration/gitaly/praefect.md +++ b/doc/administration/gitaly/praefect.md @@ -1107,8 +1107,8 @@ For more information on Gitaly server configuration, see our ```ruby # Configure the gitlab-shell API callback URL. Without this, `git push` will # fail. This can be your front door GitLab URL or an internal load balancer. - # Examples: 'https://gitlab.example.com', 'http://1.2.3.4' - gitlab_rails['internal_api_url'] = 'http://GITLAB_HOST' + # Examples: 'https://gitlab.example.com', 'http://10.0.2.2' + gitlab_rails['internal_api_url'] = 'https://gitlab.example.com' ``` 1. Configure the storage location for Git data by setting `gitaly['configuration'][:storage]` in diff --git a/doc/administration/integration/plantuml.md b/doc/administration/integration/plantuml.md index a675b586776..58833c498eb 100644 --- a/doc/administration/integration/plantuml.md +++ b/doc/administration/integration/plantuml.md @@ -295,6 +295,7 @@ the configuration below accordingly. PlantUML has features that allow fetching network resources. If you self-host the PlantUML server, put network controls in place to isolate it. +For example, make use of PlantUML's [security profiles](https://plantuml.com/security). ```plaintext @startuml diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index cb4e609b9fa..79ceea0d60e 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -12109,7 +12109,6 @@ Describes an alert from the project's Alert Management. | `iid` | [`ID!`](#id) | Internal ID of the alert. | | `issue` | [`Issue`](#issue) | Issue attached to the alert. | | `issueIid` **{warning-solid}** | [`ID`](#id) | **Deprecated** in 13.10. Use issue field. | -| `metricsDashboardUrl` **{warning-solid}** | [`String`](#string) | **Deprecated** in 16.0. Returns no data. Underlying feature was removed in 16.0. | | `monitoringTool` | [`String`](#string) | Monitoring tool the alert came from. | | `notes` | [`NoteConnection!`](#noteconnection) | All notes on this noteable. (see [Connections](#connections)) | | `prometheusAlert` | [`PrometheusAlert`](#prometheusalert) | Alert condition for Prometheus. | diff --git a/doc/ci/ssh_keys/index.md b/doc/ci/ssh_keys/index.md index 09a85168f9b..15b731f88c8 100644 --- a/doc/ci/ssh_keys/index.md +++ b/doc/ci/ssh_keys/index.md @@ -156,7 +156,7 @@ trusted network (ideally, from the private server itself): ssh-keyscan example.com ## Or use an IP -ssh-keyscan 1.2.3.4 +ssh-keyscan 10.0.2.2 ``` Create a new [file type CI/CD variable](../variables/index.md#use-file-type-cicd-variables) diff --git a/doc/integration/kerberos.md b/doc/integration/kerberos.md index 62441f6de8f..f3ea7829ace 100644 --- a/doc/integration/kerberos.md +++ b/doc/integration/kerberos.md @@ -442,7 +442,7 @@ above error message. To fix this, ensure that the forward and reverse DNS for your GitLab server match. So for instance, if you access GitLab as `gitlab.example.com`, resolving -to IP address `1.2.3.4`, then `4.3.2.1.in-addr.arpa` must be a `PTR` record for +to IP address `10.0.2.2`, then `2.2.0.10.in-addr.arpa` must be a `PTR` record for `gitlab.example.com`. #### Missing Kerberos libraries on browser or client machine diff --git a/doc/topics/autodevops/prepare_deployment.md b/doc/topics/autodevops/prepare_deployment.md index b71beee708e..e69c0ca0909 100644 --- a/doc/topics/autodevops/prepare_deployment.md +++ b/doc/topics/autodevops/prepare_deployment.md @@ -54,17 +54,17 @@ Auto DevOps requires a wildcard DNS `A` record matching the base domains. For a base domain of `example.com`, you'd need a DNS entry like: ```plaintext -*.example.com 3600 A 1.2.3.4 +*.example.com 3600 A 10.0.2.2 ``` -In this case, the deployed applications are served from `example.com`, and `1.2.3.4` +In this case, the deployed applications are served from `example.com`, and `10.0.2.2` is the IP address of your load balancer, generally NGINX ([see requirements](requirements.md)). Setting up the DNS record is beyond the scope of this document; check with your DNS provider for information. Alternatively, you can use free public services like [nip.io](https://nip.io) which provide automatic wildcard DNS without any configuration. For [nip.io](https://nip.io), -set the Auto DevOps base domain to `1.2.3.4.nip.io`. +set the Auto DevOps base domain to `10.0.2.2.nip.io`. After completing setup, all requests hit the load balancer, which routes requests to the Kubernetes pods running your application. diff --git a/doc/topics/autodevops/requirements.md b/doc/topics/autodevops/requirements.md index dd73a2056e5..bfb88cf0dc4 100644 --- a/doc/topics/autodevops/requirements.md +++ b/doc/topics/autodevops/requirements.md @@ -71,17 +71,17 @@ Auto DevOps requires a wildcard DNS `A` record that matches the base domains. Fo a base domain of `example.com`, you'd need a DNS entry like: ```plaintext -*.example.com 3600 A 1.2.3.4 +*.example.com 3600 A 10.0.2.2 ``` -In this case, the deployed applications are served from `example.com`, and `1.2.3.4` +In this case, the deployed applications are served from `example.com`, and `10.0.2.2` is the IP address of your load balancer, generally NGINX ([see requirements](requirements.md)). Setting up the DNS record is beyond the scope of this document; check with your DNS provider for information. Alternatively, you can use free public services like [nip.io](https://nip.io) which provide automatic wildcard DNS without any configuration. For [nip.io](https://nip.io), -set the Auto DevOps base domain to `1.2.3.4.nip.io`. +set the Auto DevOps base domain to `10.0.2.2.nip.io`. After completing setup, all requests hit the load balancer, which routes requests to the Kubernetes pods running your application. diff --git a/doc/user/project/remote_development/connect_machine.md b/doc/user/project/remote_development/connect_machine.md index f981918c0ea..53c5d342f74 100644 --- a/doc/user/project/remote_development/connect_machine.md +++ b/doc/user/project/remote_development/connect_machine.md @@ -26,7 +26,7 @@ To connect a remote machine to the Web IDE, you must: To generate Let's Encrypt certificates: -1. Create an `A` record to point a domain to your remote machine (for example, from `example.remote.gitlab.dev` to `1.2.3.4`). +1. Create an `A` record to point a domain to your remote machine (for example, from `example.remote.gitlab.dev` to `10.0.2.2`). 1. Install [Certbot](https://certbot.eff.org/) to enable HTTPS: ```shell diff --git a/lib/gitlab/alert_management/payload/base.rb b/lib/gitlab/alert_management/payload/base.rb index 5b136431ce7..3840a560c57 100644 --- a/lib/gitlab/alert_management/payload/base.rb +++ b/lib/gitlab/alert_management/payload/base.rb @@ -33,7 +33,6 @@ module Gitlab :has_required_attributes?, :hosts, :metric_id, - :metrics_dashboard_url, :monitoring_tool, :resolved?, :runbook, diff --git a/lib/gitlab/alert_management/payload/managed_prometheus.rb b/lib/gitlab/alert_management/payload/managed_prometheus.rb index 2236e60a0c6..4ed21108d3e 100644 --- a/lib/gitlab/alert_management/payload/managed_prometheus.rb +++ b/lib/gitlab/alert_management/payload/managed_prometheus.rb @@ -35,18 +35,6 @@ module Gitlab gitlab_alert&.environment || super end - def metrics_dashboard_url - return unless gitlab_alert - - metrics_dashboard_project_prometheus_alert_url( - project, - gitlab_alert.prometheus_metric_id, - environment_id: environment.id, - embedded: true, - **alert_embed_window_params - ) - end - private def plain_gitlab_fingerprint diff --git a/lib/gitlab/alert_management/payload/prometheus.rb b/lib/gitlab/alert_management/payload/prometheus.rb index cf6fe449398..15fa91646c8 100644 --- a/lib/gitlab/alert_management/payload/prometheus.rb +++ b/lib/gitlab/alert_management/payload/prometheus.rb @@ -96,29 +96,6 @@ module Gitlab def plain_gitlab_fingerprint [starts_at_raw, title, full_query].join('/') end - - # Formatted for parsing by JS - def alert_embed_window_params - { - start: (starts_at - METRIC_TIME_WINDOW).utc.strftime('%FT%TZ'), - end: (starts_at + METRIC_TIME_WINDOW).utc.strftime('%FT%TZ') - } - end - - def dashboard_json - { - panel_groups: [{ - panels: [{ - type: 'area-chart', - title: title, - y_label: gitlab_y_label, - metrics: [{ - query_range: full_query - }] - }] - }] - }.to_json - end end end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 1ed0a415ad2..78b7c5238e9 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -6585,7 +6585,7 @@ msgstr "" msgid "AuditStreams|Event filtering (optional)" msgstr "" -msgid "AuditStreams|Filter by stream event" +msgid "AuditStreams|Filter by audit event type" msgstr "" msgid "AuditStreams|Header" @@ -46299,6 +46299,9 @@ msgstr "" msgid "The snippet can be accessed without any authentication." msgstr "" +msgid "The snippet can be accessed without any authentication. To embed snippets, a project must be public." +msgstr "" + msgid "The snippet is visible only to me." msgstr "" diff --git a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js index 70eb719f706..e2a9967f6ad 100644 --- a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js +++ b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js @@ -134,6 +134,17 @@ describe('Snippet Visibility Edit component', () => { description: SNIPPET_VISIBILITY.private.description_project, }); }); + + it('when project snippet, renders special public description', () => { + createComponent({ propsData: { isProjectSnippet: true }, deep: true }); + + expect(findRadiosData()[2]).toEqual({ + value: VISIBILITY_LEVEL_PUBLIC_STRING, + icon: SNIPPET_VISIBILITY.public.icon, + text: SNIPPET_VISIBILITY.public.label, + description: SNIPPET_VISIBILITY.public.description_project, + }); + }); }); }); diff --git a/spec/graphql/types/alert_management/alert_type_spec.rb b/spec/graphql/types/alert_management/alert_type_spec.rb index 4428fc0683a..92e8104fc4d 100644 --- a/spec/graphql/types/alert_management/alert_type_spec.rb +++ b/spec/graphql/types/alert_management/alert_type_spec.rb @@ -31,7 +31,6 @@ RSpec.describe GitlabSchema.types['AlertManagementAlert'], feature_category: :in assignees notes discussions - metrics_dashboard_url runbook todos details_url diff --git a/spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb b/spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb index fa8afd47c53..d7184c89933 100644 --- a/spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb +++ b/spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb @@ -150,20 +150,4 @@ RSpec.describe Gitlab::AlertManagement::Payload::ManagedPrometheus do it { is_expected.to eq(environment) } end end - - describe '#metrics_dashboard_url' do - subject { parsed_payload.metrics_dashboard_url } - - context 'without alert' do - it { is_expected.to be_nil } - end - - context 'with gitlab alert' do - include_context 'gitlab-managed prometheus alert attributes' do - let(:raw_payload) { payload } - end - - it { is_expected.to eq(dashboard_url_for_alert) } - end - end end diff --git a/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb b/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb index cf525801aa0..92836915f7b 100644 --- a/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb +++ b/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb @@ -178,32 +178,6 @@ RSpec.describe Gitlab::AlertManagement::Payload::Prometheus do end end - describe '#metrics_dashboard_url' do - include_context 'self-managed prometheus alert attributes' do - let(:raw_payload) { payload } - end - - subject { parsed_payload.metrics_dashboard_url } - - context 'without environment' do - let(:raw_payload) { payload.except('labels') } - - it { is_expected.to be_nil } - end - - context 'without full query' do - let(:raw_payload) { payload.except('generatorURL') } - - it { is_expected.to be_nil } - end - - context 'without title' do - let(:raw_payload) { payload.except('annotations') } - - it { is_expected.to be_nil } - end - end - describe '#has_required_attributes?' do let(:starts_at) { Time.current.change(usec: 0).utc } let(:raw_payload) { { 'annotations' => { 'title' => 'title' }, 'startsAt' => starts_at.rfc3339 } } diff --git a/spec/presenters/alert_management/alert_presenter_spec.rb b/spec/presenters/alert_management/alert_presenter_spec.rb index fe228f174fe..eedb2e07fb6 100644 --- a/spec/presenters/alert_management/alert_presenter_spec.rb +++ b/spec/presenters/alert_management/alert_presenter_spec.rb @@ -91,24 +91,6 @@ RSpec.describe AlertManagement::AlertPresenter do ) end end - - context 'with metrics_dashboard_url' do - before do - allow(alert.parsed_payload).to receive(:metrics_dashboard_url).and_return('https://gitlab.com/metrics') - end - - it do - is_expected.to eq( - <<~MARKDOWN.chomp - **Start time:** #{presenter.start_time}#{markdown_line_break} - **Severity:** #{presenter.severity}#{markdown_line_break} - **GitLab alert:** #{alert_url} - - [](https://gitlab.com/metrics) - MARKDOWN - ) - end - end end describe '#start_time' do diff --git a/spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb b/spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb deleted file mode 100644 index 2c49c9bc47b..00000000000 --- a/spec/requests/api/graphql/project/alert_management/alert/metrics_dashboard_url_spec.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'getting Alert Management Alert Assignees', feature_category: :incident_management do - include GraphqlHelpers - - let_it_be(:project) { create(:project) } - let_it_be(:current_user) { create(:user) } - - let(:fields) do - <<~QUERY - nodes { - iid - metricsDashboardUrl - } - QUERY - end - - let(:graphql_query) do - graphql_query_for( - 'project', - { 'fullPath' => project.full_path }, - query_graphql_field('alertManagementAlerts', {}, fields) - ) - end - - let(:alerts) { graphql_data.dig('project', 'alertManagementAlerts', 'nodes') } - let(:first_alert) { alerts.first } - - before do - stub_feature_flags(remove_monitor_metrics: false) - project.add_developer(current_user) - end - - context 'with self-managed prometheus payload' do - include_context 'self-managed prometheus alert attributes' - - before do - create(:alert_management_alert, :prometheus, project: project, payload: payload) - end - - context 'when metrics dashboard feature is unavailable' do - before do - stub_feature_flags(remove_monitor_metrics: true) - end - - it 'returns nil' do - post_graphql(graphql_query, current_user: current_user) - expect(first_alert['metricsDashboardUrl']).to be_nil - end - end - end - - context 'with gitlab-managed prometheus payload' do - include_context 'gitlab-managed prometheus alert attributes' - - before do - create(:alert_management_alert, :prometheus, project: project, payload: payload, prometheus_alert: prometheus_alert) - end - - it 'includes the correct metrics dashboard url' do - post_graphql(graphql_query, current_user: current_user) - - expect(first_alert).to include('metricsDashboardUrl' => dashboard_url_for_alert) - end - - context 'when metrics dashboard feature is unavailable' do - before do - stub_feature_flags(remove_monitor_metrics: true) - end - - it 'returns nil' do - post_graphql(graphql_query, current_user: current_user) - expect(first_alert['metricsDashboardUrl']).to be_nil - end - end - end -end diff --git a/spec/requests/api/graphql/project/alert_management/alerts_spec.rb b/spec/requests/api/graphql/project/alert_management/alerts_spec.rb index 55d223daf27..7f586edd510 100644 --- a/spec/requests/api/graphql/project/alert_management/alerts_spec.rb +++ b/spec/requests/api/graphql/project/alert_management/alerts_spec.rb @@ -74,7 +74,6 @@ RSpec.describe 'getting Alert Management Alerts', feature_category: :incident_ma 'details' => { 'custom.alert' => 'payload', 'runbook' => 'runbook' }, 'createdAt' => triggered_alert.created_at.strftime('%Y-%m-%dT%H:%M:%SZ'), 'updatedAt' => triggered_alert.updated_at.strftime('%Y-%m-%dT%H:%M:%SZ'), - 'metricsDashboardUrl' => nil, 'detailsUrl' => triggered_alert.details_url, 'prometheusAlert' => nil, 'runbook' => 'runbook'