Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
7fbb996fde
commit
bc4b2d8d43
|
|
@ -33,7 +33,7 @@ export default {
|
||||||
i18n: {
|
i18n: {
|
||||||
commitStatSummary: __('Showing %{conflict}'),
|
commitStatSummary: __('Showing %{conflict}'),
|
||||||
resolveInfo: __(
|
resolveInfo: __(
|
||||||
'You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}',
|
'You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}.',
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -148,10 +148,10 @@ export default {
|
||||||
</gl-button>
|
</gl-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="diff-content diff-wrap-lines">
|
<div class="diff-content diff-wrap-lines gl-rounded-bottom-base">
|
||||||
<div
|
<div
|
||||||
v-if="file.resolveMode === 'interactive' && file.type === 'text'"
|
v-if="file.resolveMode === 'interactive' && file.type === 'text'"
|
||||||
class="file-content"
|
class="file-content gl-rounded-bottom-base"
|
||||||
>
|
>
|
||||||
<parallel-conflict-lines v-if="isParallel" :file="file" />
|
<parallel-conflict-lines v-if="isParallel" :file="file" />
|
||||||
<inline-conflict-lines v-else :file="file" />
|
<inline-conflict-lines v-else :file="file" />
|
||||||
|
|
@ -164,8 +164,7 @@ export default {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<div class="resolve-conflicts-form gl-mt-6">
|
||||||
<div class="resolve-conflicts-form">
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<h4 class="gl-mt-0">
|
<h4 class="gl-mt-0">
|
||||||
|
|
@ -180,9 +179,7 @@ export default {
|
||||||
<code>{{ s__('MergeConflict|Use theirs') }}</code>
|
<code>{{ s__('MergeConflict|Use theirs') }}</code>
|
||||||
</template>
|
</template>
|
||||||
<template #branch_name>
|
<template #branch_name>
|
||||||
<a class="ref-name" :href="sourceBranchPath">
|
<a class="ref-name" :href="sourceBranchPath">{{ conflictsData.sourceBranch }}</a>
|
||||||
{{ conflictsData.sourceBranch }}
|
|
||||||
</a>
|
|
||||||
</template>
|
</template>
|
||||||
</gl-sprintf>
|
</gl-sprintf>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -204,7 +201,7 @@ export default {
|
||||||
<gl-button
|
<gl-button
|
||||||
:disabled="!isReadyToCommit"
|
:disabled="!isReadyToCommit"
|
||||||
variant="confirm"
|
variant="confirm"
|
||||||
class="js-submit-button"
|
class="js-submit-button gl-mr-2"
|
||||||
@click="submitResolvedConflicts(resolveConflictsPath)"
|
@click="submitResolvedConflicts(resolveConflictsPath)"
|
||||||
>
|
>
|
||||||
{{ getCommitButtonText }}
|
{{ getCommitButtonText }}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
table.code tr:last-of-type td:last-of-type {
|
table.code tr:last-of-type td:last-of-type {
|
||||||
@include gl-rounded-bottom-right-base();
|
border-bottom-right-radius: $border-radius-default - 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-title,
|
.file-title,
|
||||||
|
|
@ -546,7 +546,7 @@ table.code {
|
||||||
.line_holder:last-of-type {
|
.line_holder:last-of-type {
|
||||||
.diff-td:first-child,
|
.diff-td:first-child,
|
||||||
td:first-child {
|
td:first-child {
|
||||||
border-bottom-left-radius: $border-radius-default;
|
border-bottom-left-radius: $border-radius-default - 1px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
- add_to_breadcrumbs _("Merge requests"), project_merge_requests_path(@project)
|
||||||
|
- add_to_breadcrumbs @merge_request.to_reference, project_merge_request_path(@project, @merge_request)
|
||||||
|
- breadcrumb_title _("Merge conflicts")
|
||||||
- page_title _("Merge Conflicts"), "#{@merge_request.title} (#{@merge_request.to_reference}", _("Merge requests")
|
- page_title _("Merge Conflicts"), "#{@merge_request.title} (#{@merge_request.to_reference}", _("Merge requests")
|
||||||
- add_page_specific_style 'page_bundles/merge_conflicts'
|
- add_page_specific_style 'page_bundles/merge_conflicts'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
name: limited_commit_parser
|
|
||||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117188
|
|
||||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/406461
|
|
||||||
milestone: '15.11'
|
|
||||||
type: development
|
|
||||||
group: group::source code
|
|
||||||
default_enabled: false
|
|
||||||
|
|
@ -3,13 +3,13 @@
|
||||||
#
|
#
|
||||||
- title: "Required Pipeline Configuration is deprecated" # (required) Clearly explain the change, or planned change. For example, "The `confidential` field for a `Note` is deprecated" or "CI/CD job names will be limited to 250 characters."
|
- title: "Required Pipeline Configuration is deprecated" # (required) Clearly explain the change, or planned change. For example, "The `confidential` field for a `Note` is deprecated" or "CI/CD job names will be limited to 250 characters."
|
||||||
announcement_milestone: "15.9" # (required) The milestone when this feature was first announced as deprecated.
|
announcement_milestone: "15.9" # (required) The milestone when this feature was first announced as deprecated.
|
||||||
removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
|
removal_milestone: "17.0" # (required) The milestone when this feature is planned to be removed
|
||||||
breaking_change: true # (required) Change to false if this is not a breaking change.
|
breaking_change: true # (required) Change to false if this is not a breaking change.
|
||||||
reporter: jheimbuck_gl # (required) GitLab username of the person reporting the change
|
reporter: derekferguson # (required) GitLab username of the person reporting the change
|
||||||
stage: Verify # (required) String value of the stage that the feature was created in. e.g., Growth
|
stage: Compliance Management # (required) String value of the stage that the feature was created in. e.g., Growth
|
||||||
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/389467 # (required) Link to the deprecation issue in GitLab
|
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/389467 # (required) Link to the deprecation issue in GitLab
|
||||||
body: | # (required) Do not modify this line, instead modify the lines below.
|
body: | # (required) Do not modify this line, instead modify the lines below.
|
||||||
Required Pipeline Configuration will be removed in the 16.0 release. This impacts self-managed users on the Ultimate license.
|
Required Pipeline Configuration will be removed in the 17.0 release. This impacts self-managed users on the Ultimate license.
|
||||||
|
|
||||||
We recommend replacing this with an alternative [compliance solution](https://docs.gitlab.com/ee/user/group/compliance_frameworks.html#compliance-pipelines)
|
We recommend replacing this with an alternative [compliance solution](https://docs.gitlab.com/ee/user/group/compliance_frameworks.html#compliance-pipelines)
|
||||||
that is available now. We recommend this alternative solution because it provides greater flexibility, allowing required pipelines to be assigned to specific compliance framework labels.
|
that is available now. We recommend this alternative solution because it provides greater flexibility, allowing required pipelines to be assigned to specific compliance framework labels.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddIssuesIncidentTypeTempIndexAsyncDotCom < Gitlab::Database::Migration[2.1]
|
||||||
|
INDEX_NAME = 'tmp_index_issues_on_issue_type_and_id_only_incidents'
|
||||||
|
INCIDENT_ENUM_VALUE = 1
|
||||||
|
|
||||||
|
# TODO: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117728
|
||||||
|
def up
|
||||||
|
prepare_async_index :issues, [:issue_type, :id], name: INDEX_NAME, where: "issue_type = #{INCIDENT_ENUM_VALUE}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
unprepare_async_index :issues, [:issue_type, :id], name: INDEX_NAME
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
253faa0063e11decde1c0aacc1c15cbf3035e533934a6cd1d3da46e5a4a4eae4
|
||||||
|
|
@ -10,9 +10,92 @@ type: reference, api
|
||||||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/3869) in GitLab 14.0, disabled behind the `:ff_external_status_checks` feature flag.
|
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/3869) in GitLab 14.0, disabled behind the `:ff_external_status_checks` feature flag.
|
||||||
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/320783) in GitLab 14.1.
|
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/320783) in GitLab 14.1.
|
||||||
|
|
||||||
|
## Get project external status check services
|
||||||
|
|
||||||
|
You can request information about a project's external status check services using the following endpoint:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
GET /projects/:id/external_status_checks
|
||||||
|
```
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
| Attribute | Type | Required | Description |
|
||||||
|
|---------------------|---------|----------|---------------------|
|
||||||
|
| `id` | integer | yes | ID of a project |
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Compliance Tool",
|
||||||
|
"project_id": 6,
|
||||||
|
"external_url": "https://gitlab.com/example/compliance-tool",
|
||||||
|
"protected_branches": [
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"project_id": 6,
|
||||||
|
"name": "master",
|
||||||
|
"created_at": "2020-10-12T14:04:50.787Z",
|
||||||
|
"updated_at": "2020-10-12T14:04:50.787Z",
|
||||||
|
"code_owner_approval_required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create external status check service
|
||||||
|
|
||||||
|
You can create a new external status check service for a project using the following endpoint:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
POST /projects/:id/external_status_checks
|
||||||
|
```
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
External status checks send information about all applicable merge requests to the
|
||||||
|
defined external service. This includes confidential merge requests.
|
||||||
|
|
||||||
|
| Attribute | Type | Required | Description |
|
||||||
|
|------------------------|------------------|----------|------------------------------------------------|
|
||||||
|
| `id` | integer | yes | ID of a project |
|
||||||
|
| `name` | string | yes | Display name of external status check service |
|
||||||
|
| `external_url` | string | yes | URL of external status check service |
|
||||||
|
| `protected_branch_ids` | `array<Integer>` | no | IDs of protected branches to scope the rule by |
|
||||||
|
|
||||||
|
## Update external status check service
|
||||||
|
|
||||||
|
You can update an existing external status check for a project using the following endpoint:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
PUT /projects/:id/external_status_checks/:check_id
|
||||||
|
```
|
||||||
|
|
||||||
|
| Attribute | Type | Required | Description |
|
||||||
|
|------------------------|------------------|----------|------------------------------------------------|
|
||||||
|
| `id` | integer | yes | ID of a project |
|
||||||
|
| `check_id` | integer | yes | ID of an external status check service |
|
||||||
|
| `name` | string | no | Display name of external status check service |
|
||||||
|
| `external_url` | string | no | URL of external status check service |
|
||||||
|
| `protected_branch_ids` | `array<Integer>` | no | IDs of protected branches to scope the rule by |
|
||||||
|
|
||||||
|
## Delete external status check service
|
||||||
|
|
||||||
|
You can delete an external status check service for a project using the following endpoint:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
DELETE /projects/:id/external_status_checks/:check_id
|
||||||
|
```
|
||||||
|
|
||||||
|
| Attribute | Type | Required | Description |
|
||||||
|
|------------------------|----------------|----------|----------------------------------------|
|
||||||
|
| `check_id` | integer | yes | ID of an external status check service |
|
||||||
|
| `id` | integer | yes | ID of a project |
|
||||||
|
|
||||||
## List status checks for a merge request
|
## List status checks for a merge request
|
||||||
|
|
||||||
For a single merge request, list the external status checks that apply to it and their status.
|
For a single merge request, list the external status check services that apply to it and their status.
|
||||||
|
|
||||||
```plaintext
|
```plaintext
|
||||||
GET /projects/:id/merge_requests/:merge_request_iid/status_checks
|
GET /projects/:id/merge_requests/:merge_request_iid/status_checks
|
||||||
|
|
@ -29,13 +112,13 @@ GET /projects/:id/merge_requests/:merge_request_iid/status_checks
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Rule 1",
|
"name": "Service 1",
|
||||||
"external_url": "https://gitlab.com/test-endpoint",
|
"external_url": "https://gitlab.com/test-endpoint",
|
||||||
"status": "passed"
|
"status": "passed"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Rule 2",
|
"name": "Service 2",
|
||||||
"external_url": "https://gitlab.com/test-endpoint-2",
|
"external_url": "https://gitlab.com/test-endpoint-2",
|
||||||
"status": "pending"
|
"status": "pending"
|
||||||
}
|
}
|
||||||
|
|
@ -251,89 +334,6 @@ In case status check is already passed status code is 422
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Get project external status checks
|
|
||||||
|
|
||||||
You can request information about a project's external status checks using the following endpoint:
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
GET /projects/:id/external_status_checks
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parameters:**
|
|
||||||
|
|
||||||
| Attribute | Type | Required | Description |
|
|
||||||
|---------------------|---------|----------|---------------------|
|
|
||||||
| `id` | integer | yes | ID of a project |
|
|
||||||
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"name": "Compliance Check",
|
|
||||||
"project_id": 6,
|
|
||||||
"external_url": "https://gitlab.com/example/test.json",
|
|
||||||
"protected_branches": [
|
|
||||||
{
|
|
||||||
"id": 14,
|
|
||||||
"project_id": 6,
|
|
||||||
"name": "master",
|
|
||||||
"created_at": "2020-10-12T14:04:50.787Z",
|
|
||||||
"updated_at": "2020-10-12T14:04:50.787Z",
|
|
||||||
"code_owner_approval_required": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Create external status check
|
|
||||||
|
|
||||||
You can create a new external status check for a project using the following endpoint:
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
POST /projects/:id/external_status_checks
|
|
||||||
```
|
|
||||||
|
|
||||||
WARNING:
|
|
||||||
External status checks send information about all applicable merge requests to the
|
|
||||||
defined external service. This includes confidential merge requests.
|
|
||||||
|
|
||||||
| Attribute | Type | Required | Description |
|
|
||||||
|------------------------|------------------|----------|------------------------------------------------|
|
|
||||||
| `id` | integer | yes | ID of a project |
|
|
||||||
| `name` | string | yes | Display name of external status check |
|
|
||||||
| `external_url` | string | yes | URL of external status check resource |
|
|
||||||
| `protected_branch_ids` | `array<Integer>` | no | IDs of protected branches to scope the rule by |
|
|
||||||
|
|
||||||
## Delete external status check
|
|
||||||
|
|
||||||
You can delete an external status check for a project using the following endpoint:
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
DELETE /projects/:id/external_status_checks/:check_id
|
|
||||||
```
|
|
||||||
|
|
||||||
| Attribute | Type | Required | Description |
|
|
||||||
|------------------------|----------------|----------|-----------------------|
|
|
||||||
| `check_id` | integer | yes | ID of an external status check |
|
|
||||||
| `id` | integer | yes | ID of a project |
|
|
||||||
|
|
||||||
## Update external status check
|
|
||||||
|
|
||||||
You can update an existing external status check for a project using the following endpoint:
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
PUT /projects/:id/external_status_checks/:check_id
|
|
||||||
```
|
|
||||||
|
|
||||||
| Attribute | Type | Required | Description |
|
|
||||||
|------------------------|------------------|----------|------------------------------------------------|
|
|
||||||
| `id` | integer | yes | ID of a project |
|
|
||||||
| `check_id` | integer | yes | ID of an external status check |
|
|
||||||
| `name` | string | no | Display name of external status check |
|
|
||||||
| `external_url` | string | no | URL of external status check resource |
|
|
||||||
| `protected_branch_ids` | `array<Integer>` | no | IDs of protected branches to scope the rule by |
|
|
||||||
|
|
||||||
## Related topics
|
## Related topics
|
||||||
|
|
||||||
- [External status checks](../user/project/merge_requests/status_checks.md)
|
- [External status checks](../user/project/merge_requests/status_checks.md)
|
||||||
|
|
|
||||||
|
|
@ -444,24 +444,6 @@ background migration.
|
||||||
- Continues using the data as before.
|
- Continues using the data as before.
|
||||||
- Ensures that both existing and new data are migrated.
|
- Ensures that both existing and new data are migrated.
|
||||||
|
|
||||||
1. In the next release, add a database migration to remove the trigger.
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
class RemoveNamepaceIdTriggerFromRoutes < Gitlab::Database::Migration[2.1]
|
|
||||||
FUNCTION_NAME = 'example_function'
|
|
||||||
TRIGGER_NAME = 'example_trigger'
|
|
||||||
|
|
||||||
def up
|
|
||||||
drop_trigger(TRIGGER_NAME, :routes)
|
|
||||||
drop_function(FUNCTION_NAME)
|
|
||||||
end
|
|
||||||
|
|
||||||
def down
|
|
||||||
# Should reverse the trigger and the function in the up method of the migration that added it
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Add a new post-deployment migration
|
1. Add a new post-deployment migration
|
||||||
that checks that the batched background migration is completed. For example:
|
that checks that the batched background migration is completed. For example:
|
||||||
|
|
||||||
|
|
@ -497,6 +479,24 @@ background migration.
|
||||||
instance, the data is advisory, and not mission-critical), then you can skip this
|
instance, the data is advisory, and not mission-critical), then you can skip this
|
||||||
final step. This step confirms that the migration is completed, and all of the rows were migrated.
|
final step. This step confirms that the migration is completed, and all of the rows were migrated.
|
||||||
|
|
||||||
|
1. Add a database migration to remove the trigger.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
class RemoveNamepaceIdTriggerFromRoutes < Gitlab::Database::Migration[2.1]
|
||||||
|
FUNCTION_NAME = 'example_function'
|
||||||
|
TRIGGER_NAME = 'example_trigger'
|
||||||
|
|
||||||
|
def up
|
||||||
|
drop_trigger(TRIGGER_NAME, :routes)
|
||||||
|
drop_function(FUNCTION_NAME)
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
# Should reverse the trigger and the function in the up method of the migration that added it
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
After the batched migration is completed, you can safely depend on the
|
After the batched migration is completed, you can safely depend on the
|
||||||
data in `routes.namespace_id` being populated.
|
data in `routes.namespace_id` being populated.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1216,11 +1216,17 @@ When you want to ensure that no event got called, you can use `expect_no_snowplo
|
||||||
it 'does not track any snowplow events' do
|
it 'does not track any snowplow events' do
|
||||||
get :show
|
get :show
|
||||||
|
|
||||||
expect_no_snowplow_event
|
expect_no_snowplow_event(category: described_class.name, action: 'some_action')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Even though `category` and `action` can be omitted, you should at least
|
||||||
|
specify a `category` to avoid flaky tests. For example,
|
||||||
|
`Users::ActivityService` may track a Snowplow event after an API
|
||||||
|
request, and `expect_no_snowplow_event` will fail if that happens to run
|
||||||
|
when no arguments are specified.
|
||||||
|
|
||||||
#### Test Snowplow context against the schema
|
#### Test Snowplow context against the schema
|
||||||
|
|
||||||
The [Snowplow schema matcher](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60480)
|
The [Snowplow schema matcher](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60480)
|
||||||
|
|
|
||||||
|
|
@ -268,6 +268,22 @@ to the `gitlab-runner register` command.
|
||||||
|
|
||||||
<div class="deprecation breaking-change" data-milestone="17.0">
|
<div class="deprecation breaking-change" data-milestone="17.0">
|
||||||
|
|
||||||
|
### Required Pipeline Configuration is deprecated
|
||||||
|
|
||||||
|
<div class="deprecation-notes">
|
||||||
|
- Announced in: GitLab <span class="milestone">15.9</span>
|
||||||
|
- [Breaking change](https://docs.gitlab.com/ee/development/deprecation_guidelines/)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Required Pipeline Configuration will be removed in the 17.0 release. This impacts self-managed users on the Ultimate license.
|
||||||
|
|
||||||
|
We recommend replacing this with an alternative [compliance solution](https://docs.gitlab.com/ee/user/group/compliance_frameworks.html#compliance-pipelines)
|
||||||
|
that is available now. We recommend this alternative solution because it provides greater flexibility, allowing required pipelines to be assigned to specific compliance framework labels.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="deprecation breaking-change" data-milestone="17.0">
|
||||||
|
|
||||||
### Self-managed certificate-based integration with Kubernetes
|
### Self-managed certificate-based integration with Kubernetes
|
||||||
|
|
||||||
<div class="deprecation-notes">
|
<div class="deprecation-notes">
|
||||||
|
|
@ -1546,22 +1562,6 @@ This could be a breaking change for anyone that developed their own runner that
|
||||||
|
|
||||||
<div class="deprecation breaking-change" data-milestone="16.0">
|
<div class="deprecation breaking-change" data-milestone="16.0">
|
||||||
|
|
||||||
### Required Pipeline Configuration is deprecated
|
|
||||||
|
|
||||||
<div class="deprecation-notes">
|
|
||||||
- Announced in: GitLab <span class="milestone">15.9</span>
|
|
||||||
- [Breaking change](https://docs.gitlab.com/ee/development/deprecation_guidelines/)
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Required Pipeline Configuration will be removed in the 16.0 release. This impacts self-managed users on the Ultimate license.
|
|
||||||
|
|
||||||
We recommend replacing this with an alternative [compliance solution](https://docs.gitlab.com/ee/user/group/compliance_frameworks.html#compliance-pipelines)
|
|
||||||
that is available now. We recommend this alternative solution because it provides greater flexibility, allowing required pipelines to be assigned to specific compliance framework labels.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="deprecation breaking-change" data-milestone="16.0">
|
|
||||||
|
|
||||||
### SAST analyzer coverage changing in GitLab 16.0
|
### SAST analyzer coverage changing in GitLab 16.0
|
||||||
|
|
||||||
<div class="deprecation-notes">
|
<div class="deprecation-notes">
|
||||||
|
|
|
||||||
|
|
@ -245,12 +245,13 @@ To enable or disable the banner:
|
||||||
|
|
||||||
## Required pipeline configuration **(ULTIMATE SELF)**
|
## Required pipeline configuration **(ULTIMATE SELF)**
|
||||||
|
|
||||||
> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/352316) from GitLab Premium to GitLab Ultimate in 15.0.
|
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/352316) from GitLab Premium to GitLab Ultimate in 15.0.
|
||||||
|
> - [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/389467) in GitLab 15.9.
|
||||||
|
|
||||||
NOTE:
|
WARNING:
|
||||||
An alternative [compliance solution](../../group/compliance_frameworks.md#compliance-pipelines)
|
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/389467) in GitLab 15.9
|
||||||
is available. We recommend this alternative solution because it provides greater flexibility,
|
and is planned for removal in 17.0. Use [compliance pipelines](../../group/compliance_frameworks.md#compliance-pipelines)
|
||||||
allowing required pipelines to be assigned to specific compliance framework labels.
|
instead. This change is a breaking change.
|
||||||
|
|
||||||
You can set a [CI/CD template](../../../ci/examples/index.md#cicd-templates)
|
You can set a [CI/CD template](../../../ci/examples/index.md#cicd-templates)
|
||||||
as a required pipeline configuration for all projects on a GitLab instance. You can
|
as a required pipeline configuration for all projects on a GitLab instance. You can
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@ We recommend that you use fuzz testing in addition to [GitLab Secure](../index.m
|
||||||
other security scanners and your own test processes. If you're using [GitLab CI/CD](../../../ci/index.md),
|
other security scanners and your own test processes. If you're using [GitLab CI/CD](../../../ci/index.md),
|
||||||
you can run fuzz tests as part your CI/CD workflow.
|
you can run fuzz tests as part your CI/CD workflow.
|
||||||
|
|
||||||
|
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||||
|
For an overview, see [Web API Fuzzing](https://www.youtube.com/watch?v=oUHsfvLGhDk).
|
||||||
|
|
||||||
## When Web API fuzzing runs
|
## When Web API fuzzing runs
|
||||||
|
|
||||||
Web API fuzzing runs in the `fuzz` stage of the CI/CD pipeline. To ensure API fuzzing scans the
|
Web API fuzzing runs in the `fuzz` stage of the CI/CD pipeline. To ensure API fuzzing scans the
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,9 @@ To use the Security Dashboards, you must:
|
||||||
shared runners on GitLab.com, you are using the correct version.
|
shared runners on GitLab.com, you are using the correct version.
|
||||||
- Have the [correct role](../../permissions.md) for the project or group.
|
- Have the [correct role](../../permissions.md) for the project or group.
|
||||||
|
|
||||||
|
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||||
|
For an overview, see [Security Dashboard](https://www.youtube.com/watch?v=QHQHN4luNpc).
|
||||||
|
|
||||||
## When Security Dashboards are updated
|
## When Security Dashboards are updated
|
||||||
|
|
||||||
The Security Dashboards show results of scans from the most recent completed pipeline on the
|
The Security Dashboards show results of scans from the most recent completed pipeline on the
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ using the API. You don't need to wait for a merge request webhook payload to be
|
||||||
|
|
||||||
## View the status checks on a project
|
## View the status checks on a project
|
||||||
|
|
||||||
Within each project's settings, you can see a list of status checks added to the project:
|
Within each project's settings, you can see a list of status check services added to the project:
|
||||||
|
|
||||||
1. In your project, go to **Settings > Merge requests** section.
|
1. In your project, go to **Settings > Merge requests** section.
|
||||||
1. Scroll down to **Status checks**.
|
1. Scroll down to **Status checks**.
|
||||||
|
|
@ -81,9 +81,9 @@ Within each project's settings, you can see a list of status checks added to the
|
||||||
This list shows the service name, API URL, and targeted branch.
|
This list shows the service name, API URL, and targeted branch.
|
||||||
It also provides actions to allow you to create, edit, or remove status checks.
|
It also provides actions to allow you to create, edit, or remove status checks.
|
||||||
|
|
||||||
## Add or update a status check
|
## Add or update a status check service
|
||||||
|
|
||||||
### Add a status check
|
### Add a status check service
|
||||||
|
|
||||||
Within the **Status checks** sub-section, select the **Add status check** button.
|
Within the **Status checks** sub-section, select the **Add status check** button.
|
||||||
The **Add status check** form is then shown.
|
The **Add status check** form is then shown.
|
||||||
|
|
@ -92,7 +92,7 @@ The **Add status check** form is then shown.
|
||||||
|
|
||||||
Filling in the form and selecting the **Add status check** button creates a new status check.
|
Filling in the form and selecting the **Add status check** button creates a new status check.
|
||||||
|
|
||||||
### Update a status check
|
### Update a status check service
|
||||||
|
|
||||||
Within the **Status checks** sub-section, select the **Edit** button
|
Within the **Status checks** sub-section, select the **Edit** button
|
||||||
next to the status check you want to edit.
|
next to the status check you want to edit.
|
||||||
|
|
@ -135,7 +135,7 @@ for doesn't appear immediately. The search box requires
|
||||||
If you want the status check to be applied to **all** merge requests,
|
If you want the status check to be applied to **all** merge requests,
|
||||||
you can select the **All branches** option.
|
you can select the **All branches** option.
|
||||||
|
|
||||||
## Delete a status check
|
## Delete a status check service
|
||||||
|
|
||||||
Within the **Status checks** sub-section, select the **Remove...** button
|
Within the **Status checks** sub-section, select the **Remove...** button
|
||||||
next to the status check you want to delete.
|
next to the status check you want to delete.
|
||||||
|
|
|
||||||
|
|
@ -21,24 +21,6 @@ module Banzai
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_commits(project, ids)
|
def find_commits(project, ids)
|
||||||
return limited_commits(project, ids) if Feature.enabled?(:limited_commit_parser, project)
|
|
||||||
|
|
||||||
commits = []
|
|
||||||
|
|
||||||
return commits unless project.valid_repo?
|
|
||||||
|
|
||||||
ids.each do |id|
|
|
||||||
commit = project.commit(id)
|
|
||||||
|
|
||||||
commits << commit if commit
|
|
||||||
end
|
|
||||||
|
|
||||||
commits
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def limited_commits(project, ids)
|
|
||||||
return [] unless project.valid_repo?
|
return [] unless project.valid_repo?
|
||||||
|
|
||||||
ids = ids.take(COMMITS_LIMIT)
|
ids = ids.take(COMMITS_LIMIT)
|
||||||
|
|
@ -46,6 +28,8 @@ module Banzai
|
||||||
project.commits_by(oids: ids)
|
project.commits_by(oids: ids)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def can_read_reference?(user, ref_project, node)
|
def can_read_reference?(user, ref_project, node)
|
||||||
can?(user, :download_code, ref_project)
|
can?(user, :download_code, ref_project)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_repos_query(string, options = {})
|
def search_repos_query(string, options = {})
|
||||||
base = "#{string} in:name is:public,private"
|
base = "#{string} in:name is:public,private fork:true"
|
||||||
|
|
||||||
case options[:relation_type]
|
case options[:relation_type]
|
||||||
when 'organization' then organization_repos_query(base, options)
|
when 'organization' then organization_repos_query(base, options)
|
||||||
|
|
|
||||||
|
|
@ -60,9 +60,9 @@ module Sidebars
|
||||||
override :active_routes
|
override :active_routes
|
||||||
def active_routes
|
def active_routes
|
||||||
if context.project.issues_enabled?
|
if context.project.issues_enabled?
|
||||||
{ controller: 'projects/merge_requests' }
|
{ controller: ['projects/merge_requests', :conflicts] }
|
||||||
else
|
else
|
||||||
{ controller: ['projects/merge_requests', :milestones] }
|
{ controller: ['projects/merge_requests', :milestones, :conflicts] }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27304,6 +27304,9 @@ msgstr ""
|
||||||
msgid "Merge commit message"
|
msgid "Merge commit message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Merge conflicts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Merge details"
|
msgid "Merge details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -50745,7 +50748,7 @@ msgstr ""
|
||||||
msgid "You can only transfer the project to namespaces you manage."
|
msgid "You can only transfer the project to namespaces you manage."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}"
|
msgid "You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "You can see your chat accounts."
|
msgid "You can see your chat accounts."
|
||||||
|
|
|
||||||
|
|
@ -154,28 +154,6 @@ RSpec.describe Banzai::ReferenceParser::CommitParser, feature_category: :source_
|
||||||
"b83d6e391c22777fca1ed3012fce84f633d7fed0"
|
"b83d6e391c22777fca1ed3012fce84f633d7fed0"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when limited_commit_parser feature flag disabled' do
|
|
||||||
before do
|
|
||||||
stub_feature_flags(limited_commit_parser: false)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns an Array of commit objects' do
|
|
||||||
commit = double(:commit)
|
|
||||||
|
|
||||||
expect(project).to receive(:commit).with('123').and_return(commit)
|
|
||||||
expect(project).to receive(:valid_repo?).and_return(true)
|
|
||||||
|
|
||||||
expect(subject.find_commits(project, %w{123})).to eq([commit])
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'skips commit IDs for which no commit could be found' do
|
|
||||||
expect(project).to receive(:commit).with('123').and_return(nil)
|
|
||||||
expect(project).to receive(:valid_repo?).and_return(true)
|
|
||||||
|
|
||||||
expect(subject.find_commits(project, %w{123})).to eq([])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when checking commits on another projects', :request_store do
|
context 'when checking commits on another projects', :request_store do
|
||||||
|
|
|
||||||
|
|
@ -580,7 +580,10 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#search_repos_by_name_graphql' do
|
describe '#search_repos_by_name_graphql' do
|
||||||
let(:expected_query) { 'test in:name is:public,private user:user repo:repo1 repo:repo2 org:org1 org:org2' }
|
let(:expected_query) do
|
||||||
|
'test in:name is:public,private fork:true user:user repo:repo1 repo:repo2 org:org1 org:org2'
|
||||||
|
end
|
||||||
|
|
||||||
let(:expected_graphql_params) { "type: REPOSITORY, query: \"#{expected_query}\"" }
|
let(:expected_graphql_params) { "type: REPOSITORY, query: \"#{expected_query}\"" }
|
||||||
let(:expected_graphql) do
|
let(:expected_graphql) do
|
||||||
<<-TEXT
|
<<-TEXT
|
||||||
|
|
@ -617,7 +620,7 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do
|
||||||
|
|
||||||
context 'when relation type option present' do
|
context 'when relation type option present' do
|
||||||
context 'when relation type is owned' do
|
context 'when relation type is owned' do
|
||||||
let(:expected_query) { 'test in:name is:public,private user:user' }
|
let(:expected_query) { 'test in:name is:public,private fork:true user:user' }
|
||||||
|
|
||||||
it 'searches for repositories within the organization based on name' do
|
it 'searches for repositories within the organization based on name' do
|
||||||
expect(client.octokit).to receive(:post).with(
|
expect(client.octokit).to receive(:post).with(
|
||||||
|
|
@ -629,7 +632,7 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when relation type is organization' do
|
context 'when relation type is organization' do
|
||||||
let(:expected_query) { 'test in:name is:public,private org:test-login' }
|
let(:expected_query) { 'test in:name is:public,private fork:true org:test-login' }
|
||||||
|
|
||||||
it 'searches for repositories within the organization based on name' do
|
it 'searches for repositories within the organization based on name' do
|
||||||
expect(client.octokit).to receive(:post).with(
|
expect(client.octokit).to receive(:post).with(
|
||||||
|
|
@ -643,7 +646,7 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when relation type is collaborated' do
|
context 'when relation type is collaborated' do
|
||||||
let(:expected_query) { 'test in:name is:public,private repo:repo1 repo:repo2' }
|
let(:expected_query) { 'test in:name is:public,private fork:true repo:repo1 repo:repo2' }
|
||||||
|
|
||||||
it 'searches for collaborated repositories based on name' do
|
it 'searches for collaborated repositories based on name' do
|
||||||
expect(client.octokit).to receive(:post).with(
|
expect(client.octokit).to receive(:post).with(
|
||||||
|
|
@ -710,8 +713,8 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do
|
||||||
|
|
||||||
describe '#count_repos_by_relation_type_graphql' do
|
describe '#count_repos_by_relation_type_graphql' do
|
||||||
relation_types = {
|
relation_types = {
|
||||||
'owned' => ' in:name is:public,private user:user',
|
'owned' => ' in:name is:public,private fork:true user:user',
|
||||||
'collaborated' => ' in:name is:public,private repo:repo1 repo:repo2',
|
'collaborated' => ' in:name is:public,private fork:true repo:repo1 repo:repo2',
|
||||||
'organization' => 'org:org1 org:org2'
|
'organization' => 'org:org1 org:org2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue