Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
7fd2c75797
commit
a4df3f0dbb
33 changed files with 214 additions and 115 deletions
|
@ -126,6 +126,8 @@
|
||||||
|
|
||||||
.frontend-dependency-patterns: &frontend-dependency-patterns
|
.frontend-dependency-patterns: &frontend-dependency-patterns
|
||||||
- "{package.json,yarn.lock}"
|
- "{package.json,yarn.lock}"
|
||||||
|
- "config/webpack.config.js"
|
||||||
|
- "config/helpers/*.js"
|
||||||
|
|
||||||
.frontend-patterns: &frontend-patterns
|
.frontend-patterns: &frontend-patterns
|
||||||
- "{package.json,yarn.lock}"
|
- "{package.json,yarn.lock}"
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
b3a047a5626ff654ad998dd7a94c6a51624f54b4
|
2b34fc78dfb8e7f55f7f2fc30602381b43c54fc3
|
||||||
|
|
|
@ -39,50 +39,51 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
search: '',
|
search: '',
|
||||||
participants: [],
|
issueParticipants: [],
|
||||||
selected: [],
|
selected: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
apollo: {
|
apollo: {
|
||||||
participants: {
|
issueParticipants: {
|
||||||
query() {
|
query: getIssueParticipants,
|
||||||
return this.isSearchEmpty ? getIssueParticipants : searchUsers;
|
|
||||||
},
|
|
||||||
variables() {
|
variables() {
|
||||||
if (this.isSearchEmpty) {
|
|
||||||
return {
|
return {
|
||||||
id: `gid://gitlab/Issue/${this.activeIssue.iid}`,
|
id: `gid://gitlab/Issue/${this.activeIssue.iid}`,
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
|
update(data) {
|
||||||
|
return data.issue?.participants?.nodes || [];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
searchUsers: {
|
||||||
|
query: searchUsers,
|
||||||
|
variables() {
|
||||||
return {
|
return {
|
||||||
search: this.search,
|
search: this.search,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
update(data) {
|
update: (data) => data.users?.nodes || [],
|
||||||
if (this.isSearchEmpty) {
|
skip() {
|
||||||
return data.issue?.participants?.nodes || [];
|
return this.isSearchEmpty;
|
||||||
}
|
|
||||||
|
|
||||||
return data.users?.nodes || [];
|
|
||||||
},
|
|
||||||
debounce() {
|
|
||||||
const { noSearchDelay, searchDelay } = this.$options;
|
|
||||||
|
|
||||||
return this.isSearchEmpty ? noSearchDelay : searchDelay;
|
|
||||||
},
|
},
|
||||||
|
debounce: 250,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['activeIssue']),
|
...mapGetters(['activeIssue']),
|
||||||
...mapState(['isSettingAssignees']),
|
...mapState(['isSettingAssignees']),
|
||||||
|
participants() {
|
||||||
|
return this.isSearchEmpty ? this.issueParticipants : this.searchUsers;
|
||||||
|
},
|
||||||
assigneeText() {
|
assigneeText() {
|
||||||
return n__('Assignee', '%d Assignees', this.selected.length);
|
return n__('Assignee', '%d Assignees', this.selected.length);
|
||||||
},
|
},
|
||||||
unSelectedFiltered() {
|
unSelectedFiltered() {
|
||||||
return this.participants.filter(({ username }) => {
|
return (
|
||||||
|
this.participants?.filter(({ username }) => {
|
||||||
return !this.selectedUserNames.includes(username);
|
return !this.selectedUserNames.includes(username);
|
||||||
});
|
}) || []
|
||||||
|
);
|
||||||
},
|
},
|
||||||
selectedIsEmpty() {
|
selectedIsEmpty() {
|
||||||
return this.selected.length === 0;
|
return this.selected.length === 0;
|
||||||
|
@ -96,6 +97,11 @@ export default {
|
||||||
currentUser() {
|
currentUser() {
|
||||||
return gon?.current_username;
|
return gon?.current_username;
|
||||||
},
|
},
|
||||||
|
isLoading() {
|
||||||
|
return (
|
||||||
|
this.$apollo.queries.issueParticipants?.loading || this.$apollo.queries.searchUsers?.loading
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.selected = cloneDeep(this.activeIssue.assignees);
|
this.selected = cloneDeep(this.activeIssue.assignees);
|
||||||
|
@ -147,7 +153,7 @@ export default {
|
||||||
<gl-search-box-by-type v-model.trim="search" />
|
<gl-search-box-by-type v-model.trim="search" />
|
||||||
</template>
|
</template>
|
||||||
<template #items>
|
<template #items>
|
||||||
<gl-loading-icon v-if="$apollo.queries.participants.loading" size="lg" />
|
<gl-loading-icon v-if="isLoading" size="lg" />
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<gl-dropdown-item
|
<gl-dropdown-item
|
||||||
:is-checked="selectedIsEmpty"
|
:is-checked="selectedIsEmpty"
|
||||||
|
|
|
@ -118,12 +118,10 @@ export default {
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="gl-mt-5">
|
|
||||||
<gl-search-box-by-type
|
<gl-search-box-by-type
|
||||||
:value="searchTerm"
|
:value="searchTerm"
|
||||||
:debounce="$options.TYPING_DELAY"
|
:debounce="$options.TYPING_DELAY"
|
||||||
:placeholder="__('Search settings')"
|
:placeholder="__('Search settings')"
|
||||||
@input="search"
|
@input="search"
|
||||||
/>
|
/>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
- container_class = local_assigns.fetch(:container_class, 'gl-mt-5')
|
||||||
|
|
||||||
- if Feature.enabled?(:search_settings_in_page, @project, default_enabled: false)
|
- if Feature.enabled?(:search_settings_in_page, @project, default_enabled: false)
|
||||||
|
%div{ class: container_class }
|
||||||
.js-search-settings-app
|
.js-search-settings-app
|
||||||
|
%input.gl-form-input.form-control{ type: "text", placeholder: _("Search settings"), aria_label: _("Search settings"), disabled: true }
|
||||||
|
|
|
@ -8,7 +8,9 @@ const log = (msg, ...rest) => console.log(`IncrementalWebpackCompiler: ${msg}`,
|
||||||
const TIMEOUT = 5000;
|
const TIMEOUT = 5000;
|
||||||
|
|
||||||
class NoopCompiler {
|
class NoopCompiler {
|
||||||
enabled = false;
|
constructor() {
|
||||||
|
this.enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
filterEntryPoints(entryPoints) {
|
filterEntryPoints(entryPoints) {
|
||||||
return entryPoints;
|
return entryPoints;
|
||||||
|
@ -20,8 +22,6 @@ class NoopCompiler {
|
||||||
}
|
}
|
||||||
|
|
||||||
class IncrementalWebpackCompiler extends NoopCompiler {
|
class IncrementalWebpackCompiler extends NoopCompiler {
|
||||||
enabled = true;
|
|
||||||
|
|
||||||
constructor(historyFilePath) {
|
constructor(historyFilePath) {
|
||||||
super();
|
super();
|
||||||
this.history = {};
|
this.history = {};
|
||||||
|
@ -33,6 +33,7 @@ class IncrementalWebpackCompiler extends NoopCompiler {
|
||||||
]);
|
]);
|
||||||
this.historyFilePath = historyFilePath;
|
this.historyFilePath = historyFilePath;
|
||||||
this.loadFromHistory();
|
this.loadFromHistory();
|
||||||
|
this.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
filterEntryPoints(entrypoints) {
|
filterEntryPoints(entrypoints) {
|
||||||
|
|
|
@ -64,9 +64,10 @@ Repository storage paths:
|
||||||
GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell
|
GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell
|
||||||
```
|
```
|
||||||
|
|
||||||
## Show GitLab license information **(STARTER ONLY)**
|
## Show GitLab license information **(PREMIUM SELF)**
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20501) in GitLab Starter 12.6.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20501) in GitLab 12.6.
|
||||||
|
> - [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
This command shows information about your [GitLab license](../../user/admin_area/license.md) and
|
This command shows information about your [GitLab license](../../user/admin_area/license.md) and
|
||||||
how many seats are used. It is only available on GitLab Enterprise
|
how many seats are used. It is only available on GitLab Enterprise
|
||||||
|
|
|
@ -1983,7 +1983,7 @@ work.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -47,7 +47,7 @@ You can also optionally configure GitLab to use an [external PostgreSQL service]
|
||||||
or an [external object storage service](../object_storage.md) for added
|
or an [external object storage service](../object_storage.md) for added
|
||||||
performance and reliability at an increased complexity cost.
|
performance and reliability at an increased complexity cost.
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -1983,7 +1983,7 @@ work.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -932,7 +932,7 @@ functioning backups is encountered.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -1676,7 +1676,7 @@ work.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -1983,7 +1983,7 @@ work.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -1675,7 +1675,7 @@ work.
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Configure Advanced Search **(STARTER ONLY)**
|
## Configure Advanced Search **(PREMIUM SELF)**
|
||||||
|
|
||||||
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
You can leverage Elasticsearch and [enable Advanced Search](../../integration/elasticsearch.md)
|
||||||
for faster, more advanced code search across your entire GitLab instance.
|
for faster, more advanced code search across your entire GitLab instance.
|
||||||
|
|
|
@ -102,7 +102,7 @@ this can be an optimal solution if you don't have strict requirements.
|
||||||
[Automated backups](../../raketasks/backup_restore.md#configuring-cron-to-make-daily-backups)
|
[Automated backups](../../raketasks/backup_restore.md#configuring-cron-to-make-daily-backups)
|
||||||
is the least complex to setup. This provides a point-in-time recovery of a predetermined schedule.
|
is the least complex to setup. This provides a point-in-time recovery of a predetermined schedule.
|
||||||
|
|
||||||
### Traffic load balancer **(STARTER ONLY)**
|
### Traffic load balancer **(PREMIUM SELF)**
|
||||||
|
|
||||||
> - Level of complexity: **Medium**
|
> - Level of complexity: **Medium**
|
||||||
> - Required domain knowledge: HAProxy, shared storage, distributed systems
|
> - Required domain knowledge: HAProxy, shared storage, distributed systems
|
||||||
|
@ -124,7 +124,7 @@ to the default installation:
|
||||||
For more details on how to configure a traffic load balancer with GitLab, you can refer
|
For more details on how to configure a traffic load balancer with GitLab, you can refer
|
||||||
to any of the [available reference architectures](#available-reference-architectures) with more than 1,000 users.
|
to any of the [available reference architectures](#available-reference-architectures) with more than 1,000 users.
|
||||||
|
|
||||||
### Zero downtime updates **(STARTER ONLY)**
|
### Zero downtime updates **(PREMIUM SELF)**
|
||||||
|
|
||||||
> - Level of complexity: **Medium**
|
> - Level of complexity: **Medium**
|
||||||
> - Required domain knowledge: PostgreSQL, HAProxy, shared storage, distributed systems
|
> - Required domain knowledge: PostgreSQL, HAProxy, shared storage, distributed systems
|
||||||
|
|
|
@ -4,7 +4,7 @@ group: Global Search
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Elasticsearch knowledge **(STARTER ONLY)**
|
# Elasticsearch knowledge **(PREMIUM SELF)**
|
||||||
|
|
||||||
This area is to maintain a compendium of useful information when working with Elasticsearch.
|
This area is to maintain a compendium of useful information when working with Elasticsearch.
|
||||||
|
|
||||||
|
|
|
@ -603,7 +603,7 @@ You can specify a different Git repository by providing it as an extra parameter
|
||||||
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production
|
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production
|
||||||
```
|
```
|
||||||
|
|
||||||
### Install GitLab-Elasticsearch-indexer on Enterprise Edition **(STARTER ONLY)**
|
### Install GitLab-Elasticsearch-indexer on Enterprise Edition **(PREMIUM SELF)**
|
||||||
|
|
||||||
GitLab-Elasticsearch-Indexer uses [GNU Make](https://www.gnu.org/software/make/). The
|
GitLab-Elasticsearch-Indexer uses [GNU Make](https://www.gnu.org/software/make/). The
|
||||||
following command-line installs GitLab-Elasticsearch-Indexer in `/home/git/gitlab-elasticsearch-indexer`
|
following command-line installs GitLab-Elasticsearch-Indexer in `/home/git/gitlab-elasticsearch-indexer`
|
||||||
|
|
|
@ -5,10 +5,11 @@ group: Global Search
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Elasticsearch integration **(STARTER ONLY)**
|
# Elasticsearch integration **(PREMIUM SELF)**
|
||||||
|
|
||||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109 "Elasticsearch Merge Request") in GitLab [Starter](https://about.gitlab.com/pricing/) 8.4.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109 "Elasticsearch Merge Request") in GitLab 8.4.
|
||||||
> - Support for [Amazon Elasticsearch](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html) was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1305) in GitLab [Starter](https://about.gitlab.com/pricing/) 9.0.
|
> - Support for [Amazon Elasticsearch](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html) was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1305) in GitLab [Starter](https://about.gitlab.com/pricing/) 9.0.
|
||||||
|
> - [Moved](../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
This document describes how to enable Advanced Search. After
|
This document describes how to enable Advanced Search. After
|
||||||
Advanced Search is enabled, you'll have the benefit of fast search response times
|
Advanced Search is enabled, you'll have the benefit of fast search response times
|
||||||
|
|
|
@ -24,7 +24,7 @@ The following are available Rake tasks:
|
||||||
| [Clean up](cleanup.md) | Clean up unneeded items from GitLab instances. |
|
| [Clean up](cleanup.md) | Clean up unneeded items from GitLab instances. |
|
||||||
| [Development](../development/rake_tasks.md) | Tasks for GitLab contributors. |
|
| [Development](../development/rake_tasks.md) | Tasks for GitLab contributors. |
|
||||||
| [Doctor tasks](../administration/raketasks/doctor.md) | Checks for data integrity issues. |
|
| [Doctor tasks](../administration/raketasks/doctor.md) | Checks for data integrity issues. |
|
||||||
| [Elasticsearch](../integration/elasticsearch.md#gitlab-advanced-search-rake-tasks) **(STARTER ONLY)** | Maintain Elasticsearch in a GitLab instance. |
|
| [Elasticsearch](../integration/elasticsearch.md#gitlab-advanced-search-rake-tasks) **(PREMIUM SELF)** | Maintain Elasticsearch in a GitLab instance. |
|
||||||
| [Enable namespaces](features.md) | Enable usernames and namespaces for user projects. |
|
| [Enable namespaces](features.md) | Enable usernames and namespaces for user projects. |
|
||||||
| [General maintenance](../administration/raketasks/maintenance.md) | General maintenance and self-check tasks. |
|
| [General maintenance](../administration/raketasks/maintenance.md) | General maintenance and self-check tasks. |
|
||||||
| [Geo maintenance](../administration/raketasks/geo.md) **(PREMIUM SELF)** | [Geo](../administration/geo/index.md)-related maintenance. |
|
| [Geo maintenance](../administration/raketasks/geo.md) **(PREMIUM SELF)** | [Geo](../administration/geo/index.md)-related maintenance. |
|
||||||
|
|
|
@ -63,6 +63,7 @@ the tiers are no longer mentioned in GitLab documentation:
|
||||||
- [`audit_json.log`](../administration/logs.md#audit_jsonlog) (specific entries)
|
- [`audit_json.log`](../administration/logs.md#audit_jsonlog) (specific entries)
|
||||||
- [`elasticsearch.log`](../administration/logs.md#elasticsearchlog)
|
- [`elasticsearch.log`](../administration/logs.md#elasticsearchlog)
|
||||||
- Merge requests:
|
- Merge requests:
|
||||||
|
- [Full code quality reports in the code quality tab](../user/project/merge_requests/code_quality.md#code-quality-reports)
|
||||||
- [Merge request approvals](../user/project/merge_requests/merge_request_approvals.md)
|
- [Merge request approvals](../user/project/merge_requests/merge_request_approvals.md)
|
||||||
- [Multiple assignees](../user/project/merge_requests/getting_started.md#multiple-assignees)
|
- [Multiple assignees](../user/project/merge_requests/getting_started.md#multiple-assignees)
|
||||||
- [Approval Rule information for Reviewers](../user/project/merge_requests/getting_started.md#approval-rule-information-for-reviewers), and [enabling or disabling it](../user/project/merge_requests/getting_started.md#enable-or-disable-approval-rule-information-for-reviewers)
|
- [Approval Rule information for Reviewers](../user/project/merge_requests/getting_started.md#approval-rule-information-for-reviewers), and [enabling or disabling it](../user/project/merge_requests/getting_started.md#enable-or-disable-approval-rule-information-for-reviewers)
|
||||||
|
|
|
@ -96,7 +96,7 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
|
||||||
sudo -u git -H make
|
sudo -u git -H make
|
||||||
```
|
```
|
||||||
|
|
||||||
### 8. Install/Update `gitlab-elasticsearch-indexer` **(STARTER ONLY)**
|
### 8. Install/Update `gitlab-elasticsearch-indexer` **(PREMIUM SELF)**
|
||||||
|
|
||||||
Please follow the [install instruction](../integration/elasticsearch.md#installing-elasticsearch).
|
Please follow the [install instruction](../integration/elasticsearch.md#installing-elasticsearch).
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@ sudo -u git -H bundle exec rake yarn:install gitlab:assets:clean gitlab:assets:c
|
||||||
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
|
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Install `gitlab-elasticsearch-indexer` **(STARTER ONLY)**
|
### 4. Install `gitlab-elasticsearch-indexer` **(PREMIUM SELF)**
|
||||||
|
|
||||||
Please follow the [install instruction](../integration/elasticsearch.md#installing-elasticsearch).
|
Please follow the [install instruction](../integration/elasticsearch.md#installing-elasticsearch).
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
||||||
type: reference, howto
|
type: reference, howto
|
||||||
---
|
---
|
||||||
|
|
||||||
# Code Quality
|
# Code Quality **(FREE)**
|
||||||
|
|
||||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1984) in [GitLab Starter](https://about.gitlab.com/pricing/) 9.3.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1984) in GitLab 9.3.
|
||||||
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) in 13.2.
|
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) in 13.2.
|
||||||
|
|
||||||
Ensuring your project's code stays simple, readable and easy to contribute to can be problematic. With the help of [GitLab CI/CD](../../../ci/README.md), you can analyze your
|
Ensuring your project's code stays simple, readable and easy to contribute to can be problematic. With the help of [GitLab CI/CD](../../../ci/README.md), you can analyze your
|
||||||
|
@ -28,7 +28,7 @@ Code Quality:
|
||||||
|
|
||||||
## Code Quality Widget
|
## Code Quality Widget
|
||||||
|
|
||||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1984) in [GitLab Starter](https://about.gitlab.com/pricing/) 9.3.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1984) in GitLab 9.3.
|
||||||
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) in 13.2.
|
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) in 13.2.
|
||||||
|
|
||||||
Going a step further, GitLab can show the Code Quality report right
|
Going a step further, GitLab can show the Code Quality report right
|
||||||
|
@ -358,7 +358,7 @@ After the Code Quality job completes:
|
||||||
[downloadable artifact](../../../ci/pipelines/job_artifacts.md#downloading-artifacts)
|
[downloadable artifact](../../../ci/pipelines/job_artifacts.md#downloading-artifacts)
|
||||||
for the `code_quality` job.
|
for the `code_quality` job.
|
||||||
- The full list of code quality violations generated by a pipeline is shown in the
|
- The full list of code quality violations generated by a pipeline is shown in the
|
||||||
Code Quality tab of the Pipeline Details page. **(STARTER)**
|
Code Quality tab of the Pipeline Details page. **(PREMIUM)**
|
||||||
|
|
||||||
### Generating an HTML report
|
### Generating an HTML report
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,10 @@ info: "To determine the technical writer assigned to the Stage/Group associated
|
||||||
type: reference
|
type: reference
|
||||||
---
|
---
|
||||||
|
|
||||||
# Advanced Search **(STARTER)**
|
# Advanced Search **(PREMIUM)**
|
||||||
|
|
||||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109) in GitLab [Starter](https://about.gitlab.com/pricing/) 8.4.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109) in GitLab 8.4.
|
||||||
|
> - [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
Advanced Search (powered by Elasticsearch) is enabled for Bronze and above on GitLab.com since 2020-07-10.
|
Advanced Search (powered by Elasticsearch) is enabled for Bronze and above on GitLab.com since 2020-07-10.
|
||||||
|
|
|
@ -5,12 +5,10 @@ info: "To determine the technical writer assigned to the Stage/Group associated
|
||||||
type: reference
|
type: reference
|
||||||
---
|
---
|
||||||
|
|
||||||
# Advanced Search Syntax **(STARTER)**
|
# Advanced Search Syntax **(PREMIUM)**
|
||||||
|
|
||||||
> - Introduced in [GitLab Enterprise Starter](https://about.gitlab.com/pricing/) 9.2
|
> - Introduced in [GitLab](https://about.gitlab.com/pricing/) 9.2.
|
||||||
|
> - [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
NOTE:
|
|
||||||
Advanced Search (powered by Elasticsearch) is enabled for Bronze and above on GitLab.com since 2020-07-10.
|
|
||||||
|
|
||||||
Use advanced queries for more targeted search results.
|
Use advanced queries for more targeted search results.
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ in the search field in the upper right corner:
|
||||||
|
|
||||||
> - Filtering by Epics was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/195704) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.9.
|
> - Filtering by Epics was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/195704) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.9.
|
||||||
> - Filtering by child Epics was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9029) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
|
> - Filtering by child Epics was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9029) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
|
||||||
> - Filtering by Iterations was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118742) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.6.
|
> - Filtering by Iterations was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118742) in GitLab 13.6. [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
Follow these steps to filter the **Issues** and **Merge Requests** list pages in projects and
|
Follow these steps to filter the **Issues** and **Merge Requests** list pages in projects and
|
||||||
groups:
|
groups:
|
||||||
|
@ -99,18 +99,20 @@ You can filter the **Issues** list to individual instances by their ID. For exam
|
||||||
|
|
||||||
![filter issues by specific id](img/issue_search_by_id.png)
|
![filter issues by specific id](img/issue_search_by_id.png)
|
||||||
|
|
||||||
### Filtering merge requests by approvers **(STARTER)**
|
### Filtering merge requests by approvers **(PREMIUM)**
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9468) in [GitLab Starter](https://about.gitlab.com/pricing/) 11.9.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9468) in GitLab 11.9.
|
||||||
|
> - [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
To filter merge requests by an individual approver, you can type (or select from
|
To filter merge requests by an individual approver, you can type (or select from
|
||||||
the dropdown) **Approver** and select the user.
|
the dropdown) **Approver** and select the user.
|
||||||
|
|
||||||
![Filter MRs by an approver](img/filter_approver_merge_requests.png)
|
![Filter MRs by an approver](img/filter_approver_merge_requests.png)
|
||||||
|
|
||||||
### Filtering merge requests by "approved by" **(STARTER)**
|
### Filtering merge requests by "approved by" **(PREMIUM)**
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30335) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.0.
|
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30335) in GitLab 13.0.
|
||||||
|
> - [Moved](../../subscriptions/bronze_starter.md) to GitLab Premium in 13.9.
|
||||||
|
|
||||||
To filter merge requests already approved by a specific individual, you can type (or select from
|
To filter merge requests already approved by a specific individual, you can type (or select from
|
||||||
the dropdown) **Approved-By** and select the user.
|
the dropdown) **Approved-By** and select the user.
|
||||||
|
@ -291,14 +293,14 @@ redirected to the commit result and given the option to return to the search res
|
||||||
|
|
||||||
![project SHA search redirect](img/project_search_sha_redirect.png)
|
![project SHA search redirect](img/project_search_sha_redirect.png)
|
||||||
|
|
||||||
## Advanced Search **(STARTER)**
|
## Advanced Search **(PREMIUM)**
|
||||||
|
|
||||||
Leverage Elasticsearch for faster, more advanced code search across your entire
|
Leverage Elasticsearch for faster, more advanced code search across your entire
|
||||||
GitLab instance.
|
GitLab instance.
|
||||||
|
|
||||||
[Learn how to use the Advanced Search.](advanced_global_search.md)
|
[Learn how to use the Advanced Search.](advanced_global_search.md)
|
||||||
|
|
||||||
## Advanced Search Syntax **(STARTER)**
|
## Advanced Search Syntax **(PREMIUM)**
|
||||||
|
|
||||||
Use advanced queries for more targeted search results.
|
Use advanced queries for more targeted search results.
|
||||||
|
|
||||||
|
|
|
@ -7335,6 +7335,9 @@ msgstr ""
|
||||||
msgid "ComplianceFrameworks|There are no compliance frameworks set up yet"
|
msgid "ComplianceFrameworks|There are no compliance frameworks set up yet"
|
||||||
msgstr ""
|
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})"
|
msgid "ComplianceFrameworks|Use %{codeStart}::%{codeEnd} to create a %{linkStart}scoped set%{linkEnd} (eg. %{codeStart}SOX::AWS%{codeEnd})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,98 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
if ENV.key?('RECORD_DEPRECATIONS')
|
|
||||||
require 'deprecation_toolkit'
|
require 'deprecation_toolkit'
|
||||||
require 'deprecation_toolkit/rspec'
|
require 'deprecation_toolkit/rspec'
|
||||||
DeprecationToolkit::Configuration.test_runner = :rspec
|
|
||||||
DeprecationToolkit::Configuration.deprecation_path = 'deprecations'
|
|
||||||
DeprecationToolkit::Configuration.behavior = DeprecationToolkit::Behaviors::Record
|
|
||||||
|
|
||||||
|
module DeprecationToolkitEnv
|
||||||
|
module DeprecationBehaviors
|
||||||
|
class SelectiveRaise
|
||||||
|
attr_reader :disallowed_deprecations_proc
|
||||||
|
|
||||||
|
class RaiseDisallowedDeprecation < StandardError
|
||||||
|
def initialize(test, current_deprecations)
|
||||||
|
message = <<~EOF
|
||||||
|
Disallowed deprecations detected while running test #{test}:
|
||||||
|
|
||||||
|
#{current_deprecations.deprecations.join("\n")}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
super(message)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize(disallowed_deprecations_proc)
|
||||||
|
@disallowed_deprecations_proc = disallowed_deprecations_proc
|
||||||
|
end
|
||||||
|
|
||||||
|
# Note: trigger does not get called if the current_deprecations matches recorded_deprecations
|
||||||
|
# See https://github.com/Shopify/deprecation_toolkit/blob/2398f38acb62220fb79a6cd720f61d9cea26bc06/lib/deprecation_toolkit/test_triggerer.rb#L8-L11
|
||||||
|
def trigger(test, current_deprecations, recorded_deprecations)
|
||||||
|
if selected_for_raise?(current_deprecations)
|
||||||
|
raise RaiseDisallowedDeprecation.new(test, current_deprecations)
|
||||||
|
elsif ENV['RECORD_DEPRECATIONS']
|
||||||
|
record(test, current_deprecations, recorded_deprecations)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def selected_for_raise?(current_deprecations)
|
||||||
|
disallowed_deprecations_proc.call(current_deprecations.deprecations_without_stacktrace)
|
||||||
|
end
|
||||||
|
|
||||||
|
def record(test, current_deprecations, recorded_deprecations)
|
||||||
|
::DeprecationToolkit::Behaviors::Record.trigger(test, current_deprecations, recorded_deprecations)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Taken from https://github.com/jeremyevans/ruby-warning/blob/1.1.0/lib/warning.rb#L18
|
||||||
|
def self.kwargs_warning
|
||||||
|
%r{warning: (?:Using the last argument (?:for `.+' )?as keyword parameters is deprecated; maybe \*\* should be added to the call|Passing the keyword argument (?:for `.+' )?as the last hash parameter is deprecated|Splitting the last argument (?:for `.+' )?into positional and keyword parameters is deprecated|The called method (?:`.+' )?is defined here)\n\z}
|
||||||
|
end
|
||||||
|
|
||||||
|
# Allow these Gem paths to trigger keyword warnings as we upgrade these gems
|
||||||
|
# one by one
|
||||||
|
def self.allowed_kwarg_warning_paths
|
||||||
|
%w[
|
||||||
|
ee/lib/ee/gitlab/usage_data.rb
|
||||||
|
spec/lib/gitlab/utils/usage_data_spec.rb
|
||||||
|
spec/support/gitlab_experiment.rb
|
||||||
|
spec/support/helpers/next_instance_of.rb
|
||||||
|
rspec-mocks-3.10.0/lib/rspec/mocks/message_expectation.rb
|
||||||
|
activerecord-6.0.3.4/lib/active_record/migration.rb
|
||||||
|
devise-4.7.3/lib/devise/test/controller_helpers.rb
|
||||||
|
attr_encrypted-3.1.0/lib/attr_encrypted/adapters/active_record.rb
|
||||||
|
rspec-mocks-3.10.0/lib/rspec/mocks/message_expectation.rb
|
||||||
|
rspec-expectations-3.10.0/lib/rspec/matchers/built_in/has.rb
|
||||||
|
grape-1.5.1/lib/grape/middleware/stack.rb
|
||||||
|
grape-1.5.1/lib/grape/validations/validators/coerce.rb
|
||||||
|
grape_logging-1.8.3/lib/grape_logging/middleware/request_logger.rb
|
||||||
|
activesupport-6.0.3.4/lib/active_support/cache.rb
|
||||||
|
factory_bot-6.1.0/lib/factory_bot/decorator.rb
|
||||||
|
doorkeeper-5.4.0/lib/doorkeeper/models/access_token_mixin.rb
|
||||||
|
rouge-3.26.0/lib/rouge/formatter.rb
|
||||||
|
batch-loader-1.4.0/lib/batch_loader/graphql.rb
|
||||||
|
carrierwave-1.3.1/lib/carrierwave/sanitized_file.rb
|
||||||
|
activerecord-6.0.3.4/lib/active_record/relation.rb
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.configure!
|
||||||
# Enable ruby deprecations for keywords, it's suppressed by default in Ruby 2.7.2
|
# Enable ruby deprecations for keywords, it's suppressed by default in Ruby 2.7.2
|
||||||
Warning[:deprecated] = true
|
Warning[:deprecated] = true
|
||||||
|
|
||||||
kwargs_warnings = [
|
DeprecationToolkit::Configuration.test_runner = :rspec
|
||||||
# Taken from https://github.com/jeremyevans/ruby-warning/blob/1.1.0/lib/warning.rb#L18
|
DeprecationToolkit::Configuration.deprecation_path = 'deprecations'
|
||||||
%r{warning: (?:Using the last argument (?:for `.+' )?as keyword parameters is deprecated; maybe \*\* should be added to the call|Passing the keyword argument (?:for `.+' )?as the last hash parameter is deprecated|Splitting the last argument (?:for `.+' )?into positional and keyword parameters is deprecated|The called method (?:`.+' )?is defined here)\n\z}
|
DeprecationToolkit::Configuration.warnings_treated_as_deprecation = [kwargs_warning]
|
||||||
]
|
|
||||||
DeprecationToolkit::Configuration.warnings_treated_as_deprecation = kwargs_warnings
|
disallowed_deprecations = -> (deprecations) do
|
||||||
|
deprecations.any? do |deprecation|
|
||||||
|
kwargs_warning.match?(deprecation) &&
|
||||||
|
allowed_kwarg_warning_paths.none? { |path| deprecation.include?(path) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
DeprecationToolkit::Configuration.behavior = DeprecationBehaviors::SelectiveRaise.new(disallowed_deprecations)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -38,7 +38,7 @@ describe('BoardCardAssigneeDropdown', () => {
|
||||||
return {
|
return {
|
||||||
search,
|
search,
|
||||||
selected: [],
|
selected: [],
|
||||||
participants,
|
issueParticipants: participants,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
store,
|
store,
|
||||||
|
@ -49,7 +49,7 @@ describe('BoardCardAssigneeDropdown', () => {
|
||||||
mocks: {
|
mocks: {
|
||||||
$apollo: {
|
$apollo: {
|
||||||
queries: {
|
queries: {
|
||||||
participants: {
|
searchUsers: {
|
||||||
loading,
|
loading,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -70,7 +70,6 @@ describe('BoardCardAssigneeDropdown', () => {
|
||||||
return {
|
return {
|
||||||
search,
|
search,
|
||||||
selected: [],
|
selected: [],
|
||||||
participants,
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
store,
|
store,
|
||||||
|
@ -256,17 +255,15 @@ describe('BoardCardAssigneeDropdown', () => {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
describe('when participants is loading', () => {
|
describe('when searching users is loading', () => {
|
||||||
beforeEach(() => {
|
|
||||||
createComponent('', true);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('finds a loading icon in the dropdown', () => {
|
it('finds a loading icon in the dropdown', () => {
|
||||||
|
createComponent('test', true);
|
||||||
|
|
||||||
expect(findLoadingIcon().exists()).toBe(true);
|
expect(findLoadingIcon().exists()).toBe(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when participants is loading is false', () => {
|
describe('when participants loading is false', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
createComponent();
|
createComponent();
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,6 +13,7 @@ end
|
||||||
Warning[:deprecated] = true unless ENV.key?('SILENCE_DEPRECATIONS')
|
Warning[:deprecated] = true unless ENV.key?('SILENCE_DEPRECATIONS')
|
||||||
|
|
||||||
require './spec/deprecation_toolkit_env'
|
require './spec/deprecation_toolkit_env'
|
||||||
|
DeprecationToolkitEnv.configure!
|
||||||
|
|
||||||
require './spec/simplecov_env'
|
require './spec/simplecov_env'
|
||||||
SimpleCovEnv.start!
|
SimpleCovEnv.start!
|
||||||
|
@ -174,6 +175,7 @@ RSpec.configure do |config|
|
||||||
if ENV['CI'] || ENV['RETRIES']
|
if ENV['CI'] || ENV['RETRIES']
|
||||||
# This includes the first try, i.e. tests will be run 4 times before failing.
|
# This includes the first try, i.e. tests will be run 4 times before failing.
|
||||||
config.default_retry_count = ENV.fetch('RETRIES', 3).to_i + 1
|
config.default_retry_count = ENV.fetch('RETRIES', 3).to_i + 1
|
||||||
|
config.exceptions_to_hard_fail = [DeprecationToolkitEnv::DeprecationBehaviors::SelectiveRaise::RaiseDisallowedDeprecation]
|
||||||
end
|
end
|
||||||
|
|
||||||
if ENV['FLAKY_RSPEC_GENERATE_REPORT']
|
if ENV['FLAKY_RSPEC_GENERATE_REPORT']
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
RSpec.shared_examples 'handles repository moves' do
|
RSpec.shared_examples 'handles repository moves' do |check_worker: true|
|
||||||
describe 'associations' do
|
describe 'associations' do
|
||||||
it { is_expected.to belong_to(:container) }
|
it { is_expected.to belong_to(:container) }
|
||||||
end
|
end
|
||||||
|
@ -33,7 +33,7 @@ RSpec.shared_examples 'handles repository moves' do
|
||||||
subject { build(repository_storage_factory_key, container: container) }
|
subject { build(repository_storage_factory_key, container: container) }
|
||||||
|
|
||||||
it "does not allow the container to be read-only on create" do
|
it "does not allow the container to be read-only on create" do
|
||||||
container.update!(repository_read_only: true)
|
container.set_repository_read_only!
|
||||||
|
|
||||||
expect(subject).not_to be_valid
|
expect(subject).not_to be_valid
|
||||||
expect(subject.errors[error_key].first).to match(/is read only/)
|
expect(subject.errors[error_key].first).to match(/is read only/)
|
||||||
|
@ -61,6 +61,7 @@ RSpec.shared_examples 'handles repository moves' do
|
||||||
context 'when in the default state' do
|
context 'when in the default state' do
|
||||||
subject(:storage_move) { create(repository_storage_factory_key, container: container, destination_storage_name: 'test_second_storage') }
|
subject(:storage_move) { create(repository_storage_factory_key, container: container, destination_storage_name: 'test_second_storage') }
|
||||||
|
|
||||||
|
if check_worker
|
||||||
context 'and transits to scheduled' do
|
context 'and transits to scheduled' do
|
||||||
it 'triggers the corresponding repository storage worker' do
|
it 'triggers the corresponding repository storage worker' do
|
||||||
expect(repository_storage_worker).to receive(:perform_async).with(container.id, 'test_second_storage', storage_move.id)
|
expect(repository_storage_worker).to receive(:perform_async).with(container.id, 'test_second_storage', storage_move.id)
|
||||||
|
@ -81,6 +82,7 @@ RSpec.shared_examples 'handles repository moves' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'and transits to started' do
|
context 'and transits to started' do
|
||||||
it 'does not allow the transition' do
|
it 'does not allow the transition' do
|
||||||
|
|
|
@ -4,7 +4,7 @@ RSpec.shared_examples 'timebox(milestone or iteration) resource events creator'
|
||||||
let_it_be(:user) { create(:user) }
|
let_it_be(:user) { create(:user) }
|
||||||
|
|
||||||
context 'when milestone/iteration is added' do
|
context 'when milestone/iteration is added' do
|
||||||
let(:service) { described_class.new(resource, user, add_timebox_args) }
|
let(:service) { described_class.new(resource, user, **add_timebox_args) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
set_timebox(timebox_event_class, timebox)
|
set_timebox(timebox_event_class, timebox)
|
||||||
|
@ -18,7 +18,7 @@ RSpec.shared_examples 'timebox(milestone or iteration) resource events creator'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when milestone/iteration is removed' do
|
context 'when milestone/iteration is removed' do
|
||||||
let(:service) { described_class.new(resource, user, remove_timebox_args) }
|
let(:service) { described_class.new(resource, user, **remove_timebox_args) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
set_timebox(timebox_event_class, nil)
|
set_timebox(timebox_event_class, nil)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require 'rake_helper'
|
require 'rake_helper'
|
||||||
|
|
||||||
RSpec.describe 'gitlab:pages:migrate_legacy_storagerake task' do
|
RSpec.describe 'gitlab:pages:migrate_legacy_storagerake task', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/300123' do
|
||||||
before(:context) do
|
before(:context) do
|
||||||
Rake.application.rake_require 'tasks/gitlab/pages'
|
Rake.application.rake_require 'tasks/gitlab/pages'
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue