Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-10-07 06:09:58 +00:00
parent cd0a6b8982
commit c2f9cac32e
21 changed files with 178 additions and 79 deletions

View file

@ -81,8 +81,8 @@ export default {
},
},
i18n: {
fullDescription: __('Choose any color. Or you can choose one of the suggested colors below'),
shortDescription: __('Choose any color'),
fullDescription: __('Enter any color or choose one of the suggested colors below.'),
shortDescription: __('Enter any color.'),
},
};
</script>

View file

@ -87,9 +87,6 @@ export default {
return isDropdownVariantStandalone(this.variant);
},
},
mounted() {
this.$refs.dropdown.show();
},
methods: {
toggleDropdownContentsCreateView() {
this.showDropdownContentsCreateView = !this.showDropdownContentsCreateView;
@ -101,6 +98,9 @@ export default {
this.$refs.dropdown.$refs.dropdown.$_popper.scheduleUpdate();
}
},
showDropdown() {
this.$refs.dropdown.show();
},
closeDropdown() {
this.$emit('setLabels', this.localSelectedLabels);
this.$refs.dropdown.hide();

View file

@ -141,6 +141,9 @@ export default {
handleCollapsedValueClick() {
this.$emit('toggleCollapse');
},
showDropdownContents() {
this.$refs.dropdownContents.showDropdown();
},
isDropdownVariantSidebar,
isDropdownVariantStandalone,
isDropdownVariantEmbedded,
@ -167,6 +170,7 @@ export default {
:title="__('Labels')"
:loading="isLoading"
:can-edit="allowLabelEdit"
@open="showDropdownContents"
>
<template #collapsed>
<dropdown-value
@ -180,7 +184,7 @@ export default {
<slot></slot>
</dropdown-value>
</template>
<template #default="{ edit }">
<template #default>
<dropdown-value
:disable-labels="labelsSelectInProgress"
:selected-labels="issuableLabels"
@ -193,7 +197,7 @@ export default {
<slot></slot>
</dropdown-value>
<dropdown-contents
v-if="edit"
ref="dropdownContents"
:dropdown-button-text="dropdownButtonText"
:allow-multiselect="allowMultiselect"
:labels-list-title="labelsListTitle"

View file

@ -732,7 +732,7 @@ class Repository
end
def tags_sorted_by(value)
return raw_repository.tags(sort_by: value) if Feature.enabled?(:gitaly_tags_finder, project, default_enabled: :yaml)
return raw_repository.tags(sort_by: value) if Feature.enabled?(:tags_finder_gitaly, project, default_enabled: :yaml)
tags_ruby_sort(value)
end

View file

@ -1,8 +1,8 @@
---
name: gitaly_tags_finder
name: tags_finder_gitaly
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69101
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339741
milestone: '14.3'
type: development
group: group::source code
default_enabled: false
default_enabled: true

View file

@ -0,0 +1,23 @@
# frozen_string_literal: true
class RerescheduleDeleteOrphanedDeployments < Gitlab::Database::Migration[1.0]
MIGRATION = 'DeleteOrphanedDeployments'
DELAY_INTERVAL = 2.minutes
disable_ddl_transaction!
# This is the third time to schedule `DeleteOrphanedDeployments` migration.
# The first time failed by an inappropriate batch size and the second time failed by a retry bug.
# Since there is no issue in this migration itself, we can simply requeue the
# migration jobs **without** no-op-ing the previous migration.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69051#note_669230405 for more information.
def up
delete_queued_jobs(MIGRATION)
requeue_background_migration_jobs_by_range_at_intervals(MIGRATION, DELAY_INTERVAL)
end
def down
# no-op
end
end

View file

@ -0,0 +1 @@
40e15593d9ee0fb5a59d1576c6da5a1eece265730f7ae15c5c81c2c5343b362c

View file

@ -1604,7 +1604,7 @@ To configure the Sidekiq nodes, on each one:
1. [Download and install](https://about.gitlab.com/install/) the Omnibus GitLab
package of your choice. Be sure to follow _only_ installation steps 1 and 2
on the page.
1. Open `/etc/gitlab/gitlab.rb` with your editor:
1. Create or edit `/etc/gitlab/gitlab.rb` and use the following configuration:
```ruby
# Avoid running unnecessary services on the Sidekiq server
@ -1619,6 +1619,10 @@ To configure the Sidekiq nodes, on each one:
gitlab_exporter['enable'] = false
nginx['enable'] = false
# External URL
## This should match the URL of the external load balancer
external_url 'https://gitlab.example.com'
# Redis
## Redis connection details
## First cluster that will host the cache

View file

@ -1610,7 +1610,7 @@ To configure the Sidekiq nodes, on each one:
1. [Download and install](https://about.gitlab.com/install/) the Omnibus GitLab
package of your choice. Be sure to follow _only_ installation steps 1 and 2
on the page.
1. Open `/etc/gitlab/gitlab.rb` with your editor:
1. Create or edit `/etc/gitlab/gitlab.rb` and use the following configuration:
```ruby
# Avoid running unnecessary services on the Sidekiq server
@ -1625,6 +1625,10 @@ To configure the Sidekiq nodes, on each one:
gitlab_exporter['enable'] = false
nginx['enable'] = false
# External URL
## This should match the URL of the external load balancer
external_url 'https://gitlab.example.com'
# Redis
## Redis connection details
## First cluster that will host the cache

View file

@ -1565,7 +1565,7 @@ To configure the Sidekiq nodes, one each one:
1. [Download and install](https://about.gitlab.com/install/) the Omnibus GitLab
package of your choice. Be sure to follow _only_ installation steps 1 and 2
on the page.
1. Open `/etc/gitlab/gitlab.rb` with your editor:
1. Create or edit `/etc/gitlab/gitlab.rb` and use the following configuration:
```ruby
# Avoid running unnecessary services on the Sidekiq server
@ -1580,6 +1580,10 @@ To configure the Sidekiq nodes, one each one:
gitlab_exporter['enable'] = false
nginx['enable'] = false
# External URL
## This should match the URL of the external load balancer
external_url 'https://gitlab.example.com'
# Redis
redis['master_name'] = 'gitlab-redis'

View file

@ -1617,7 +1617,7 @@ To configure the Sidekiq nodes, on each one:
1. [Download and install](https://about.gitlab.com/install/) the Omnibus GitLab
package of your choice. Be sure to follow _only_ installation steps 1 and 2
on the page.
1. Open `/etc/gitlab/gitlab.rb` with your editor:
1. Create or edit `/etc/gitlab/gitlab.rb` and use the following configuration:
```ruby
# Avoid running unnecessary services on the Sidekiq server
@ -1632,6 +1632,10 @@ To configure the Sidekiq nodes, on each one:
gitlab_exporter['enable'] = false
nginx['enable'] = false
# External URL
## This should match the URL of the external load balancer
external_url 'https://gitlab.example.com'
# Redis
## Redis connection details
## First cluster that will host the cache

View file

@ -1555,7 +1555,7 @@ To configure the Sidekiq nodes, one each one:
1. [Download and install](https://about.gitlab.com/install/) the Omnibus GitLab
package of your choice. Be sure to follow _only_ installation steps 1 and 2
on the page.
1. Open `/etc/gitlab/gitlab.rb` with your editor:
1. Create or edit `/etc/gitlab/gitlab.rb` and use the following configuration:
```ruby
# Avoid running unnecessary services on the Sidekiq server
@ -1570,6 +1570,10 @@ To configure the Sidekiq nodes, one each one:
gitlab_exporter['enable'] = false
nginx['enable'] = false
# External URL
## This should match the URL of the external load balancer
external_url 'https://gitlab.example.com'
# Redis
## Must be the same in every sentinel node
redis['master_name'] = 'gitlab-redis'

View file

@ -104,6 +104,16 @@ you want using steps 1 and 2 from the GitLab downloads page.
You must also copy the `registry.key` file to each Sidekiq node.
1. Define the `external_url`. To maintain uniformity of links across nodes, the
`external_url` on the Sidekiq server should point to the external URL that users
will use to access GitLab. This will either be the `external_url` set on your
application server or the URL of a external load balancer which will route traffic
to the GitLab application server:
```ruby
external_url 'https://gitlab.example.com'
```
1. Run `gitlab-ctl reconfigure`.
You will need to restart the Sidekiq nodes after an update has occurred and database
@ -194,6 +204,9 @@ gitlab_rails['monitoring_whitelist'] = ['10.10.1.42', '127.0.0.1']
# Container Registry URL for cleanup jobs
registry_external_url 'https://registry.example.com'
gitlab_rails['registry_api_url'] = "https://registry.example.com"
# External URL (this should match the URL used to access your GitLab instance)
external_url 'https://gitlab.example.com'
```
## Further reading

View file

@ -2678,13 +2678,21 @@ Read more in the [Project members](members.md) documentation.
> - Introduced in GitLab 11.
> - Moved to GitLab Premium in 13.9.
Configure pull mirroring while [creating a new project](#create-project) or [updating an existing project](#edit-project) using the API if the remote repository is publicly accessible or via `username/password` authentication. In case your HTTP repository is not publicly accessible, you can add the authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`, where password is a [personal access token](../user/profile/personal_access_tokens.md) with the API scope enabled.
Configure pull mirroring while [creating a new project](#create-project)
or [updating an existing project](#edit-project) using the API
if the remote repository is publicly accessible
or via `username:token` authentication.
In case your HTTP repository is not publicly accessible,
you can add the authentication information to the URL:
`https://username:token@gitlab.company.com/group/project.git`,
where `token` is a [personal access token](../user/profile/personal_access_tokens.md)
with the API scope enabled.
The relevant API parameters to update are:
- `import_url`: URL of remote repository being mirrored (with `username:password` if needed).
- `mirror`: Enables pull mirroring on project when set to `true`.
- `only_mirror_protected_branches`: Set to `true` for protected branches.
| Attribute | Type | Required | Description |
|--------------|---------|------------------------|-------------|
| `import_url` | string | **{check-circle}** Yes | URL of remote repository being mirrored (with `user:token` if needed). |
| `mirror` | boolean | **{check-circle}** Yes | Enables pull mirroring on project when set to `true`. |
| `only_mirror_protected_branches`| boolean | **{dotted-circle}** No | Limits mirroring to only protected branches when set to `true`. |
## Start the pull mirroring process for a Project **(PREMIUM)**

View file

@ -51,11 +51,15 @@ NOTE:
For security reasons, the `url` attribute is always scrubbed of username
and password information.
## Create a remote mirror
## Create a pull mirror
Learn how to [configure a pull mirror](projects.md#configure-pull-mirroring-for-a-project) using the Projects API.
## Create a push mirror
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24189) in GitLab 12.9.
Create a remote mirror for a project. The mirror is disabled by default. You can enable it by including the optional parameter `enabled` when creating it:
Push mirroring is disabled by default. You can enable it by including the optional parameter `enabled` when creating it:
```plaintext
POST /projects/:id/remote_mirrors
@ -63,7 +67,7 @@ POST /projects/:id/remote_mirrors
| Attribute | Type | Required | Description |
| :---------- | :----- | :--------- | :------------ |
| `url` | String | yes | The URL of the remote repository to be mirrored. |
| `url` | String | yes | The target URL to which the repository is mirrored. |
| `enabled` | Boolean | no | Determines if the mirror is enabled. |
| `only_protected_branches` | Boolean | no | Determines if only protected branches are mirrored. |
| `keep_divergent_refs` | Boolean | no | Determines if divergent refs are skipped. |

View file

@ -39,17 +39,19 @@ You can use [emphasis](../../markdown.md#emphasis), [links](../../markdown.md#li
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/276221) in GitLab 13.9.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/287779) in GitLab 13.12.
You can create a framework label to identify that your project has certain compliance requirements
or needs additional oversight.
You can create a compliance framework label to identify that your project has certain compliance
requirements or needs additional oversight. The label can optionally apply
[compliance pipeline configuration](#compliance-pipeline-configuration).
Group owners can create, edit, and delete compliance frameworks:
1. Go to the group's **Settings** > **General**.
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Settings** > **General**.
1. Expand the **Compliance frameworks** section.
Compliance frameworks created can then be assigned to any number of projects using:
Compliance frameworks created can then be assigned to projects within the group using:
- The project settings page inside the group or subgroups.
- The GitLab UI, using the project settings page.
- In [GitLab 14.2](https://gitlab.com/gitlab-org/gitlab/-/issues/333249) and later, using the
[GraphQL API](../../../api/graphql/reference/index.md#mutationprojectsetcomplianceframework).
@ -64,24 +66,32 @@ read-only view to discourage this behavior.
> - [Enabled by default](https://gitlab.com/gitlab-org/gitlab/-/issues/300324) in GitLab 13.11.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/331231) in GitLab 14.2.
Group owners can use the compliance pipeline configuration to define compliance requirements
such as scans or tests, and enforce them in individual projects.
Group owners can use compliance pipeline configuration to add additional pipeline configuration to
projects to define compliance requirements such as scans or tests.
The [custom compliance framework](#compliance-frameworks) feature allows group owners to specify the location
of a compliance pipeline configuration stored and managed in a dedicated project, distinct from a developer's project.
[Compliance frameworks](#compliance-frameworks) allow group owners to specify the location of
compliance pipeline configuration stored and managed in dedicated projects, separate from regular
projects.
When you set up the compliance pipeline configuration field, use the
`file@group/project` format. For example, you can configure
`.compliance-gitlab-ci.yml@compliance-group/compliance-project`.
This field is inherited by projects where the compliance framework label is applied. The result
forces the project to run the compliance configurations.
When you set up the compliance framework, use the **Compliance pipeline configuration** box to link
the compliance framework to specific CI/CD configuration. Use the
`path/file.y[a]ml@group-name/project-name` format. For example:
When a project with a custom label executes a pipeline, it begins by evaluating the compliance pipeline configuration.
The custom pipeline configuration can then execute any included individual project configuration.
- `.compliance-ci.yml@gitlab-org/gitlab`.
- `.compliance-ci.yaml@gitlab-org/gitlab`.
The user running the pipeline in the project should at least have Reporter access to the compliance project.
This configuration is inherited by projects where the compliance framework label is applied. The
result forces projects with the label to run the compliance CI/CD configuration in addition to
the project's own CI/CD configuration. When a project with a compliance framework label executes a
pipeline, it evaluates configuration in the following order:
Example `.compliance-gitlab-ci.yml`
1. Compliance pipeline configuration.
1. Project-specific pipeline configuration.
The user running the pipeline in the project must at least have the Reporter role on the compliance
project.
Example `.compliance-gitlab-ci.yml`:
```yaml
# Allows compliance team to control the ordering and interweaving of stages/jobs.
@ -94,10 +104,10 @@ stages:
- deploy
- post-compliance
variables: # Can be overridden by setting a job-specific variable in project's local .gitlab-ci.yml
variables: # Can be overridden by setting a job-specific variable in project's local .gitlab-ci.yml
FOO: sast
sast: # None of these attributes can be overridden by a project's local .gitlab-ci.yml
sast: # None of these attributes can be overridden by a project's local .gitlab-ci.yml
variables:
FOO: sast
image: ruby:2.6
@ -144,10 +154,10 @@ audit trail:
after_script:
- "# No after scripts."
include: # Execute individual project's configuration (if project contains .gitlab-ci.yml)
include: # Execute individual project's configuration (if project contains .gitlab-ci.yml)
project: '$CI_PROJECT_PATH'
file: '$CI_CONFIG_PATH'
ref: '$CI_COMMIT_REF_NAME' # Must be defined or MR pipelines always use the use default branch.
ref: '$CI_COMMIT_REF_NAME' # Must be defined or MR pipelines always use the use default branch.
```
##### Ensure compliance jobs are always run

View file

@ -1442,9 +1442,6 @@ msgstr ""
msgid "A deleted user"
msgstr ""
msgid "A description is required"
msgstr ""
msgid "A different reason"
msgstr ""
@ -6835,15 +6832,9 @@ msgstr ""
msgid "Choose a type..."
msgstr ""
msgid "Choose any color"
msgstr ""
msgid "Choose any color."
msgstr ""
msgid "Choose any color. Or you can choose one of the suggested colors below"
msgstr ""
msgid "Choose file…"
msgstr ""
@ -8484,16 +8475,22 @@ msgstr ""
msgid "ComplianceFrameworks|Add framework"
msgstr ""
msgid "ComplianceFrameworks|Combines with the CI configuration at runtime."
msgid "ComplianceFrameworks|Background color"
msgstr ""
msgid "ComplianceFrameworks|Cancel"
msgstr ""
msgid "ComplianceFrameworks|Compliance framework deleted successfully"
msgstr ""
msgid "ComplianceFrameworks|Compliance pipeline configuration location (optional)"
msgid "ComplianceFrameworks|Compliance pipeline configuration (optional)"
msgstr ""
msgid "ComplianceFrameworks|Could not find this configuration location, please try a different location"
msgid "ComplianceFrameworks|Configuration not found"
msgstr ""
msgid "ComplianceFrameworks|Configured compliance frameworks appear here."
msgstr ""
msgid "ComplianceFrameworks|Delete compliance framework %{framework}"
@ -8502,6 +8499,12 @@ msgstr ""
msgid "ComplianceFrameworks|Delete framework"
msgstr ""
msgid "ComplianceFrameworks|Description"
msgstr ""
msgid "ComplianceFrameworks|Description is required"
msgstr ""
msgid "ComplianceFrameworks|Edit framework"
msgstr ""
@ -8514,31 +8517,31 @@ msgstr ""
msgid "ComplianceFrameworks|Error fetching compliance frameworks data. Please refresh the page or try a different framework"
msgstr ""
msgid "ComplianceFrameworks|Invalid format: it should follow the format [PATH].y(a)ml@[GROUP]/[PROJECT]"
msgid "ComplianceFrameworks|Invalid format"
msgstr ""
msgid "ComplianceFrameworks|Once a compliance framework is added it will appear here."
msgid "ComplianceFrameworks|Name"
msgstr ""
msgid "ComplianceFrameworks|There are no compliance frameworks set up yet"
msgid "ComplianceFrameworks|Name is required"
msgstr ""
msgid "ComplianceFrameworks|No compliance frameworks are configured"
msgstr ""
msgid "ComplianceFrameworks|Required format: %{codeStart}path/file.y[a]ml@group-name/project-name%{codeEnd}. %{linkStart}Learn more.%{linkEnd}"
msgstr ""
msgid "ComplianceFrameworks|Unable to save this compliance framework. Please try again"
msgstr ""
msgid "ComplianceFrameworks|Use %{codeStart}::%{codeEnd} to create a %{linkStart}scoped set%{linkEnd} (eg. %{codeStart}SOX::AWS%{codeEnd})"
msgstr ""
msgid "ComplianceFrameworks|You are about to permanently delete the compliance framework %{framework} from all projects which currently have it applied, which may remove other functionality. This cannot be undone."
msgstr ""
msgid "ComplianceFrameworks|e.g. include-gitlab.ci.yml@group-name/project-name"
msgid "ComplianceFramework|Edit compliance framework"
msgstr ""
msgid "ComplianceFramework|Edit Compliance Framework"
msgstr ""
msgid "ComplianceFramework|New Compliance Framework"
msgid "ComplianceFramework|New compliance framework"
msgstr ""
msgid "Component"
@ -12790,6 +12793,12 @@ msgstr ""
msgid "Enter an integer number number between 0 and 100"
msgstr ""
msgid "Enter any color or choose one of the suggested colors below."
msgstr ""
msgid "Enter any color."
msgstr ""
msgid "Enter at least three characters to search"
msgstr ""
@ -16378,7 +16387,7 @@ msgstr ""
msgid "GroupSettings|Compliance frameworks"
msgstr ""
msgid "GroupSettings|Configure frameworks to apply enforceable rules to projects."
msgid "GroupSettings|Configure compliance frameworks to make them available to projects in this group. %{linkStart}Learn more.%{linkEnd}"
msgstr ""
msgid "GroupSettings|Custom project templates"
@ -30505,10 +30514,10 @@ msgstr ""
msgid "Select a branch"
msgstr ""
msgid "Select a file from the left sidebar to begin editing. Afterwards, you'll be able to commit your changes."
msgid "Select a compliance framework to apply to this project. %{linkStart}Learn more.%{linkEnd}"
msgstr ""
msgid "Select a framework that applies to this project. %{linkStart}How are these added?%{linkEnd}"
msgid "Select a file from the left sidebar to begin editing. Afterwards, you'll be able to commit your changes."
msgstr ""
msgid "Select a group to invite"

View file

@ -111,15 +111,13 @@ describe('ColorPicker', () => {
gon.suggested_label_colors = {};
createComponent(shallowMount);
expect(description()).toBe('Choose any color');
expect(description()).toBe('Enter any color.');
expect(presetColors().exists()).toBe(false);
});
it('shows the suggested colors', () => {
createComponent(shallowMount);
expect(description()).toBe(
'Choose any color. Or you can choose one of the suggested colors below',
);
expect(description()).toBe('Enter any color or choose one of the suggested colors below.');
expect(presetColors()).toHaveLength(4);
});

View file

@ -68,10 +68,11 @@ describe('DropdownContent', () => {
const findCreateLabelButton = () => wrapper.find('[data-testid="create-label-button"]');
const findGoBackButton = () => wrapper.find('[data-testid="go-back-button"]');
it('calls dropdown `show` method on component mount', () => {
it('emits `show` for dropdown on call showDropdown', () => {
createComponent();
wrapper.vm.showDropdown();
expect(showDropdown).toHaveBeenCalled();
expect(findDropdown().emitted('show')).toBeUndefined();
});
it('emits `setLabels` event on dropdown hide', () => {

View file

@ -128,6 +128,13 @@ describe('LabelsSelectRoot', () => {
it('emits `updateSelectedLabels` event on dropdown contents `setLabels` event if there are labels to update', async () => {
const label = { id: 'gid://gitlab/ProjectLabel/1' };
createComponent();
wrapper.vm.$refs.dropdownContents = {
showDropdown: jest.fn(),
};
const showSpy = jest.spyOn(wrapper.vm.$refs.dropdownContents, 'showDropdown');
findDropdownContents().vm.$refs.dropdown = {
show: jest.fn(),
};
await waitForPromises();
expandDropdown();
@ -135,5 +142,6 @@ describe('LabelsSelectRoot', () => {
findDropdownContents().vm.$emit('setLabels', [label]);
expect(wrapper.emitted('updateSelectedLabels')).toEqual([[[label]]]);
expect(showSpy).toHaveBeenCalled();
});
});

View file

@ -71,7 +71,7 @@ RSpec.describe Repository do
let(:feature_flag) { true }
before do
stub_feature_flags(gitaly_tags_finder: feature_flag)
stub_feature_flags(tags_finder_gitaly: feature_flag)
end
context 'name_desc' do