mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-01 16:04:19 +00:00
Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
@ -874,14 +874,6 @@ Image Commenting cursor
|
|||||||
$image-comment-cursor-left-offset: 12;
|
$image-comment-cursor-left-offset: 12;
|
||||||
$image-comment-cursor-top-offset: 12;
|
$image-comment-cursor-top-offset: 12;
|
||||||
|
|
||||||
/*
|
|
||||||
Add GitLab Slack Application
|
|
||||||
*/
|
|
||||||
$add-to-slack-popup-max-width: 400px;
|
|
||||||
$add-to-slack-gif-max-width: 850px;
|
|
||||||
$add-to-slack-well-max-width: 750px;
|
|
||||||
$add-to-slack-logo-size: 100px;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Security & Compliance Carousel
|
Security & Compliance Carousel
|
||||||
*/
|
*/
|
||||||
|
@ -363,25 +363,12 @@ table.u2f-registrations {
|
|||||||
color: $gl-text-color-secondary;
|
color: $gl-text-color-secondary;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gitlab-slack-gif {
|
.gitlab-slack-body {
|
||||||
width: 100%;
|
max-width: 420px;
|
||||||
max-width: $add-to-slack-gif-max-width;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.gitlab-slack-well {
|
.gitlab-slack-slack-logo {
|
||||||
background-color: $white;
|
transform: scale(200%); // Slack logo SVG is scaled down 50% and has empty space around it
|
||||||
box-shadow: none;
|
|
||||||
max-width: $add-to-slack-well-max-width;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gitlab-slack-logo {
|
|
||||||
width: $add-to-slack-logo-size;
|
|
||||||
height: $add-to-slack-logo-size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gitlab-slack-popup {
|
|
||||||
width: 100%;
|
|
||||||
max-width: $add-to-slack-popup-max-width;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.skype-icon {
|
.skype-icon {
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
# If you change this file in a merge request, please also create #
|
# If you change this file in a merge request, please also create #
|
||||||
# a MR on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests. #
|
# a MR on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests. #
|
||||||
# For more details see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md #
|
# For more details see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md #
|
||||||
|
# Be sure to create a MR against the GDK configuration #
|
||||||
|
# file (https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/support/templates/gitlab/config/gitlab.yml.erb) too. #
|
||||||
########################################################################
|
########################################################################
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -1435,7 +1437,7 @@ test:
|
|||||||
provider: AWS # Only AWS supported at the moment
|
provider: AWS # Only AWS supported at the moment
|
||||||
aws_access_key_id: AWS_ACCESS_KEY_ID
|
aws_access_key_id: AWS_ACCESS_KEY_ID
|
||||||
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
|
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
|
||||||
region: us-east-1
|
region: us-east-1
|
||||||
|
|
||||||
gitlab:
|
gitlab:
|
||||||
host: localhost
|
host: localhost
|
||||||
|
@ -287,12 +287,12 @@ If the artifacts were deleted successfully, a response with status `204 No Conte
|
|||||||
|
|
||||||
## Delete project artifacts
|
## Delete project artifacts
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/223793) in GitLab 14.7 [with a flag](../administration/feature_flags.md) named `bulk_expire_project_artifacts`. Disabled by default.
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/223793) in GitLab 14.7 [with a flag](../administration/feature_flags.md) named `bulk_expire_project_artifacts`. Disabled by default on GitLab self-managed. Enabled on GitLab.com.
|
||||||
|
|
||||||
FLAG:
|
FLAG:
|
||||||
On self-managed GitLab, by default this feature is not available. To make it
|
On self-managed GitLab, by default this feature is not available. To make it
|
||||||
available, ask an administrator to [enable the `bulk_expire_project_artifacts` flag](../administration/feature_flags.md).
|
available, ask an administrator to [enable the `bulk_expire_project_artifacts` flag](../administration/feature_flags.md).
|
||||||
On GitLab.com, this feature is not available.
|
On GitLab.com, this feature is available.
|
||||||
|
|
||||||
[Expire artifacts of a project that can be deleted](https://gitlab.com/gitlab-org/gitlab/-/issues/223793) but that don't have an expiry time.
|
[Expire artifacts of a project that can be deleted](https://gitlab.com/gitlab-org/gitlab/-/issues/223793) but that don't have an expiry time.
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ For example:
|
|||||||
```shell
|
```shell
|
||||||
curl --request POST \
|
curl --request POST \
|
||||||
--form token=<token> \
|
--form token=<token> \
|
||||||
--formref=<ref_name> \
|
--form ref=<ref_name> \
|
||||||
"https://gitlab.example.com/api/v4/projects/<project_id>/trigger/pipeline"
|
"https://gitlab.example.com/api/v4/projects/<project_id>/trigger/pipeline"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1982,9 +1982,6 @@ msgstr ""
|
|||||||
msgid "Add CONTRIBUTING"
|
msgid "Add CONTRIBUTING"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Add GitLab to Slack"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Add Jaeger URL"
|
msgid "Add Jaeger URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2198,9 +2195,6 @@ msgstr ""
|
|||||||
msgid "Add text to the sign-in page. Markdown enabled."
|
msgid "Add text to the sign-in page. Markdown enabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Add to Slack"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Add to board"
|
msgid "Add to board"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -16166,9 +16160,6 @@ msgstr ""
|
|||||||
msgid "GitLab export"
|
msgid "GitLab export"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "GitLab for Slack"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "GitLab group: %{source_link}"
|
msgid "GitLab group: %{source_link}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -16193,6 +16184,9 @@ msgstr ""
|
|||||||
msgid "GitLab is undergoing maintenance and is operating in read-only mode."
|
msgid "GitLab is undergoing maintenance and is operating in read-only mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GitLab logo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "GitLab member or Email address"
|
msgid "GitLab member or Email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17724,9 +17718,6 @@ msgstr ""
|
|||||||
msgid "How do I use file templates?"
|
msgid "How do I use file templates?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "How it works"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "How many days need to pass between marking entity for deletion and actual removing it."
|
msgid "How many days need to pass between marking entity for deletion and actual removing it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -23140,9 +23131,6 @@ msgstr ""
|
|||||||
msgid "More Information"
|
msgid "More Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "More Slack commands"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "More actions"
|
msgid "More actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -32065,9 +32053,6 @@ msgstr ""
|
|||||||
msgid "Select Git revision"
|
msgid "Select Git revision"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Select GitLab project to link with your Slack team"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Select Page"
|
msgid "Select Page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -33118,6 +33103,15 @@ msgstr ""
|
|||||||
msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window."
|
msgid "Slack integration allows you to interact with GitLab via slash commands in a chat window."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Slack logo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SlackIntegration|GitLab for Slack"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SlackIntegration|Select a GitLab project to link with your Slack workspace."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "SlackIntegration|Sends notifications about project events to Slack channels."
|
msgid "SlackIntegration|Sends notifications about project events to Slack channels."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -37464,9 +37458,6 @@ msgstr ""
|
|||||||
msgid "Track time with quick actions"
|
msgid "Track time with quick actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Track your GitLab projects with GitLab for Slack."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Training mode"
|
msgid "Training mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -38642,6 +38633,9 @@ msgstr ""
|
|||||||
msgid "User cap"
|
msgid "User cap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "User cap cannot be enabled. The group or one of its subgroups or projects is shared externally."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "User created at"
|
msgid "User created at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -42391,9 +42385,6 @@ msgstr ""
|
|||||||
msgid "locked by %{path_lock_user_name} %{created_at}"
|
msgid "locked by %{path_lock_user_name} %{created_at}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "log in"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "manual"
|
msgid "manual"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ module QA
|
|||||||
@virtual_storage = 'default'
|
@virtual_storage = 'default'
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :primary_node, :secondary_node, :tertiary_node
|
attr_reader :primary_node, :secondary_node, :tertiary_node, :postgres
|
||||||
|
|
||||||
# Executes the praefect `dataloss` command.
|
# Executes the praefect `dataloss` command.
|
||||||
#
|
#
|
||||||
@ -87,6 +87,13 @@ module QA
|
|||||||
|
|
||||||
def stop_node(name)
|
def stop_node(name)
|
||||||
shell "docker stop #{name}"
|
shell "docker stop #{name}"
|
||||||
|
wait_until_shell_command_matches(
|
||||||
|
"docker inspect -f {{.State.Running}} #{name}",
|
||||||
|
/false/,
|
||||||
|
sleep_interval: 3,
|
||||||
|
max_duration: 180,
|
||||||
|
retry_on_exception: true
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def clear_replication_queue
|
def clear_replication_queue
|
||||||
@ -167,6 +174,7 @@ module QA
|
|||||||
end
|
end
|
||||||
|
|
||||||
def start_all_nodes
|
def start_all_nodes
|
||||||
|
start_node(@postgres)
|
||||||
start_node(@primary_node)
|
start_node(@primary_node)
|
||||||
start_node(@secondary_node)
|
start_node(@secondary_node)
|
||||||
start_node(@tertiary_node)
|
start_node(@tertiary_node)
|
||||||
@ -195,6 +203,14 @@ module QA
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def praefect_sql_ping_healthy?
|
||||||
|
cmd = "docker exec #{@praefect} bash -c '/opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml sql-ping'"
|
||||||
|
wait_until_shell_command(cmd) do |line|
|
||||||
|
QA::Runtime::Logger.debug(line.chomp)
|
||||||
|
break line.include?('praefect sql-ping: OK')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def wait_for_sql_ping
|
def wait_for_sql_ping
|
||||||
wait_until_shell_command_matches(
|
wait_until_shell_command_matches(
|
||||||
"docker exec #{@praefect} bash -c '/opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml sql-ping'",
|
"docker exec #{@praefect} bash -c '/opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml sql-ping'",
|
||||||
@ -206,6 +222,34 @@ module QA
|
|||||||
['error when pinging healthcheck', 'failed checking node health'].include?(msg)
|
['error when pinging healthcheck', 'failed checking node health'].include?(msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def wait_for_dial_nodes_successful
|
||||||
|
Support::Waiter.repeat_until(max_attempts: 3, max_duration: 120, sleep_interval: 1) do
|
||||||
|
nodes_confirmed = {
|
||||||
|
@primary_node => false,
|
||||||
|
@secondary_node => false,
|
||||||
|
@tertiary_node => false
|
||||||
|
}
|
||||||
|
|
||||||
|
nodes_confirmed.each_key do |node|
|
||||||
|
nodes_confirmed[node] = true if praefect_dial_nodes_status?(node)
|
||||||
|
end
|
||||||
|
|
||||||
|
nodes_confirmed.values.all?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def praefect_dial_nodes_status?(node, expect_healthy = true)
|
||||||
|
cmd = "docker exec #{@praefect} bash -c '/opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml dial-nodes -timeout 1s'"
|
||||||
|
if expect_healthy
|
||||||
|
wait_until_shell_command_matches(cmd, /SUCCESS: confirmed Gitaly storage "#{node}" in virtual storages \[#{@virtual_storage}\] is served/)
|
||||||
|
else
|
||||||
|
wait_until_shell_command(cmd, raise_on_failure: false) do |line|
|
||||||
|
QA::Runtime::Logger.debug(line.chomp)
|
||||||
|
break true if line.include?('the following nodes are not healthy') && line.include?(node)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def wait_for_health_check_all_nodes
|
def wait_for_health_check_all_nodes
|
||||||
wait_for_gitaly_health_check(@primary_node)
|
wait_for_gitaly_health_check(@primary_node)
|
||||||
wait_for_gitaly_health_check(@secondary_node)
|
wait_for_gitaly_health_check(@secondary_node)
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module QA
|
||||||
|
RSpec.describe 'Create' do
|
||||||
|
context 'Praefect connectivity commands', :orchestrated, :gitaly_cluster do
|
||||||
|
praefect_manager = Service::PraefectManager.new
|
||||||
|
|
||||||
|
before do
|
||||||
|
praefect_manager.start_all_nodes
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'in a healthy environment' do
|
||||||
|
it 'confirms healthy connection to database', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349937' do
|
||||||
|
expect(praefect_manager.praefect_sql_ping_healthy?).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'confirms healthy connection to gitaly nodes', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349938' do
|
||||||
|
expect(praefect_manager.wait_for_dial_nodes_successful).to be true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'in an unhealthy environment' do
|
||||||
|
it 'diagnoses unhealthy connection to database', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349939' do
|
||||||
|
praefect_manager.stop_node(praefect_manager.postgres)
|
||||||
|
expect(praefect_manager.praefect_sql_ping_healthy?).to be false
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'diagnoses connection issues to gitaly nodes', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349940' do
|
||||||
|
praefect_manager.stop_node(praefect_manager.primary_node)
|
||||||
|
praefect_manager.stop_node(praefect_manager.tertiary_node)
|
||||||
|
expect(praefect_manager.praefect_dial_nodes_status?(praefect_manager.primary_node, false)).to be true
|
||||||
|
expect(praefect_manager.praefect_dial_nodes_status?(praefect_manager.secondary_node)).to be true
|
||||||
|
expect(praefect_manager.praefect_dial_nodes_status?(praefect_manager.tertiary_node, false)).to be true
|
||||||
|
|
||||||
|
praefect_manager.stop_node(praefect_manager.secondary_node)
|
||||||
|
expect(praefect_manager.praefect_dial_nodes_status?(praefect_manager.secondary_node, false)).to be true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user