Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
2948e306c0
commit
5f23ef4eca
|
|
@ -14,12 +14,14 @@ module Ci
|
|||
alias_attribute :secret_value, :value
|
||||
|
||||
validates :key, uniqueness: {
|
||||
message: "(%{value}) has already been taken"
|
||||
message: -> (object, data) { _("(%{value}) has already been taken") }
|
||||
}
|
||||
|
||||
validates :encrypted_value, length: {
|
||||
maximum: 1024,
|
||||
too_long: 'The encrypted value of the provided variable exceeds %{count} bytes. Variables over 700 characters risk exceeding the limit.'
|
||||
validates :value, length: {
|
||||
maximum: 10_000,
|
||||
too_long: -> (object, data) do
|
||||
_('The value of the provided variable exceeds the %{count} character limit')
|
||||
end
|
||||
}
|
||||
|
||||
scope :unprotected, -> { where(protected: false) }
|
||||
|
|
|
|||
|
|
@ -1740,7 +1740,7 @@ class Project < ApplicationRecord
|
|||
end
|
||||
|
||||
def pages_deployed?
|
||||
Dir.exist?(public_pages_path)
|
||||
pages_metadatum&.deployed?
|
||||
end
|
||||
|
||||
def pages_group_url
|
||||
|
|
@ -1773,10 +1773,6 @@ class Project < ApplicationRecord
|
|||
File.join(Settings.pages.path, full_path)
|
||||
end
|
||||
|
||||
def public_pages_path
|
||||
File.join(pages_path, 'public')
|
||||
end
|
||||
|
||||
def pages_available?
|
||||
Gitlab.config.pages.enabled
|
||||
end
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
= _('Expand')
|
||||
%p
|
||||
= _('To link Sentry to GitLab, enter your Sentry URL and Auth Token.')
|
||||
= link_to _('More information'), help_page_path('user/project/operations/error_tracking'), target: '_blank', rel: 'noopener noreferrer'
|
||||
= link_to _('More information'), help_page_path('operations/error_tracking'), target: '_blank', rel: 'noopener noreferrer'
|
||||
.settings-content
|
||||
.js-error-tracking-form{ data: { list_projects_endpoint: project_error_tracking_projects_path(@project, format: :json),
|
||||
operations_settings_endpoint: project_settings_operations_path(@project),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Increase CI instance variable value limit
|
||||
merge_request: 35063
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Bring SAST to Core - bandit, Flawfinder, Gitleaks, Gosec, Kubesec, NodeJsScan, phpcs-security-audit, PMD, Security Code Scan, Sobelow, SpotBugs
|
||||
merge_request: 37648
|
||||
author:
|
||||
type: changed
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class IncreaseSizeOnInstanceLevelVariableValues < ActiveRecord::Migration[6.0]
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
existing_constraint_name = text_limit_name(:ci_instance_variables, :encrypted_value)
|
||||
new_constraint_name = check_constraint_name(:ci_instance_variables, :encrypted_value, :char_length_updated)
|
||||
|
||||
add_text_limit(:ci_instance_variables, :encrypted_value, 13_579, constraint_name: new_constraint_name)
|
||||
remove_check_constraint(:ci_instance_variables, existing_constraint_name)
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
e691c94223b44a5866f34aab96cc9a8c5857a6302115f977542bacb36e7c010e
|
||||
|
|
@ -9990,7 +9990,7 @@ CREATE TABLE public.ci_instance_variables (
|
|||
encrypted_value_iv text,
|
||||
CONSTRAINT check_07a45a5bcb CHECK ((char_length(encrypted_value_iv) <= 255)),
|
||||
CONSTRAINT check_5aede12208 CHECK ((char_length(key) <= 255)),
|
||||
CONSTRAINT check_5ebd0515a0 CHECK ((char_length(encrypted_value) <= 1024))
|
||||
CONSTRAINT check_956afd70f1 CHECK ((char_length(encrypted_value) <= 13579))
|
||||
);
|
||||
|
||||
CREATE SEQUENCE public.ci_instance_variables_id_seq
|
||||
|
|
|
|||
|
|
@ -390,13 +390,13 @@ to respect the CIDR format (i.e. `1.2.3.4/32`).
|
|||
|
||||
GitLab places a timeout on all repository clones, including project imports
|
||||
and Geo synchronization operations. If a fresh `git clone` of a repository
|
||||
on the **primary** takes more than a few minutes, you may be affected by this.
|
||||
on the **primary** takes more than the default three hours, you may be affected by this.
|
||||
|
||||
To increase the timeout, add the following line to `/etc/gitlab/gitlab.rb`
|
||||
on the **secondary** node:
|
||||
|
||||
```ruby
|
||||
gitlab_rails['gitlab_shell_git_timeout'] = 10800
|
||||
gitlab_rails['gitlab_shell_git_timeout'] = 14400
|
||||
```
|
||||
|
||||
Then reconfigure GitLab:
|
||||
|
|
@ -405,7 +405,7 @@ Then reconfigure GitLab:
|
|||
sudo gitlab-ctl reconfigure
|
||||
```
|
||||
|
||||
This will increase the timeout to three hours (10800 seconds). Choose a time
|
||||
This will increase the timeout to four hours (14400 seconds). Choose a time
|
||||
long enough to accommodate a full clone of your largest repositories.
|
||||
|
||||
### New LFS objects are never replicated
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
## Error Tracking project settings
|
||||
|
||||
The project settings API allows you to retrieve the Error Tracking settings for a project. Only for project maintainers.
|
||||
The project settings API allows you to retrieve the [Error Tracking](../operations/error_tracking.md)
|
||||
settings for a project. Only for project maintainers.
|
||||
|
||||
### Get Error Tracking settings
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ POST /admin/ci/variables
|
|||
| Attribute | Type | required | Description |
|
||||
|-----------------|---------|----------|-----------------------|
|
||||
| `key` | string | yes | The `key` of a variable. Max 255 characters, only `A-Z`, `a-z`, `0-9`, and `_` are allowed. |
|
||||
| `value` | string | yes | The `value` of a variable. Around 700 characters allowed. |
|
||||
| `value` | string | yes | The `value` of a variable. 10,000 characters allowed. [Since GitLab 13.3] |
|
||||
| `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file`. |
|
||||
| `protected` | boolean | no | Whether the variable is protected. |
|
||||
| `masked` | boolean | no | Whether the variable is masked. |
|
||||
|
|
@ -103,7 +103,7 @@ PUT /admin/ci/variables/:key
|
|||
| Attribute | Type | required | Description |
|
||||
|-----------------|---------|----------|-------------------------|
|
||||
| `key` | string | yes | The `key` of a variable. |
|
||||
| `value` | string | yes | The `value` of a variable. |
|
||||
| `value` | string | yes | The `value` of a variable. [Since GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/issues/220028), around 10,000 characters allowed. Previously 700 characters. |
|
||||
| `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file`. |
|
||||
| `protected` | boolean | no | Whether the variable is protected. |
|
||||
| `masked` | boolean | no | Whether the variable is masked. |
|
||||
|
|
|
|||
|
|
@ -1053,6 +1053,10 @@ curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://git
|
|||
|
||||
Get a list of currently authenticated user's emails.
|
||||
|
||||
NOTE: **Note:**
|
||||
Due to [a bug](https://gitlab.com/gitlab-org/gitlab/-/issues/25077) this endpoint currently
|
||||
does not return the primary email address.
|
||||
|
||||
```plaintext
|
||||
GET /user/emails
|
||||
```
|
||||
|
|
@ -1078,6 +1082,10 @@ Parameters:
|
|||
|
||||
Get a list of a specified user's emails. Available only for admin
|
||||
|
||||
NOTE: **Note:**
|
||||
Due to [a bug](https://gitlab.com/gitlab-org/gitlab/-/issues/25077) this endpoint currently
|
||||
does not return the primary email address.
|
||||
|
||||
```plaintext
|
||||
GET /users/:id/emails
|
||||
```
|
||||
|
|
|
|||
|
|
@ -140,6 +140,9 @@ java:
|
|||
junit: build/test-results/test/**/TEST-*.xml
|
||||
```
|
||||
|
||||
NOTE: **Note:**
|
||||
Support for `**` was added in [GitLab Runner 13.0](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2620).
|
||||
|
||||
#### Maven
|
||||
|
||||
For parsing [Surefire](https://maven.apache.org/surefire/maven-surefire-plugin/)
|
||||
|
|
|
|||
|
|
@ -444,11 +444,11 @@ To add an instance-level variable:
|
|||
1. Navigate to your admin area's **Settings > CI/CD** and expand the **Variables** section.
|
||||
1. Click the **Add variable** button, and fill in the details:
|
||||
|
||||
- **Key**: Must be one line, using only letters, numbers, or `_` (underscore), with no spaces.
|
||||
- **Value**: 700 characters allowed.
|
||||
- **Type**: `File` or `Variable`.
|
||||
- **Protect variable** (Optional): If selected, the variable will only be available in pipelines that run on protected branches or tags.
|
||||
- **Mask variable** (Optional): If selected, the variable's **Value** will not be shown in job logs. The variable will not be saved if the value does not meet the [masking requirements](#masked-variable-requirements).
|
||||
- **Key**: Must be one line, using only letters, numbers, or `_` (underscore), with no spaces.
|
||||
- **Value**: [Since GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/issues/220028), 10,000 characters allowed. This is also bounded by the limits of the selected Runner operating system. In GitLab 13.0 to 13.2, 700 characters allowed.
|
||||
- **Type**: `File` or `Variable`.
|
||||
- **Protect variable** (Optional): If selected, the variable will only be available in pipelines that run on protected branches or tags.
|
||||
- **Mask variable** (Optional): If selected, the variable's **Value** will not be shown in job logs. The variable will not be saved if the value does not meet the [masking requirements](#masked-variable-requirements).
|
||||
|
||||
After a variable is created, you can update any of the details by clicking the **{pencil}** **Edit** button.
|
||||
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@ An external registry can also be configured to use GitLab as an auth endpoint.
|
|||
Sentry fundamentally is a service that helps you monitor and fix crashes in real time.
|
||||
The server is in Python, but it contains a full API for sending events from any language, in any application.
|
||||
|
||||
For monitoring deployed apps, see the [Sentry integration docs](../user/project/operations/error_tracking.md)
|
||||
For monitoring deployed apps, see the [Sentry integration docs](../operations/error_tracking.md)
|
||||
|
||||
#### Sidekiq
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,89 @@ export default {
|
|||
Please use the following function inside JS to render an icon:
|
||||
`gl.utils.spriteIcon(iconName)`
|
||||
|
||||
## Loading icon
|
||||
|
||||
### Usage in HAML/Rails
|
||||
|
||||
DANGER: **Danger:**
|
||||
Do not use the `spinner` or `icon('spinner spin')` rails helpers to insert
|
||||
loading icons. These helpers rely on the Font Awesome icon library which is
|
||||
deprecated.
|
||||
|
||||
To insert a loading spinner in HAML or Rails use the `loading_icon` helper:
|
||||
|
||||
```haml
|
||||
= loading_icon
|
||||
```
|
||||
|
||||
You can include one or more of the following properties with the `loading_icon` helper, as demonstrated
|
||||
by the examples that follow:
|
||||
|
||||
- `container` (optional): wraps the loading icon in a container, which centers the loading icon using the `text-center` CSS property.
|
||||
- `color` (optional): either `orange` (default), `light`, or `dark`.
|
||||
- `size` (optional): either `sm` (default), `md`, `lg`, or `xl`.
|
||||
- `css_class` (optional): defaults to an empty string, but can be useful for utility classes to fine-tune alignment or spacing.
|
||||
|
||||
**Example 1:**
|
||||
|
||||
The following HAML expression generates a loading icon’s markup and
|
||||
centers the icon by wrapping it in a `gl-spinner-container` element.
|
||||
|
||||
```haml
|
||||
= loading_icon(container: true)
|
||||
```
|
||||
|
||||
**Output from example 1:**
|
||||
|
||||
```html
|
||||
<div class="gl-spinner-container">
|
||||
<span class="gl-spinner gl-spinner-orange gl-spinner-sm" aria-label="Loading"></span>
|
||||
</div>
|
||||
```
|
||||
|
||||
**Example 2:**
|
||||
|
||||
The following HAML expression generates a loading icon’s markup
|
||||
with a custom size. It also appends a margin utility class.
|
||||
|
||||
```haml
|
||||
= loading_icon(size: 'lg', css_class: 'gl-mr-2')
|
||||
```
|
||||
|
||||
**Output from example 2:**
|
||||
|
||||
```html
|
||||
<span class="gl-spinner gl-spinner-orange gl-spinner-lg gl-mr-2" aria-label="Loading"></span>
|
||||
```
|
||||
|
||||
### Usage in Vue
|
||||
|
||||
The [GitLab UI](https://gitlab-org.gitlab.io/gitlab-ui/) components library provides a
|
||||
`GlLoadingIcon` component. See the component’s
|
||||
[storybook](https://gitlab-org.gitlab.io/gitlab-ui/?path=/story/base-loading-icon--default)
|
||||
for more information about its usage.
|
||||
|
||||
**Example:**
|
||||
|
||||
The following code snippet demonstrates how to use `GlLoadingIcon` in
|
||||
a Vue component.
|
||||
|
||||
```html
|
||||
<script>
|
||||
import { GlLoadingIcon } from "@gitlab/ui";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlLoadingIcon,
|
||||
},
|
||||
};
|
||||
<script>
|
||||
|
||||
<template>
|
||||
<gl-loading-icon inline />
|
||||
</template>
|
||||
```
|
||||
|
||||
## SVG Illustrations
|
||||
|
||||
Please use from now on for any SVG based illustrations simple `img` tags to show an illustration by simply using either `image_tag` or `image_path` helpers.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
---
|
||||
stage: Monitor
|
||||
group: Health
|
||||
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/#designated-technical-writers
|
||||
---
|
||||
|
||||
# Error Tracking
|
||||
|
||||
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/169) in GitLab 11.8.
|
||||
|
||||
Error Tracking allows developers to easily discover and view the errors that their application may be generating. By surfacing error information where the code is being developed, efficiency and awareness can be increased.
|
||||
|
||||
## Sentry error tracking
|
||||
|
||||
[Sentry](https://sentry.io/) is an open source error tracking system. GitLab allows administrators to connect Sentry to GitLab, to allow users to view a list of Sentry errors in GitLab.
|
||||
|
||||
### Deploying Sentry
|
||||
|
||||
You may sign up to the cloud hosted <https://sentry.io>, deploy your own [on-premise instance](https://docs.sentry.io/server/installation/) or use GitLab to [install Sentry to a Kubernetes cluster](../user/clusters/applications.md#install-sentry-using-gitlab-cicd).
|
||||
|
||||
### Enabling Sentry
|
||||
|
||||
NOTE: **Note:**
|
||||
You will need at least Maintainer [permissions](../user/permissions.md) to enable the Sentry integration.
|
||||
|
||||
GitLab provides an easy way to connect Sentry to your project:
|
||||
|
||||
1. Sign up to Sentry.io or [deploy your own](#deploying-sentry) Sentry instance.
|
||||
1. [Create](https://docs.sentry.io/guides/integrate-frontend/create-new-project/) a new Sentry project. For each GitLab project that you want to integrate, we recommend that you create a new Sentry project.
|
||||
1. [Find or generate](https://docs.sentry.io/api/auth/) a Sentry auth token for your Sentry project.
|
||||
Make sure to give the token at least the following scopes: `event:read` and `project:read`.
|
||||
1. Navigate to your project’s **Settings > Operations**.
|
||||
1. Ensure that the **Active** checkbox is set.
|
||||
1. In the **Sentry API URL** field, enter your Sentry hostname. For example, enter `https://sentry.example.com` if this is the address at which your Sentry instance is available. For the SaaS version of Sentry, the hostname will be `https://sentry.io`.
|
||||
1. In the **Auth Token** field, enter the token you previously generated.
|
||||
1. Click the **Connect** button to test the connection to Sentry and populate the **Project** dropdown.
|
||||
1. From the **Project** dropdown, choose a Sentry project to link to your GitLab project.
|
||||
1. Click **Save changes** for the changes to take effect.
|
||||
1. You can now visit **Operations > Error Tracking** in your project's sidebar to [view a list](#error-tracking-list) of Sentry errors.
|
||||
|
||||
### Enabling GitLab issues links
|
||||
|
||||
You may also want to enable Sentry's GitLab integration by following the steps in the [Sentry documentation](https://docs.sentry.io/workflow/integrations/global-integrations/#gitlab)
|
||||
|
||||
## Error Tracking List
|
||||
|
||||
NOTE: **Note:**
|
||||
You will need at least Reporter [permissions](../user/permissions.md) to view the Error Tracking list.
|
||||
|
||||
You can find the Error Tracking list at **Operations > Error Tracking** in your project's sidebar.
|
||||
Here, you can filter errors by title or by status (one of Ignored , Resolved, or Unresolved) and sort in descending order by Frequency, First Seen, or Last Seen. By default, the error list is ordered by Last Seen and filtered to Unresolved errors.
|
||||
|
||||

|
||||
|
||||
## Error Details
|
||||
|
||||
From error list, users can navigate to the error details page by clicking the title of any error.
|
||||
|
||||
This page has:
|
||||
|
||||
- A link to the Sentry issue.
|
||||
- A link to the GitLab commit if the Sentry [release ID/version](https://docs.sentry.io/workflow/releases/?platform=javascript#configure-sdk) on the Sentry Issue's first release matches a commit SHA in your GitLab hosted project.
|
||||
- Other details about the issue, including a full stack trace.
|
||||
- In [GitLab 12.7 and newer](https://gitlab.com/gitlab-org/gitlab/-/issues/36246), language and urgency are displayed.
|
||||
|
||||
By default, a **Create issue** button is displayed:
|
||||
|
||||

|
||||
|
||||
If you create a GitLab issue from the error, the **Create issue** button will change to a **View issue** button and a link to the GitLab issue will surface within the error detail section:
|
||||
|
||||

|
||||
|
||||
## Taking Action on errors
|
||||
|
||||
You can take action on Sentry Errors from within the GitLab UI.
|
||||
|
||||
### Ignoring errors
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39665) in GitLab 12.7.
|
||||
|
||||
From within the [Error Details](#error-details) page you can ignore a Sentry error by simply clicking the **Ignore** button near the top of the page.
|
||||
|
||||
Ignoring an error will prevent it from appearing in the [Error Tracking List](#error-tracking-list), and will silence notifications that were set up within Sentry.
|
||||
|
||||
### Resolving errors
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39825) in GitLab 12.7.
|
||||
|
||||
From within the [Error Details](#error-details) page you can resolve a Sentry error by
|
||||
clicking the **Resolve** button near the top of the page.
|
||||
|
||||
Marking an error as resolved indicates that the error has stopped firing events. If a GitLab issue is linked to the error, then the issue will be closed.
|
||||
|
||||
If another event occurs, the error reverts to unresolved.
|
||||
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
|
@ -14,7 +14,7 @@ your applications:
|
|||
- Manage your [Alerts](../user/project/operations/alert_management.md) and [Incidents](../user/incident_management/index.md).
|
||||
- Connect your project to a [Kubernetes cluster](../user/project/clusters/index.md).
|
||||
- Manage your infrastructure with [Infrastructure as Code](../user/infrastructure/index.md) approaches.
|
||||
- Discover and view errors generated by your applications with [Error Tracking](../user/project/operations/error_tracking.md).
|
||||
- Discover and view errors generated by your applications with [Error Tracking](error_tracking.md).
|
||||
- Handle incidents in your applications and services with [Incident Management](incident_management/index.md).
|
||||
- Create, toggle, and remove [Feature Flags](feature_flags.md). **(PREMIUM)**
|
||||
- [Trace](tracing.md) the performance and health of a deployed application. **(ULTIMATE)**
|
||||
|
|
|
|||
|
|
@ -972,7 +972,7 @@ including (but not restricted to):
|
|||
- [CI/CD variables](../ci/variables/README.md)
|
||||
- [Kubernetes / GCP integration](../user/project/clusters/index.md)
|
||||
- [Custom Pages domains](../user/project/pages/custom_domains_ssl_tls_certification/index.md)
|
||||
- [Project error tracking](../user/project/operations/error_tracking.md)
|
||||
- [Project error tracking](../operations/error_tracking.md)
|
||||
- [Runner authentication](../ci/runners/README.md)
|
||||
- [Project mirroring](../user/project/repository/repository_mirroring.md)
|
||||
- [Web hooks](../user/project/integrations/webhooks.md)
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ After upgrading, if some of your users are unexpectedly encountering 404 or 422
|
|||
or "blocked" messages when using the command line,
|
||||
their accounts may have been un-confirmed.
|
||||
In that case, please ask them to check their email for a re-confirmation link.
|
||||
For more information, see our discussion of [Email confirmation issues](../user/upgrade_email_bypass.md).
|
||||
|
||||
GitLab 13.2.0 relies on the `btree_gist` extension for PostgreSQL. For installations with an externally managed PostgreSQL setup, please make sure to
|
||||
[install the extension manually](https://www.postgresql.org/docs/11/sql-createextension.html) before upgrading GitLab if the database user for GitLab
|
||||
|
|
|
|||
|
|
@ -71,25 +71,25 @@ The following table shows which languages, package managers and frameworks are s
|
|||
|
||||
| Language (package managers) / framework | Scan tool | Introduced in GitLab Version |
|
||||
|-----------------------------------------------------------------------------|----------------------------------------------------------------------------------------|------------------------------|
|
||||
| .NET Core | [Security Code Scan](https://security-code-scan.github.io) | 11.0 |
|
||||
| .NET Framework | [Security Code Scan](https://security-code-scan.github.io) | 13.0 |
|
||||
| Any | [Gitleaks](https://github.com/zricethezav/gitleaks) and [TruffleHog](https://github.com/dxa4481/truffleHog) | 11.9 |
|
||||
| Apex (Salesforce) | [PMD](https://pmd.github.io/pmd/index.html) | 12.1 |
|
||||
| C/C++ | [Flawfinder](https://github.com/david-a-wheeler/flawfinder) | 10.7 |
|
||||
| Elixir (Phoenix) | [Sobelow](https://github.com/nccgroup/sobelow) | 11.10 |
|
||||
| Go | [Gosec](https://github.com/securego/gosec) | 10.7 |
|
||||
| Groovy ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 11.3 (Gradle) & 11.9 (Ant, Maven, SBT) |
|
||||
| Helm Charts | [Kubesec](https://github.com/controlplaneio/kubesec) | 13.1 |
|
||||
| Java ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 10.6 (Maven), 10.8 (Gradle) & 11.9 (Ant, SBT) |
|
||||
| JavaScript | [ESLint security plugin](https://github.com/nodesecurity/eslint-plugin-security) | 11.8, moved to [GitLab Core](https://about.gitlab.com/pricing/) in 13.2 |
|
||||
| Kubernetes manifests | [Kubesec](https://github.com/controlplaneio/kubesec) | 12.6 |
|
||||
| Node.js | [NodeJsScan](https://github.com/ajinabraham/NodeJsScan) | 11.1 |
|
||||
| PHP | [phpcs-security-audit](https://github.com/FloeDesignTechnologies/phpcs-security-audit) | 10.8 |
|
||||
| Python ([pip](https://pip.pypa.io/en/stable/)) | [bandit](https://github.com/PyCQA/bandit) | 10.3 |
|
||||
| React | [ESLint react plugin](https://github.com/yannickcr/eslint-plugin-react) | 12.5 |
|
||||
| Ruby on Rails | [brakeman](https://brakemanscanner.org) | 10.3, moved to [GitLab Core](https://about.gitlab.com/pricing/) in 13.1 |
|
||||
| Scala ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 11.0 (SBT) & 11.9 (Ant, Gradle, Maven) |
|
||||
| TypeScript | [ESLint security plugin](https://github.com/nodesecurity/eslint-plugin-security) | 11.9, merged with ESLint in 13.2 |
|
||||
| .NET Core | [Security Code Scan](https://security-code-scan.github.io) | 11.0, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| .NET Framework | [Security Code Scan](https://security-code-scan.github.io) | 13.0, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Any | [Gitleaks](https://github.com/zricethezav/gitleaks) and [TruffleHog](https://github.com/dxa4481/truffleHog) | 11., [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Apex (Salesforce) | [PMD](https://pmd.github.io/pmd/index.html) | 12.1, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| C/C++ | [Flawfinder](https://github.com/david-a-wheeler/flawfinder) | 10.7, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Elixir (Phoenix) | [Sobelow](https://github.com/nccgroup/sobelow) | 11.10, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Go | [Gosec](https://github.com/securego/gosec) | 10.7, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Groovy ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 11.3 (Gradle) & 11.9 (Ant, Maven, SBT), [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Helm Charts | [Kubesec](https://github.com/controlplaneio/kubesec) | 13.1, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Java ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 10.6 (Maven), 10.8 (Gradle) & 11.9 (Ant, SBT), [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| JavaScript | [ESLint security plugin](https://github.com/nodesecurity/eslint-plugin-security) | 11.8, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.2 |
|
||||
| Kubernetes manifests | [Kubesec](https://github.com/controlplaneio/kubesec) | 12.6, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Node.js | [NodeJsScan](https://github.com/ajinabraham/NodeJsScan) | 11.1, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| PHP | [phpcs-security-audit](https://github.com/FloeDesignTechnologies/phpcs-security-audit) | 10.8, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| Python ([pip](https://pip.pypa.io/en/stable/)) | [bandit](https://github.com/PyCQA/bandit) | 10.3, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| React | [ESLint react plugin](https://github.com/yannickcr/eslint-plugin-react) | 12.5, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.2 |
|
||||
| Ruby on Rails | [brakeman](https://brakemanscanner.org) | 10.3, [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.1 |
|
||||
| Scala ([Ant](https://ant.apache.org/), [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) and [SBT](https://www.scala-sbt.org/)) | [SpotBugs](https://spotbugs.github.io/) with the [find-sec-bugs](https://find-sec-bugs.github.io/) plugin | 11.0 (SBT) & 11.9 (Ant, Gradle, Maven), [moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.3 |
|
||||
| TypeScript | [ESLint security plugin](https://github.com/nodesecurity/eslint-plugin-security) | 11.9, [merged](https://gitlab.com/gitlab-org/gitlab/-/issues/36059) with ESLint in 13.2 |
|
||||
|
||||
NOTE: **Note:**
|
||||
The Java analyzers can also be used for variants like the
|
||||
|
|
@ -98,7 +98,7 @@ The Java analyzers can also be used for variants like the
|
|||
|
||||
### Making SAST analyzers available to all GitLab tiers
|
||||
|
||||
All open source (OSS) analyzers are in the process of being reviewed and potentially moved to the GitLab Core tier. Progress can be
|
||||
All open source (OSS) analyzers have been moved to the GitLab Core tier. Progress can be
|
||||
tracked in the corresponding
|
||||
[epic](https://gitlab.com/groups/gitlab-org/-/epics/2098).
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ malicious users to gain access to resources like deployment environments.
|
|||
GitLab 11.9 includes a new check called Secret Detection. It scans the content of the repository
|
||||
to find API keys and other information that should not be there.
|
||||
|
||||
GitLab displays identified secrets as part of the SAST reports visibly in a few places:
|
||||
GitLab displays identified secrets visibly in a few places:
|
||||
|
||||
- [Security Dashboard](../security_dashboard/)
|
||||
- Pipelines' **Security** tab
|
||||
|
|
@ -46,6 +46,25 @@ CAUTION: **Caution:**
|
|||
If you use your own Runners, make sure the Docker version installed
|
||||
is **not** `19.03.0`. See [troubleshooting information](../sast#error-response-from-daemon-error-processing-tar-file-docker-tar-relocation-error) for details.
|
||||
|
||||
### Making Secret Detection available to all GitLab tiers
|
||||
|
||||
To make Secret Detection available to as many customers as possible, we have enabled it for all GitLab tiers.
|
||||
However not all features are available on every tier. See the breakdown below for more details.
|
||||
|
||||
#### Summary of features per tier
|
||||
|
||||
Different features are available in different [GitLab tiers](https://about.gitlab.com/pricing/),
|
||||
as shown in the following table:
|
||||
|
||||
| Capability | In Core | In Ultimate |
|
||||
|:--------------------------------------------------------------------------|:--------------------|:-------------------|
|
||||
| [Configure Secret Detection Scanners](#configuration) | **{check-circle}** | **{check-circle}** |
|
||||
| [Customize Secret Detection Settings](#customizing-settings) | **{check-circle}** | **{check-circle}** |
|
||||
| View [JSON Report](../sast/index.md#reports-json-format) | **{check-circle}** | **{check-circle}** |
|
||||
| [Presentation of JSON Report in Merge Request](#overview) | **{dotted-circle}** | **{check-circle}** |
|
||||
| [Interaction with Vulnerabilities](../vulnerabilities/index.md) | **{dotted-circle}** | **{check-circle}** |
|
||||
| [Access to Security Dashboard](../security_dashboard/index.md) | **{dotted-circle}** | **{check-circle}** |
|
||||
|
||||
## Configuration
|
||||
|
||||
NOTE: **Note:**
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@ Available commands:
|
|||
[output truncated]
|
||||
```
|
||||
|
||||
NOTE: **Note:**
|
||||
GitLab currently only supports NuGet v3. Earlier versions are not supported.
|
||||
|
||||
### macOS support
|
||||
|
||||
For macOS, you can also use [Mono](https://www.mono-project.com/) to run
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ The following table depicts the various user permission levels in a project.
|
|||
| Create/edit requirements **(ULTIMATE)** | | ✓ | ✓ | ✓ | ✓ |
|
||||
| Pull [packages](packages/index.md) | | ✓ | ✓ | ✓ | ✓ |
|
||||
| Publish [packages](packages/index.md) | | | ✓ | ✓ | ✓ |
|
||||
| Create/edit/delete a Cleanup policy | | | ✓ | ✓ | ✓ |
|
||||
| Upload [Design Management](project/issues/design_management.md) files | | | ✓ | ✓ | ✓ |
|
||||
| Create/edit/delete [Releases](project/releases/index.md)| | | ✓ | ✓ | ✓ |
|
||||
| Create new branches | | | ✓ | ✓ | ✓ |
|
||||
|
|
@ -128,7 +129,7 @@ The following table depicts the various user permission levels in a project.
|
|||
| Push to protected branches | | | | ✓ | ✓ |
|
||||
| Turn on/off protected branch push for devs | | | | ✓ | ✓ |
|
||||
| Enable/disable tag protections | | | | ✓ | ✓ |
|
||||
| Edit project | | | | ✓ | ✓ |
|
||||
| Edit project settings | | | | ✓ | ✓ |
|
||||
| Edit project badges | | | | ✓ | ✓ |
|
||||
| Share (invite) projects with groups | | | | ✓ (*8*) | ✓ (*8*)|
|
||||
| Add deploy keys to project | | | | ✓ | ✓ |
|
||||
|
|
|
|||
|
|
@ -1,95 +1,5 @@
|
|||
---
|
||||
stage: Monitor
|
||||
group: Health
|
||||
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/#designated-technical-writers
|
||||
redirect_to: '../../../operations/error_tracking.md'
|
||||
---
|
||||
|
||||
# Error Tracking
|
||||
|
||||
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/169) in GitLab 11.8.
|
||||
|
||||
Error Tracking allows developers to easily discover and view the errors that their application may be generating. By surfacing error information where the code is being developed, efficiency and awareness can be increased.
|
||||
|
||||
## Sentry error tracking
|
||||
|
||||
[Sentry](https://sentry.io/) is an open source error tracking system. GitLab allows administrators to connect Sentry to GitLab, to allow users to view a list of Sentry errors in GitLab.
|
||||
|
||||
### Deploying Sentry
|
||||
|
||||
You may sign up to the cloud hosted <https://sentry.io>, deploy your own [on-premise instance](https://docs.sentry.io/server/installation/) or use GitLab to [install Sentry to a Kubernetes cluster](../../clusters/applications.md#install-sentry-using-gitlab-cicd).
|
||||
|
||||
### Enabling Sentry
|
||||
|
||||
NOTE: **Note:**
|
||||
You will need at least Maintainer [permissions](../../permissions.md) to enable the Sentry integration.
|
||||
|
||||
GitLab provides an easy way to connect Sentry to your project:
|
||||
|
||||
1. Sign up to Sentry.io or [deploy your own](#deploying-sentry) Sentry instance.
|
||||
1. [Create](https://docs.sentry.io/guides/integrate-frontend/create-new-project/) a new Sentry project. For each GitLab project that you want to integrate, we recommend that you create a new Sentry project.
|
||||
1. [Find or generate](https://docs.sentry.io/api/auth/) a Sentry auth token for your Sentry project.
|
||||
Make sure to give the token at least the following scopes: `event:read` and `project:read`.
|
||||
1. Navigate to your project’s **Settings > Operations**.
|
||||
1. Ensure that the **Active** checkbox is set.
|
||||
1. In the **Sentry API URL** field, enter your Sentry hostname. For example, enter `https://sentry.example.com` if this is the address at which your Sentry instance is available. For the SaaS version of Sentry, the hostname will be `https://sentry.io`.
|
||||
1. In the **Auth Token** field, enter the token you previously generated.
|
||||
1. Click the **Connect** button to test the connection to Sentry and populate the **Project** dropdown.
|
||||
1. From the **Project** dropdown, choose a Sentry project to link to your GitLab project.
|
||||
1. Click **Save changes** for the changes to take effect.
|
||||
1. You can now visit **Operations > Error Tracking** in your project's sidebar to [view a list](#error-tracking-list) of Sentry errors.
|
||||
|
||||
### Enabling GitLab issues links
|
||||
|
||||
You may also want to enable Sentry's GitLab integration by following the steps in the [Sentry documentation](https://docs.sentry.io/workflow/integrations/global-integrations/#gitlab)
|
||||
|
||||
## Error Tracking List
|
||||
|
||||
NOTE: **Note:**
|
||||
You will need at least Reporter [permissions](../../permissions.md) to view the Error Tracking list.
|
||||
|
||||
You can find the Error Tracking list at **Operations > Error Tracking** in your project's sidebar.
|
||||
Here, you can filter errors by title or by status (one of Ignored , Resolved, or Unresolved) and sort in descending order by Frequency, First Seen, or Last Seen. By default, the error list is ordered by Last Seen and filtered to Unresolved errors.
|
||||
|
||||

|
||||
|
||||
## Error Details
|
||||
|
||||
From error list, users can navigate to the error details page by clicking the title of any error.
|
||||
|
||||
This page has:
|
||||
|
||||
- A link to the Sentry issue.
|
||||
- A link to the GitLab commit if the Sentry [release ID/version](https://docs.sentry.io/workflow/releases/?platform=javascript#configure-sdk) on the Sentry Issue's first release matches a commit SHA in your GitLab hosted project.
|
||||
- Other details about the issue, including a full stack trace.
|
||||
- In [GitLab 12.7 and newer](https://gitlab.com/gitlab-org/gitlab/-/issues/36246), language and urgency are displayed.
|
||||
|
||||
By default, a **Create issue** button is displayed:
|
||||
|
||||

|
||||
|
||||
If you create a GitLab issue from the error, the **Create issue** button will change to a **View issue** button and a link to the GitLab issue will surface within the error detail section:
|
||||
|
||||

|
||||
|
||||
## Taking Action on errors
|
||||
|
||||
You can take action on Sentry Errors from within the GitLab UI.
|
||||
|
||||
### Ignoring errors
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39665) in GitLab 12.7.
|
||||
|
||||
From within the [Error Details](#error-details) page you can ignore a Sentry error by simply clicking the **Ignore** button near the top of the page.
|
||||
|
||||
Ignoring an error will prevent it from appearing in the [Error Tracking List](#error-tracking-list), and will silence notifications that were set up within Sentry.
|
||||
|
||||
### Resolving errors
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39825) in GitLab 12.7.
|
||||
|
||||
From within the [Error Details](#error-details) page you can resolve a Sentry error by
|
||||
clicking the **Resolve** button near the top of the page.
|
||||
|
||||
Marking an error as resolved indicates that the error has stopped firing events. If a GitLab issue is linked to the error, then the issue will be closed.
|
||||
|
||||
If another event occurs, the error reverts to unresolved.
|
||||
This document was moved to [another location](../../../operations/error_tracking.md).
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ to remove a fork relationship.
|
|||
|
||||
### Error Tracking
|
||||
|
||||
Configure Error Tracking to discover and view [Sentry errors within GitLab](../operations/error_tracking.md).
|
||||
Configure Error Tracking to discover and view [Sentry errors within GitLab](../../../operations/error_tracking.md).
|
||||
|
||||
### Jaeger tracing **(ULTIMATE)**
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Use the following code to search for users who:
|
|||
- Are also pending confirmation on or after the date of upgrade.
|
||||
|
||||
```ruby
|
||||
users_apparently_pending_reconfirmation = User.where(confirmed_at: nil).where('confirmation_sent_at >= ?', date_of_upgrade_to_13_2)
|
||||
User.where(confirmed_at: nil).where('LENGTH(confirmation_token) = 32')
|
||||
```
|
||||
|
||||
## What does it look like when a user is blocked?
|
||||
|
|
|
|||
|
|
@ -52,8 +52,7 @@ sast:
|
|||
rules:
|
||||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
script:
|
||||
- /analyzer run
|
||||
|
||||
|
|
@ -65,7 +64,6 @@ bandit-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /bandit/
|
||||
exists:
|
||||
- '**/*.py'
|
||||
|
|
@ -106,7 +104,6 @@ flawfinder-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /flawfinder/
|
||||
exists:
|
||||
- '**/*.c'
|
||||
|
|
@ -120,7 +117,6 @@ kubesec-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /kubesec/ &&
|
||||
$SCAN_KUBERNETES_MANIFESTS == 'true'
|
||||
|
||||
|
|
@ -132,7 +128,6 @@ gosec-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /gosec/
|
||||
exists:
|
||||
- '**/*.go'
|
||||
|
|
@ -145,7 +140,6 @@ nodejs-scan-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /nodejs-scan/
|
||||
exists:
|
||||
- 'package.json'
|
||||
|
|
@ -158,7 +152,6 @@ phpcs-security-audit-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /phpcs-security-audit/
|
||||
exists:
|
||||
- '**/*.php'
|
||||
|
|
@ -171,7 +164,6 @@ pmd-apex-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /pmd-apex/
|
||||
exists:
|
||||
- '**/*.cls'
|
||||
|
|
@ -184,7 +176,6 @@ secrets-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /secrets/
|
||||
|
||||
security-code-scan-sast:
|
||||
|
|
@ -195,7 +186,6 @@ security-code-scan-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /security-code-scan/
|
||||
exists:
|
||||
- '**/*.csproj'
|
||||
|
|
@ -209,7 +199,6 @@ sobelow-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /sobelow/
|
||||
exists:
|
||||
- 'mix.exs'
|
||||
|
|
@ -222,7 +211,6 @@ spotbugs-sast:
|
|||
- if: $SAST_DISABLED || $SAST_DISABLE_DIND == 'false'
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsast\b/ &&
|
||||
$SAST_DEFAULT_ANALYZERS =~ /spotbugs/
|
||||
exists:
|
||||
- '**/*.groovy'
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ secret_detection_default_branch:
|
|||
rules:
|
||||
- if: $SECRET_DETECTION_DISABLED
|
||||
when: never
|
||||
- if: $CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsecret_detection\b/
|
||||
- if: $CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH
|
||||
script:
|
||||
- /analyzer run
|
||||
|
||||
|
|
@ -31,8 +30,7 @@ secret_detection:
|
|||
rules:
|
||||
- if: $SECRET_DETECTION_DISABLED
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bsecret_detection\b/
|
||||
- if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
|
||||
script:
|
||||
- git fetch origin $CI_DEFAULT_BRANCH $CI_BUILD_REF_NAME
|
||||
- export SECRET_DETECTION_COMMIT_TO=$(git log --left-right --cherry-pick --pretty=format:"%H" refs/remotes/origin/$CI_DEFAULT_BRANCH...refs/remotes/origin/$CI_BUILD_REF_NAME | tail -n 1)
|
||||
|
|
|
|||
|
|
@ -794,6 +794,9 @@ msgstr[1] ""
|
|||
msgid "(%{mrCount} merged)"
|
||||
msgstr ""
|
||||
|
||||
msgid "(%{value}) has already been taken"
|
||||
msgstr ""
|
||||
|
||||
msgid "(No changes)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -23876,6 +23879,9 @@ msgstr ""
|
|||
msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6."
|
||||
msgstr ""
|
||||
|
||||
msgid "The value of the provided variable exceeds the %{count} character limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "The vulnerability is no longer detected. Verify the vulnerability has been fixed or removed before changing its status."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -9,12 +9,39 @@ RSpec.describe Ci::InstanceVariable do
|
|||
|
||||
it { is_expected.to include_module(Ci::Maskable) }
|
||||
it { is_expected.to validate_uniqueness_of(:key).with_message(/\(\w+\) has already been taken/) }
|
||||
it { is_expected.to validate_length_of(:encrypted_value).is_at_most(1024).with_message(/Variables over 700 characters risk exceeding the limit/) }
|
||||
it { is_expected.to validate_length_of(:value).is_at_most(10_000).with_message(/The value of the provided variable exceeds the 10000 character limit/) }
|
||||
|
||||
it_behaves_like 'includes Limitable concern' do
|
||||
subject { build(:ci_instance_variable) }
|
||||
end
|
||||
|
||||
describe '#value' do
|
||||
context 'without application limit' do
|
||||
# Ensures breakage if encryption algorithm changes
|
||||
let(:variable) { build(:ci_instance_variable, key: 'too_long', value: value) }
|
||||
|
||||
before do
|
||||
allow(variable).to receive(:valid?).and_return(true)
|
||||
end
|
||||
|
||||
context 'when value is over the limit' do
|
||||
let(:value) { SecureRandom.alphanumeric(10_002) }
|
||||
|
||||
it 'raises a database level error' do
|
||||
expect { variable.save }.to raise_error(ActiveRecord::StatementInvalid)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when value is under the limit' do
|
||||
let(:value) { SecureRandom.alphanumeric(10_000) }
|
||||
|
||||
it 'does not raise database level error' do
|
||||
expect { variable.save }.not_to raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.unprotected' do
|
||||
subject { described_class.unprotected }
|
||||
|
||||
|
|
|
|||
|
|
@ -1698,9 +1698,9 @@ RSpec.describe Project do
|
|||
|
||||
subject { project.pages_deployed? }
|
||||
|
||||
context 'if public folder does exist' do
|
||||
context 'if pages are deployed' do
|
||||
before do
|
||||
allow(Dir).to receive(:exist?).with(project.public_pages_path).and_return(true)
|
||||
project.pages_metadatum.update_column(:deployed, true)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
|
|
|
|||
|
|
@ -110,20 +110,19 @@ RSpec.describe ::API::Admin::Ci::Variables do
|
|||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'does not allow values above 700 characters' do
|
||||
it 'does not allow values above 10,000 characters' do
|
||||
too_long_message = <<~MESSAGE.strip
|
||||
The encrypted value of the provided variable exceeds 1024 bytes. \
|
||||
Variables over 700 characters risk exceeding the limit.
|
||||
The value of the provided variable exceeds the 10000 character limit
|
||||
MESSAGE
|
||||
|
||||
expect do
|
||||
post api('/admin/ci/variables', admin),
|
||||
params: { key: 'too_long', value: SecureRandom.hex(701) }
|
||||
params: { key: 'too_long', value: SecureRandom.hex(10_001) }
|
||||
end.not_to change { ::Ci::InstanceVariable.count }
|
||||
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response).to match('message' =>
|
||||
a_hash_including('encrypted_value' => [too_long_message]))
|
||||
a_hash_including('value' => [too_long_message]))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ RSpec.describe Ci::CreatePipelineService do
|
|||
it 'pull it from Auto-DevOps' do
|
||||
pipeline = execute_service
|
||||
expect(pipeline).to be_auto_devops_source
|
||||
expect(pipeline.builds.map(&:name)).to match_array(%w[build code_quality eslint-sast test])
|
||||
expect(pipeline.builds.map(&:name)).to match_array(%w[build code_quality eslint-sast secret_detection_default_branch secrets-sast test])
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ RSpec.describe Projects::UpdatePagesService do
|
|||
|
||||
# Check that all expected files are extracted
|
||||
%w[index.html zero .hidden/file].each do |filename|
|
||||
expect(File.exist?(File.join(project.public_pages_path, filename))).to be_truthy
|
||||
expect(File.exist?(File.join(project.pages_path, 'public', filename))).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -65,15 +65,17 @@ RSpec.describe Projects::UpdatePagesService do
|
|||
it 'removes pages after destroy' do
|
||||
expect(PagesWorker).to receive(:perform_in)
|
||||
expect(project.pages_deployed?).to be_falsey
|
||||
expect(Dir.exist?(File.join(project.pages_path))).to be_falsey
|
||||
|
||||
expect(execute).to eq(:success)
|
||||
|
||||
expect(project.pages_metadatum).to be_deployed
|
||||
expect(project.pages_deployed?).to be_truthy
|
||||
expect(Dir.exist?(File.join(project.pages_path))).to be_truthy
|
||||
|
||||
project.destroy
|
||||
|
||||
expect(project.pages_deployed?).to be_falsey
|
||||
expect(Dir.exist?(File.join(project.pages_path))).to be_falsey
|
||||
expect(ProjectPagesMetadatum.find_by_project_id(project)).to be_nil
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue