Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-03-12 00:07:24 +00:00
parent e09df167d9
commit ab897e851c
19 changed files with 99 additions and 81 deletions

View file

@ -24,10 +24,6 @@
.decomposed-database-rspec: .decomposed-database-rspec:
extends: .decomposed-database extends: .decomposed-database
variables:
# For decomposition phase 3, uncomment line below:
# GITLAB_LOAD_BALANCING_REUSE_PRIMARY_ci: "main"
GITLAB_USE_MODEL_LOAD_BALANCING: "true"
.rspec-base: .rspec-base:
extends: extends:
@ -381,6 +377,8 @@ db:migrate:reset decomposed:
- db:migrate:reset - db:migrate:reset
- .decomposed-database - .decomposed-database
- .rails:rules:decomposed-databases - .rails:rules:decomposed-databases
variables:
GITLAB_USE_MODEL_LOAD_BALANCING: "false"
db:migrate-from-previous-major-version: db:migrate-from-previous-major-version:
extends: .db-job-base extends: .db-job-base
@ -389,6 +387,7 @@ db:migrate-from-previous-major-version:
SETUP_DB: "false" SETUP_DB: "false"
PROJECT_TO_CHECKOUT: "gitlab-foss" PROJECT_TO_CHECKOUT: "gitlab-foss"
TAG_TO_CHECKOUT: "v13.12.9" TAG_TO_CHECKOUT: "v13.12.9"
GITLAB_USE_MODEL_LOAD_BALANCING: "false"
before_script: before_script:
- !reference [.default-before_script, before_script] - !reference [.default-before_script, before_script]
- '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"' - '[[ -d "ee/" ]] || export PROJECT_TO_CHECKOUT="gitlab"'

View file

@ -1,8 +1,4 @@
--- ---
GraphQL/FieldMethod: GraphQL/FieldMethod:
Exclude: Exclude:
- app/graphql/types/ci/job_type.rb
- app/graphql/types/merge_request_type.rb
- app/graphql/types/metrics/dashboards/annotation_type.rb
- app/graphql/types/packages/package_details_type.rb - app/graphql/types/packages/package_details_type.rb
- app/graphql/types/project_type.rb

View file

@ -1,5 +1,5 @@
query getSecurityTrainingVulnerability($id: ID!) { query getSecurityTrainingVulnerability($id: ID!) {
vulnerability(id: $id) { vulnerability(id: $id) @client {
id id
identifiers { identifiers {
externalType externalType

View file

@ -16,7 +16,7 @@ export default {
}, },
computed: { computed: {
docsUrl() { docsUrl() {
return helpPagePath('user/infrastructure/terraform_state'); return helpPagePath('user/infrastructure/iac/terraform_state');
}, },
}, },
}; };

View file

@ -61,7 +61,7 @@ module Types
field :coverage, GraphQL::Types::Float, null: true, field :coverage, GraphQL::Types::Float, null: true,
description: 'Coverage level of the job.' description: 'Coverage level of the job.'
field :created_by_tag, GraphQL::Types::Boolean, null: false, field :created_by_tag, GraphQL::Types::Boolean, null: false,
description: 'Whether the job was created by a tag.' description: 'Whether the job was created by a tag.', method: :tag?
field :detailed_status, Types::Ci::DetailedStatusType, null: true, field :detailed_status, Types::Ci::DetailedStatusType, null: true,
description: 'Detailed status of the job.' description: 'Detailed status of the job.'
field :downstream_pipeline, Types::Ci::PipelineType, null: true, field :downstream_pipeline, Types::Ci::PipelineType, null: true,
@ -173,10 +173,6 @@ module Types
object&.coverage object&.coverage
end end
def created_by_tag
object.tag?
end
def manual_job def manual_job
object.try(:action?) object.try(:action?)
end end

View file

@ -179,7 +179,7 @@ module Types
description: 'Total time reported as spent on the merge request.' description: 'Total time reported as spent on the merge request.'
field :approved_by, Types::UserType.connection_type, null: true, field :approved_by, Types::UserType.connection_type, null: true,
description: 'Users who approved the merge request.' description: 'Users who approved the merge request.', method: :approved_by_users
field :auto_merge_strategy, GraphQL::Types::String, null: true, field :auto_merge_strategy, GraphQL::Types::String, null: true,
description: 'Selected auto merge strategy.' description: 'Selected auto merge strategy.'
field :available_auto_merge_strategies, [GraphQL::Types::String], null: true, calls_gitaly: true, field :available_auto_merge_strategies, [GraphQL::Types::String], null: true, calls_gitaly: true,
@ -208,10 +208,6 @@ module Types
markdown_field :title_html, null: true markdown_field :title_html, null: true
markdown_field :description_html, null: true markdown_field :description_html, null: true
def approved_by
object.approved_by_users
end
def user_notes_count def user_notes_count
BatchLoader::GraphQL.for(object.id).batch(key: :merge_request_user_notes_count) do |ids, loader, args| BatchLoader::GraphQL.for(object.id).batch(key: :merge_request_user_notes_count) do |ids, loader, args|
counts = Note.count_for_collection(ids, 'MergeRequest').index_by(&:noteable_id) counts = Note.count_for_collection(ids, 'MergeRequest').index_by(&:noteable_id)

View file

@ -14,17 +14,14 @@ module Types
description: 'ID of the annotation.' description: 'ID of the annotation.'
field :panel_id, GraphQL::Types::String, null: true, field :panel_id, GraphQL::Types::String, null: true,
description: 'ID of a dashboard panel to which the annotation should be scoped.' description: 'ID of a dashboard panel to which the annotation should be scoped.',
method: :panel_xid
field :starting_at, Types::TimeType, null: true, field :starting_at, Types::TimeType, null: true,
description: 'Timestamp marking start of annotated time span.' description: 'Timestamp marking start of annotated time span.'
field :ending_at, Types::TimeType, null: true, field :ending_at, Types::TimeType, null: true,
description: 'Timestamp marking end of annotated time span.' description: 'Timestamp marking end of annotated time span.'
def panel_id
object.panel_xid
end
end end
end end
end end

View file

@ -32,10 +32,10 @@ module Types
field :tag_list, GraphQL::Types::String, null: true, field :tag_list, GraphQL::Types::String, null: true,
deprecated: { reason: 'Use `topics`', milestone: '13.12' }, deprecated: { reason: 'Use `topics`', milestone: '13.12' },
description: 'List of project topics (not Git tags).' description: 'List of project topics (not Git tags).', method: :topic_list
field :topics, [GraphQL::Types::String], null: true, field :topics, [GraphQL::Types::String], null: true,
description: 'List of project topics.' description: 'List of project topics.', method: :topic_list
field :http_url_to_repo, GraphQL::Types::String, null: true, field :http_url_to_repo, GraphQL::Types::String, null: true,
description: 'URL to connect to the project via HTTPS.' description: 'URL to connect to the project via HTTPS.'
@ -461,14 +461,6 @@ module Types
object.service_desk_address object.service_desk_address
end end
def tag_list
object.topic_list
end
def topics
object.topic_list
end
private private
def project def project

View file

@ -0,0 +1,11 @@
- name: "htpasswd Authentication for the Container Registry"
announcement_milestone: "14.9"
announcement_date: "2022-03-22"
removal_milestone: "15.0"
removal_date: "2022-05-22"
breaking_change: true
reporter: trizzi
body: | # Do not modify this line, instead modify the lines below.
The Container Registry supports [authentication](https://gitlab.com/gitlab-org/container-registry/-/blob/master/docs/configuration.md#auth) with `htpasswd`. It relies on an [Apache `htpasswd` file](https://httpd.apache.org/docs/2.4/programs/htpasswd.html), with passwords hashed using `bcrypt`.
Since it isn't used in the context of GitLab (the product), `htpasswd` authentication will be deprecated in GitLab 14.9 and removed in GitLab 15.0.

View file

@ -13,7 +13,7 @@
At every major release of GitLab, the "latest version" template becomes the "major version" template, inheriting the "latest template" setup. At every major release of GitLab, the "latest version" template becomes the "major version" template, inheriting the "latest template" setup.
As we have added many new features to the Terraform integration, the new setup for the "major version" template can be considered a breaking change. As we have added many new features to the Terraform integration, the new setup for the "major version" template can be considered a breaking change.
The latest template supports the [Terraform Merge Request widget](https://docs.gitlab.com/ee/user/infrastructure/mr_integration.html) and The latest template supports the [Terraform Merge Request widget](https://docs.gitlab.com/ee/user/infrastructure/iac/mr_integration.html) and
doesn't need additional setup to work with the [GitLab managed Terraform state](https://docs.gitlab.com/ee/user/infrastructure/terraform_state.html). doesn't need additional setup to work with the [GitLab managed Terraform state](https://docs.gitlab.com/ee/user/infrastructure/iac/terraform_state.html).
To check the new changes, see the [new "major version" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml). To check the new changes, see the [new "major version" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml).

View file

@ -56,6 +56,20 @@ The [`custom_hooks_dir`](https://docs.gitlab.com/ee/administration/server_hooks.
**Planned removal milestone: 15.0 ()** **Planned removal milestone: 15.0 ()**
### htpasswd Authentication for the Container Registry
WARNING:
This feature will be changed or removed in 15.0
as a [breaking change](https://docs.gitlab.com/ee/development/contributing/#breaking-changes).
Before updating GitLab, review the details carefully to determine if you need to make any
changes to your code, settings, or workflow.
The Container Registry supports [authentication](https://gitlab.com/gitlab-org/container-registry/-/blob/master/docs/configuration.md#auth) with `htpasswd`. It relies on an [Apache `htpasswd` file](https://httpd.apache.org/docs/2.4/programs/htpasswd.html), with passwords hashed using `bcrypt`.
Since it isn't used in the context of GitLab (the product), `htpasswd` authentication will be deprecated in GitLab 14.9 and removed in GitLab 15.0.
**Planned removal milestone: 15.0 (2022-05-22)**
## 14.8 ## 14.8
### Changes to the `CI_JOB_JWT` ### Changes to the `CI_JOB_JWT`

View file

@ -569,8 +569,8 @@ As we continuously [develop GitLab's Terraform integrations](https://gitlab.com/
At every major release of GitLab, the "latest version" template becomes the "major version" template, inheriting the "latest template" setup. At every major release of GitLab, the "latest version" template becomes the "major version" template, inheriting the "latest template" setup.
As we have added many new features to the Terraform integration, the new setup for the "major version" template can be considered a breaking change. As we have added many new features to the Terraform integration, the new setup for the "major version" template can be considered a breaking change.
The latest template supports the [Terraform Merge Request widget](https://docs.gitlab.com/ee/user/infrastructure/mr_integration.html) and The latest template supports the [Terraform Merge Request widget](https://docs.gitlab.com/ee/user/infrastructure/iac/mr_integration.html) and
doesn't need additional setup to work with the [GitLab managed Terraform state](https://docs.gitlab.com/ee/user/infrastructure/terraform_state.html). doesn't need additional setup to work with the [GitLab managed Terraform state](https://docs.gitlab.com/ee/user/infrastructure/iac/terraform_state.html).
To check the new changes, see the [new "major version" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml). To check the new changes, see the [new "major version" template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml).

View file

@ -7,61 +7,67 @@ type: reference
# Syntax Highlighting **(FREE)** # Syntax Highlighting **(FREE)**
GitLab provides syntax highlighting on all files through the [Rouge](https://rubygems.org/gems/rouge) Ruby gem. It attempts to guess what language to use based on the file extension, which most of the time is sufficient. GitLab provides syntax highlighting on all files through the
[Rouge](https://rubygems.org/gems/rouge) Ruby gem. It attempts to guess what language
to use based on the file extension, which most of the time is sufficient.
The paths here are Git's built-in [`.gitattributes` interface](https://git-scm.com/docs/gitattributes).
NOTE: NOTE:
The [Web IDE](web_ide/index.md) and [Snippets](../snippets.md) use [Monaco Editor](https://microsoft.github.io/monaco-editor/) The [Web IDE](web_ide/index.md) and [Snippets](../snippets.md) use [Monaco Editor](https://microsoft.github.io/monaco-editor/)
for text editing, which internally uses the [Monarch](https://microsoft.github.io/monaco-editor/monarch.html) for text editing, which internally uses the [Monarch](https://microsoft.github.io/monaco-editor/monarch.html)
library for syntax highlighting. library for syntax highlighting.
<!-- vale gitlab.Spelling = NO --> ## Override syntax highlighting for a file type
If GitLab is guessing wrong, you can override its choice of language using the NOTE:
`gitlab-language` attribute in `.gitattributes`. For example, if you are working in a Prolog The Web IDE [does not support `.gitattribute` files](https://gitlab.com/gitlab-org/gitlab/-/issues/22014).
project and using the `.pl` file extension (which would normally be highlighted as Perl),
you can add the following to your `.gitattributes` file:
<!-- vale gitlab.Spelling = YES --> To override syntax highlighting for a file type:
1. If a `.gitattributes` file does not exist in the root directory of your project,
create a blank file with this name.
1. For each file type you want to modify, add a line to the `.gitattributes` file
declaring the file extension and your desired highlighting language:
```conf ```conf
# This extension would normally receive Perl syntax highlighting
# but if we also use Prolog, we may want to override highlighting for
# files with this extension:
*.pl gitlab-language=prolog *.pl gitlab-language=prolog
``` ```
<!-- vale gitlab.Spelling = NO --> 1. Commit, push, and merge your changes into your default branch.
When you check in and push that change, all `*.pl` files in your project are highlighted as Prolog. After the changes merge into your [default branch](repository/branches/default.md),
all `*.pl` files in your project are highlighted in your preferred language.
<!-- vale gitlab.Spelling = YES --> You can also extend the highlighting with common gateway interface (CGI) options, such as:
The paths here are Git's built-in [`.gitattributes` interface](https://git-scm.com/docs/gitattributes). So, if you were to invent a file format called a `Nicefile` at the root of your project that used Ruby syntax, all you need is:
``` conf ``` conf
/Nicefile gitlab-language=ruby # JSON file with .erb in it
```
To disable highlighting entirely, use `gitlab-language=text`. Lots more fun shenanigans are available through common gateway interface (CGI) options, such as:
``` conf
# json with erb in it
/my-cool-file gitlab-language=erb?parent=json /my-cool-file gitlab-language=erb?parent=json
# an entire file of highlighting errors! # An entire file of highlighting errors!
/other-file gitlab-language=text?token=Error /other-file gitlab-language=text?token=Error
``` ```
These configurations only take effect when the `.gitattributes` ## Disable syntax highlighting for a file type
file is in your [default branch](repository/branches/default.md).
NOTE: To disable highlighting entirely for a file type, follow the instructions for overriding
The Web IDE does not support `.gitattribute` files, but it's [planned for a future release](https://gitlab.com/gitlab-org/gitlab/-/issues/22014). the highlighting for a file type, and use `gitlab-language=text`:
```conf
# Disable syntax highlighting for this file type
*.module gitlab-language=text
```
## Configure maximum file size for highlighting ## Configure maximum file size for highlighting
You can configure the maximum size of the file to be highlighted. By default, GitLab renders any file larger than 512 KB in plain text. To change this value:
The file size is measured in kilobytes, and is set to a default of `512 KB`. Any file _over_ the file size is rendered in plain text. 1. Open the [`gitlab.yml`](https://gitlab.com/gitlab-org/gitlab-foss/blob/master/config/gitlab.yml.example)
configuration file for your project.
1. Open the [`gitlab.yml`](https://gitlab.com/gitlab-org/gitlab-foss/blob/master/config/gitlab.yml.example) configuration file.
1. Add this section, replacing `maximum_text_highlight_size_kilobytes` with the value you want. 1. Add this section, replacing `maximum_text_highlight_size_kilobytes` with the value you want.
@ -72,3 +78,5 @@ The file size is measured in kilobytes, and is set to a default of `512 KB`. Any
## https://docs.gitlab.com/ee/user/project/highlighting.html ## https://docs.gitlab.com/ee/user/project/highlighting.html
maximum_text_highlight_size_kilobytes: 512 maximum_text_highlight_size_kilobytes: 512
``` ```
1. Commit, push, and merge your changes into your default branch.

View file

@ -90,7 +90,8 @@ module Gitlab
def use_model_load_balancing? def use_model_load_balancing?
# Cache environment variable and return env variable first if defined # Cache environment variable and return env variable first if defined
use_model_load_balancing_env = Gitlab::Utils.to_boolean(ENV["GITLAB_USE_MODEL_LOAD_BALANCING"]) default_use_model_load_balancing_env = Gitlab.dev_or_test_env? || nil
use_model_load_balancing_env = Gitlab::Utils.to_boolean(ENV.fetch('GITLAB_USE_MODEL_LOAD_BALANCING', default_use_model_load_balancing_env))
unless use_model_load_balancing_env.nil? unless use_model_load_balancing_env.nil?
return use_model_load_balancing_env return use_model_load_balancing_env

View file

@ -23,7 +23,9 @@ module Gitlab
end end
end end
execution_message do execution_message do
if preferred_strategy = preferred_auto_merge_strategy(quick_action_target) if params[:merge_request_diff_head_sha].blank?
_("Merge request diff sha parameter is required for the merge quick action.")
elsif preferred_strategy = preferred_auto_merge_strategy(quick_action_target)
_("Scheduled to merge this merge request (%{strategy}).") % { strategy: preferred_strategy.humanize } _("Scheduled to merge this merge request (%{strategy}).") % { strategy: preferred_strategy.humanize }
else else
_('Merged this merge request.') _('Merged this merge request.')
@ -35,6 +37,8 @@ module Gitlab
merge_orchestration_service.can_merge?(quick_action_target) merge_orchestration_service.can_merge?(quick_action_target)
end end
command :merge do command :merge do
next unless params[:merge_request_diff_head_sha].present?
@updates[:merge] = params[:merge_request_diff_head_sha] @updates[:merge] = params[:merge_request_diff_head_sha]
end end

View file

@ -23066,6 +23066,9 @@ msgstr ""
msgid "Merge request dependencies" msgid "Merge request dependencies"
msgstr "" msgstr ""
msgid "Merge request diff sha parameter is required for the merge quick action."
msgstr ""
msgid "Merge request events" msgid "Merge request events"
msgstr "" msgstr ""

View file

@ -8,7 +8,7 @@ describe('EmptyStateComponent', () => {
const propsData = { const propsData = {
image: '/image/path', image: '/image/path',
}; };
const docsUrl = '/help/user/infrastructure/terraform_state'; const docsUrl = '/help/user/infrastructure/iac/terraform_state';
const findEmptyState = () => wrapper.findComponent(GlEmptyState); const findEmptyState = () => wrapper.findComponent(GlEmptyState);
const findLink = () => wrapper.findComponent(GlLink); const findLink = () => wrapper.findComponent(GlLink);

View file

@ -274,6 +274,8 @@ RSpec.describe Gitlab::Database::LoadBalancing::Setup do
end end
before do before do
allow(Gitlab).to receive(:dev_or_test_env?).and_return(false)
# Rewrite `class_attribute` to use rspec mocking and prevent modifying the objects # Rewrite `class_attribute` to use rspec mocking and prevent modifying the objects
allow_next_instance_of(described_class) do |setup| allow_next_instance_of(described_class) do |setup|
allow(setup).to receive(:configure_connection) allow(setup).to receive(:configure_connection)

View file

@ -799,10 +799,9 @@ RSpec.describe QuickActions::InterpretService do
let(:project) { repository_project } let(:project) { repository_project }
let(:service) { described_class.new(project, developer, {}) } let(:service) { described_class.new(project, developer, {}) }
it 'precheck passes and returns merge command' do it_behaves_like 'failed command', 'Merge request diff sha parameter is required for the merge quick action.' do
_, updates, _ = service.execute('/merge', merge_request) let(:content) { "/merge" }
let(:issuable) { merge_request }
expect(updates).to eq(merge: nil)
end end
end end