Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
ee936c190e
commit
1b5db0f4a6
|
@ -0,0 +1,60 @@
|
|||
<script>
|
||||
import { s__ } from '~/locale';
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
import { GlFormGroup, GlFormSelect } from '@gitlab/ui';
|
||||
import { timezones } from '~/monitoring/format_date';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlFormGroup,
|
||||
GlFormSelect,
|
||||
},
|
||||
computed: {
|
||||
...mapState(['dashboardTimezone']),
|
||||
dashboardTimezoneModel: {
|
||||
get() {
|
||||
return this.dashboardTimezone.selected;
|
||||
},
|
||||
set(selected) {
|
||||
this.setDashboardTimezone(selected);
|
||||
},
|
||||
},
|
||||
options() {
|
||||
return [
|
||||
{
|
||||
value: timezones.LOCAL,
|
||||
text: s__("MetricsSettings|User's local timezone"),
|
||||
},
|
||||
{
|
||||
value: timezones.UTC,
|
||||
text: s__('MetricsSettings|UTC (Coordinated Universal Time)'),
|
||||
},
|
||||
];
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['setDashboardTimezone']),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<gl-form-group
|
||||
:label="s__('MetricsSettings|Dashboard timezone')"
|
||||
label-for="dashboard-timezone-setting"
|
||||
>
|
||||
<template #description>
|
||||
{{
|
||||
s__(
|
||||
"MetricsSettings|Choose whether to display dashboard metrics in UTC or the user's local timezone.",
|
||||
)
|
||||
}}
|
||||
</template>
|
||||
|
||||
<gl-form-select
|
||||
id="dashboard-timezone-setting"
|
||||
v-model="dashboardTimezoneModel"
|
||||
:options="options"
|
||||
/>
|
||||
</gl-form-group>
|
||||
</template>
|
|
@ -2,12 +2,14 @@
|
|||
import { mapState, mapActions } from 'vuex';
|
||||
import { GlDeprecatedButton, GlLink } from '@gitlab/ui';
|
||||
import ExternalDashboard from './form_group/external_dashboard.vue';
|
||||
import DashboardTimezone from './form_group/dashboard_timezone.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlDeprecatedButton,
|
||||
GlLink,
|
||||
ExternalDashboard,
|
||||
DashboardTimezone,
|
||||
},
|
||||
computed: {
|
||||
...mapState(['helpPage']),
|
||||
|
@ -40,6 +42,7 @@ export default {
|
|||
</div>
|
||||
<div class="settings-content">
|
||||
<form>
|
||||
<dashboard-timezone />
|
||||
<external-dashboard />
|
||||
<gl-deprecated-button variant="success" @click="saveChanges">
|
||||
{{ __('Save Changes') }}
|
||||
|
|
|
@ -7,11 +7,15 @@ import * as mutationTypes from './mutation_types';
|
|||
export const setExternalDashboardUrl = ({ commit }, url) =>
|
||||
commit(mutationTypes.SET_EXTERNAL_DASHBOARD_URL, url);
|
||||
|
||||
export const setDashboardTimezone = ({ commit }, selected) =>
|
||||
commit(mutationTypes.SET_DASHBOARD_TIMEZONE, selected);
|
||||
|
||||
export const saveChanges = ({ state, dispatch }) =>
|
||||
axios
|
||||
.patch(state.operationsSettingsEndpoint, {
|
||||
project: {
|
||||
metrics_setting_attributes: {
|
||||
dashboard_timezone: state.dashboardTimezone.selected,
|
||||
external_dashboard_url: state.externalDashboard.url,
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
/* eslint-disable import/prefer-default-export */
|
||||
|
||||
export const SET_EXTERNAL_DASHBOARD_URL = 'SET_EXTERNAL_DASHBOARD_URL';
|
||||
export const SET_DASHBOARD_TIMEZONE = 'SET_DASHBOARD_TIMEZONE';
|
||||
|
|
|
@ -4,4 +4,7 @@ export default {
|
|||
[types.SET_EXTERNAL_DASHBOARD_URL](state, url) {
|
||||
state.externalDashboard.url = url;
|
||||
},
|
||||
[types.SET_DASHBOARD_TIMEZONE](state, selected) {
|
||||
state.dashboardTimezone.selected = selected;
|
||||
},
|
||||
};
|
||||
|
|
|
@ -5,4 +5,8 @@ export default (initialState = {}) => ({
|
|||
url: initialState.externalDashboardUrl,
|
||||
helpPage: initialState.externalDashboardHelpPage,
|
||||
},
|
||||
dashboardTimezone: {
|
||||
selected: initialState.dashboardTimezoneSetting,
|
||||
helpPage: initialState.dashboardTimezoneHelpPage,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -9,4 +9,8 @@ class ProjectMetricsSetting < ApplicationRecord
|
|||
addressable_url: { enforce_sanitization: true, ascii_only: true }
|
||||
|
||||
enum dashboard_timezone: { local: 0, utc: 1 }
|
||||
|
||||
def dashboard_timezone=(val)
|
||||
super(val&.downcase)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.js-operation-settings{ data: { operations_settings_endpoint: project_settings_operations_path(@project),
|
||||
help_page: help_page_path('user/project/integrations/prometheus'),
|
||||
external_dashboard: { url: metrics_external_dashboard_url,
|
||||
help_page: help_page_path('user/project/operations/linking_to_an_external_dashboard'),
|
||||
} } }
|
||||
help_page: help_page_path('user/project/operations/linking_to_an_external_dashboard') },
|
||||
dashboard_timezone: { setting: metrics_dashboard_timezone.upcase } } }
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Display dates on metrics dashboards in UTC time zone
|
||||
merge_request: 32746
|
||||
author:
|
||||
type: added
|
|
@ -35,6 +35,7 @@ awardable
|
|||
Axios
|
||||
Azure
|
||||
B-tree
|
||||
backfilling
|
||||
backport
|
||||
backported
|
||||
backporting
|
||||
|
@ -233,6 +234,7 @@ lookups
|
|||
loopback
|
||||
Lucene
|
||||
Maildir
|
||||
Mailgun
|
||||
Makefile
|
||||
Makefiles
|
||||
Markdown
|
||||
|
@ -348,6 +350,8 @@ redirections
|
|||
refactorings
|
||||
referer
|
||||
referers
|
||||
reflog
|
||||
reflogs
|
||||
reindex
|
||||
reindexed
|
||||
reindexes
|
||||
|
|
|
@ -227,7 +227,7 @@ Consul is a tool for service discovery and configuration. Consul is distributed,
|
|||
- Configuration:
|
||||
- [Omnibus](https://docs.gitlab.com/omnibus/settings/database.html#disabling-automatic-database-migration)
|
||||
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/migrations/)
|
||||
- [Source](../update/upgrading_from_source.md#13-install-libs-migrations-etc)
|
||||
- [Source](../update/upgrading_from_source.md#13-install-libraries-migrations-etc)
|
||||
- Layer: Core Service (Data)
|
||||
|
||||
#### Elasticsearch
|
||||
|
@ -523,7 +523,7 @@ Redis is packaged to provide a place to store:
|
|||
|
||||
- [Project page](https://github.com/docker/distribution/blob/master/README.md)
|
||||
- Configuration:
|
||||
- [Omnibus](../update/upgrading_from_source.md#13-install-libs-migrations-etc)
|
||||
- [Omnibus](../update/upgrading_from_source.md#13-install-libraries-migrations-etc)
|
||||
- [Charts](https://docs.gitlab.com/charts/charts/registry/)
|
||||
- [Source](../administration/packages/container_registry.md#enable-the-container-registry)
|
||||
- [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/registry.md)
|
||||
|
|
|
@ -89,9 +89,9 @@ If your GitLab instance has any GitLab Runners associated with it, it is very
|
|||
important to upgrade the GitLab Runners to match the GitLab minor version that was
|
||||
upgraded to. This is to ensure [compatibility with GitLab versions](https://docs.gitlab.com/runner/#compatibility-with-gitlab-versions).
|
||||
|
||||
### Version 12 onwards: Extra step for major upgrades
|
||||
### Version 12 onward: Extra step for major upgrades
|
||||
|
||||
From version 12 onwards, an additional step is required. More significant migrations
|
||||
From version 12 onward, an additional step is required. More significant migrations
|
||||
may occur during major release upgrades.
|
||||
|
||||
To ensure these are successful:
|
||||
|
|
|
@ -35,7 +35,7 @@ bundle exec rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4
|
|||
```
|
||||
|
||||
There is a default limit (100) to the number of ids supported in the migration
|
||||
process. You can modify this limit by using the env variable `LIMIT`.
|
||||
process. You can modify this limit by using the environment variable `LIMIT`.
|
||||
|
||||
```shell
|
||||
sudo gitlab-rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4 LIMIT=50
|
||||
|
@ -83,7 +83,7 @@ bundle exec rake gitlab:snippets:list_non_migrated RAILS_ENV=production
|
|||
|
||||
As the number of non-migrated snippets can be large, we limit
|
||||
by default the size of the number of ids returned to 100. You can
|
||||
modify this limit by using the env variable `LIMIT`.
|
||||
modify this limit by using the environment variable `LIMIT`.
|
||||
|
||||
```shell
|
||||
sudo gitlab-rake gitlab:snippets:list_non_migrated LIMIT=200
|
||||
|
|
|
@ -65,7 +65,7 @@ and expand **Outbound requests**:
|
|||
|
||||
The allowed entries can be separated by semicolons, commas or whitespaces
|
||||
(including newlines) and be in different formats like hostnames, IP addresses and/or
|
||||
IP ranges. IPv6 is supported. Hostnames that contain unicode characters should
|
||||
IP ranges. IPv6 is supported. Hostnames that contain Unicode characters should
|
||||
use IDNA encoding.
|
||||
|
||||
The allowlist can hold a maximum of 1000 entries. Each entry can be a maximum of
|
||||
|
|
|
@ -344,7 +344,7 @@ NOTE: **Note:**
|
|||
The example `Host` aliases are defined as `user_1.gitlab.com` and
|
||||
`user_2.gitlab.com` for efficiency and transparency. Advanced configurations
|
||||
are more difficult to maintain; using this type of alias makes it easier to
|
||||
understand when using other tools such as `git remote` subcommands. SSH
|
||||
understand when using other tools such as `git remote` sub-commands. SSH
|
||||
would understand any string as a `Host` alias thus `Tanuki1` and `Tanuki2`,
|
||||
despite giving very little context as to where they point, would also work.
|
||||
|
||||
|
@ -385,7 +385,7 @@ GitLab integrates with the system-installed SSH daemon, designating a user
|
|||
connecting to the GitLab server over SSH are identified by their SSH key instead
|
||||
of their username.
|
||||
|
||||
SSH *client* operations performed on the GitLab server wil be executed as this
|
||||
SSH *client* operations performed on the GitLab server will be executed as this
|
||||
user. Although it is possible to modify the SSH configuration for this user to,
|
||||
e.g., provide a private SSH key to authenticate these requests by, this practice
|
||||
is **not supported** and is strongly discouraged as it presents significant
|
||||
|
|
|
@ -27,7 +27,7 @@ Your GitLab instance can perform HTTP POST requests on the following events:
|
|||
- `user_remove_from_group`
|
||||
- `user_update_for_group`
|
||||
|
||||
The triggers for most of these are self-explanatory, but `project_update` and `project_rename` deserve some clarification: `project_update` is fired any time an attribute of a project is changed (name, description, tags, etc.) *unless* the `path` attribute is also changed. In that case, a `project_rename` is triggered instead (so that, for instance, if all you care about is the repo URL, you can just listen for `project_rename`).
|
||||
The triggers for most of these are self-explanatory, but `project_update` and `project_rename` deserve some clarification: `project_update` is fired any time an attribute of a project is changed (name, description, tags, etc.) *unless* the `path` attribute is also changed. In that case, a `project_rename` is triggered instead (so that, for instance, if all you care about is the repository URL, you can just listen for `project_rename`).
|
||||
|
||||
`user_failed_login` is sent whenever a **blocked** user attempts to login and denied access.
|
||||
|
||||
|
@ -313,7 +313,7 @@ If the user is blocked via LDAP, `state` will be `ldap_blocked`.
|
|||
}
|
||||
```
|
||||
|
||||
`owner_name` and `owner_email` are always `null`. Please see <https://gitlab.com/gitlab-org/gitlab/-/issues/20011>.
|
||||
`owner_name` and `owner_email` are always `null`. Please see [issue #20011](https://gitlab.com/gitlab-org/gitlab/-/issues/20011).
|
||||
|
||||
**Group renamed:**
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ Git-related queries from GitLab.
|
|||
The following relate to Git Large File Storage:
|
||||
|
||||
- [Getting Started with Git LFS](https://about.gitlab.com/blog/2017/01/30/getting-started-with-git-lfs-tutorial/)
|
||||
- [Migrate an existing Git repo with Git LFS](lfs/migrate_to_git_lfs.md)
|
||||
- [Migrate an existing Git repository with Git LFS](lfs/migrate_to_git_lfs.md)
|
||||
- [Removing objects from LFS](lfs/index.md#removing-objects-from-lfs)
|
||||
- [GitLab Git LFS user documentation](lfs/index.md)
|
||||
- [GitLab Git LFS admin documentation](../../administration/lfs/index.md)
|
||||
|
|
|
@ -37,7 +37,7 @@ Documentation for GitLab instance administrators is under [LFS administration do
|
|||
- Any Git LFS request will ask for HTTPS credentials to be provided so a good Git
|
||||
credentials store is recommended
|
||||
- Git LFS always assumes HTTPS so if you have GitLab server on HTTP you will have
|
||||
to add the URL to Git config manually (see [troubleshooting](#troubleshooting))
|
||||
to add the URL to Git configuration manually (see [troubleshooting](#troubleshooting))
|
||||
|
||||
NOTE: **Note:**
|
||||
With 8.12 GitLab added LFS support to SSH. The Git LFS communication
|
||||
|
@ -83,7 +83,7 @@ git clone git@gitlab.example.com:group/project.git
|
|||
```
|
||||
|
||||
If you already cloned the repository and you want to get the latest LFS object
|
||||
that are on the remote repository, eg. for a branch from origin:
|
||||
that are on the remote repository, such as for a branch from origin:
|
||||
|
||||
```shell
|
||||
git lfs fetch origin master
|
||||
|
@ -91,7 +91,7 @@ git lfs fetch origin master
|
|||
|
||||
### Migrate an existing repo to Git LFS
|
||||
|
||||
Read the documentation on how to [migrate an existing Git repo with Git LFS](migrate_to_git_lfs.md).
|
||||
Read the documentation on how to [migrate an existing Git repository with Git LFS](migrate_to_git_lfs.md).
|
||||
|
||||
### Removing objects from LFS
|
||||
|
||||
|
@ -128,7 +128,7 @@ in order to do that you can edit the `.gitattributes` file manually:
|
|||
```
|
||||
|
||||
After a file type has been registered as lockable, Git LFS will make
|
||||
them readonly on the file system automatically. This means you will
|
||||
them read-only on the file system automatically. This means you will
|
||||
need to lock the file before editing it.
|
||||
|
||||
### Managing Locked Files
|
||||
|
@ -205,8 +205,8 @@ If the status `error 501` is shown, it is because:
|
|||
on how to enable LFS support.
|
||||
|
||||
- Git LFS client version is not supported by GitLab server. Check your Git LFS
|
||||
version with `git lfs version`. Check the Git config of the project for traces
|
||||
of deprecated API with `git lfs -l`. If `batch = false` is set in the config,
|
||||
version with `git lfs version`. Check the Git configuration of the project for traces
|
||||
of deprecated API with `git lfs -l`. If `batch = false` is set in the configuration,
|
||||
remove the line and try to update your Git LFS client. Only version 1.0.1 and
|
||||
newer are supported.
|
||||
|
||||
|
@ -218,9 +218,9 @@ the LFS client is trying to reach GitLab through HTTPS. However, your GitLab
|
|||
instance is being served on HTTP.
|
||||
|
||||
This behavior is caused by Git LFS using HTTPS connections by default when a
|
||||
`lfsurl` is not set in the Git config.
|
||||
`lfsurl` is not set in the Git configuration.
|
||||
|
||||
To prevent this from happening, set the lfs URL in project Git config:
|
||||
To prevent this from happening, set the LFS URL in project Git configuration:
|
||||
|
||||
```shell
|
||||
git config --add lfs.url "http://gitlab.example.com/group/project.git/info/lfs"
|
||||
|
|
|
@ -172,7 +172,7 @@ GitLab.com), therefore, you don't need to do anything server-side.
|
|||
If the terminal doesn't prompt you with a full response on `git-lfs` commands,
|
||||
[install the Git LFS client](https://git-lfs.github.com/) first.
|
||||
|
||||
1. Inside the repo, run the following command to initiate LFS:
|
||||
1. Inside the repository, run the following command to initiate LFS:
|
||||
|
||||
```shell
|
||||
git lfs install
|
||||
|
@ -189,7 +189,7 @@ GitLab.com), therefore, you don't need to do anything server-side.
|
|||
```
|
||||
|
||||
Once you do that, run `git status` and you'll see `.gitattributes` added
|
||||
to your repo. It collects all file patterns that you chose to track via
|
||||
to your repository. It collects all file patterns that you chose to track via
|
||||
`git-lfs`.
|
||||
|
||||
1. Add the files, commit and push them to GitLab:
|
||||
|
|
|
@ -16,18 +16,18 @@ the files are still referenced by previous commits.
|
|||
|
||||
Through the method described on this document, first migrate
|
||||
to Git LFS with a tool such as the open source community-maintained [BFG](https://rtyley.github.io/bfg-repo-cleaner/)
|
||||
through a mirror repo, then clean up the repository's history,
|
||||
through a mirror repository, then clean up the repository's history,
|
||||
and lastly create LFS tracking rules to prevent new binary files
|
||||
from being added.
|
||||
|
||||
This tutorial was inspired by the guide
|
||||
[Use BFG to migrate a repo to Git LFS](https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html).
|
||||
[Use BFG to migrate a repository to Git LFS](https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html).
|
||||
For more information on Git LFS, see the [references](#references)
|
||||
below.
|
||||
|
||||
CAUTION: **Warning:**
|
||||
The method described on this guide rewrites Git history. Make
|
||||
sure to back up your repo before beginning and use it at your
|
||||
sure to back up your repository before beginning and use it at your
|
||||
own risk.
|
||||
|
||||
## Requirements
|
||||
|
@ -71,7 +71,7 @@ Consider an example upstream project, `git@gitlab.com:gitlab-tests/test-git-lfs-
|
|||
Create a copy of your repository so that you can
|
||||
recover it in case something goes wrong.
|
||||
|
||||
1. Clone `--mirror` the repo:
|
||||
1. Clone `--mirror` the repository:
|
||||
|
||||
Cloning with the mirror flag will create a bare repository.
|
||||
This ensures you get all the branches within the repo.
|
||||
|
@ -102,7 +102,7 @@ Consider an example upstream project, `git@gitlab.com:gitlab-tests/test-git-lfs-
|
|||
git reflog expire --expire=now --all && git gc --prune=now --aggressive
|
||||
```
|
||||
|
||||
You can also take a look on how to further [clean the repo](../../../user/project/repository/reducing_the_repo_size_using_git.md),
|
||||
You can also take a look on how to further [clean the repository](../../../user/project/repository/reducing_the_repo_size_using_git.md),
|
||||
but it's not necessary for the purposes of this guide.
|
||||
|
||||
1. Install Git LFS in the mirror repository:
|
||||
|
@ -166,7 +166,7 @@ but commented out to help encourage others to add to it in the future. -->
|
|||
- [Migrate from Git Annex to Git LFS](migrate_from_git_annex_to_git_lfs.md)
|
||||
- [GitLab's Git LFS user documentation](index.md)
|
||||
- [GitLab's Git LFS administrator documentation](../../../administration/lfs/index.md)
|
||||
- Alternative method to [migrate an existing repo to Git LFS](https://github.com/git-lfs/git-lfs/wiki/Tutorial#migrating-existing-repository-data-to-lfs)
|
||||
- Alternative method to [migrate an existing repository to Git LFS](https://github.com/git-lfs/git-lfs/wiki/Tutorial#migrating-existing-repository-data-to-lfs)
|
||||
|
||||
<!--
|
||||
Test project:
|
||||
|
|
|
@ -15,7 +15,7 @@ Organizations coming to Git from other version control systems frequently find i
|
|||
This article describes GitLab flow, which integrates the Git workflow with an issue tracking system.
|
||||
It offers a simple, transparent, and effective way to work with Git.
|
||||
|
||||
![Four stages (working copy, index, local repo, remote repo) and three steps between them](img/gitlab_flow_four_stages.png)
|
||||
![Four stages (working copy, index, local repository, remote repository) and three steps between them](img/gitlab_flow_four_stages.png)
|
||||
|
||||
When converting to Git, you have to get used to the fact that it takes three steps to share a commit with colleagues.
|
||||
Most version control systems have only one step: committing from the working copy to a shared server.
|
||||
|
|
|
@ -314,7 +314,7 @@ Squash the commits on the same branch we used for the merge conflicts step.
|
|||
git rebase -i master
|
||||
```
|
||||
|
||||
In the editor, leave the first commit as 'pick' and set others to 'fixup'.
|
||||
In the editor, leave the first commit as `pick` and set others to `fixup`.
|
||||
|
||||
## Questions?
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ comments: false
|
|||
## Select Version to Install
|
||||
|
||||
Make sure you view [this update guide](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/update/patch_versions.md) from the tag (version) of GitLab you would like to install.
|
||||
In most cases this should be the highest numbered production tag (without rc in it).
|
||||
In most cases this should be the highest numbered production tag (without `rc` in it).
|
||||
You can select the tag in the version dropdown in the top left corner of GitLab (below the menu bar).
|
||||
|
||||
### 0. Backup
|
||||
|
@ -35,7 +35,7 @@ sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale
|
|||
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG
|
||||
```
|
||||
|
||||
### 3. Install libs, migrations, etc
|
||||
### 3. Install libraries, migrations, etc
|
||||
|
||||
```shell
|
||||
cd /home/git/gitlab
|
||||
|
|
|
@ -54,7 +54,7 @@ sudo -u git -H git remote add -f ee https://gitlab.com/gitlab-org/gitlab.git
|
|||
sudo -u git -H git checkout EE_BRANCH
|
||||
```
|
||||
|
||||
### 3. Install libs, migrations, etc
|
||||
### 3. Install libraries, migrations, etc
|
||||
|
||||
```shell
|
||||
cd /home/git/gitlab
|
||||
|
|
|
@ -12,7 +12,7 @@ Make sure you view this update guide from the branch (version) of GitLab you
|
|||
would like to install (e.g., `11.8`. You can select the version in the version
|
||||
dropdown at the top left corner of GitLab (below the menu bar).
|
||||
|
||||
In all examples, replace `BRANCH` with the branch for the version you uprading
|
||||
In all examples, replace `BRANCH` with the branch for the version you upgrading
|
||||
to (e.g. `11-8-stable` for `11.8`), and replace `PREVIOUS_BRANCH` with the
|
||||
branch for the version you are upgrading from (e.g. `11-7-stable` for `11.7`).
|
||||
|
||||
|
@ -290,7 +290,7 @@ add the following line to `config/initializers/smtp_settings.rb`:
|
|||
ActionMailer::Base.delivery_method = :smtp
|
||||
```
|
||||
|
||||
See [smtp_settings.rb.sample](https://gitlab.com/gitlab-org/gitlab/blob/master/config/initializers/smtp_settings.rb.sample#L13) as an example.
|
||||
See [`smtp_settings.rb.sample`](https://gitlab.com/gitlab-org/gitlab/blob/master/config/initializers/smtp_settings.rb.sample#L13) as an example.
|
||||
|
||||
#### Init script
|
||||
|
||||
|
@ -318,7 +318,7 @@ For Ubuntu 16.04.1 LTS:
|
|||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
### 13. Install libs, migrations, etc
|
||||
### 13. Install libraries, migrations, etc
|
||||
|
||||
```shell
|
||||
cd /home/git/gitlab
|
||||
|
|
|
@ -56,7 +56,7 @@ server.
|
|||
|
||||
## Installing Slony
|
||||
|
||||
Slony will be used to upgrade the database without requiring long downtimes.
|
||||
Slony will be used to upgrade the database without requiring a long downtime.
|
||||
Slony can be downloaded from <https://www.slony.info/>. If you have installed
|
||||
PostgreSQL using your operating system's package manager you may also be able to
|
||||
install Slony using said package manager.
|
||||
|
@ -88,7 +88,7 @@ test -f /opt/gitlab/embedded/bin/slonik_init_cluster && echo 'Slony Perl tools a
|
|||
```
|
||||
|
||||
This assumes Slony was installed to `/opt/gitlab/embedded`. If Slony was
|
||||
installed properly the output of these commands will be (the mentioned "slonik"
|
||||
installed properly the output of these commands will be (the mentioned `slonik`
|
||||
version may be different):
|
||||
|
||||
```plaintext
|
||||
|
|
|
@ -15,7 +15,7 @@ By default, the navigation bar has the GitLab logo, but this can be customized w
|
|||
any image desired. It is optimized for images 28px high (any width), but any image can be
|
||||
used (less than 1MB) and it will automatically be resized.
|
||||
|
||||
![navbar header logo screenshot](img/appearance_header_logo_v12_3.png)
|
||||
![Navigation bar header logo screenshot](img/appearance_header_logo_v12_3.png)
|
||||
|
||||
Once you select and upload an image, click **Update appearance settings** at the bottom
|
||||
of the page to activate it in the GitLab instance.
|
||||
|
|
|
@ -72,7 +72,7 @@ gitlab_rails['initial_license_file'] = "/path/to/license/file"
|
|||
|
||||
CAUTION: **Caution:**
|
||||
These methods will only add a license at the time of installation. Use the
|
||||
Admin Area in the web ui to renew or upgrade licenses.
|
||||
Admin Area in the web user interface to renew or upgrade licenses.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ functionality that render cross-project data. That includes:
|
|||
This is to prevent performing to many requests at once to the external
|
||||
authorization service.
|
||||
|
||||
Whenever access is granted or denied this is logged in a logfile called
|
||||
Whenever access is granted or denied this is logged in a log file called
|
||||
`external-policy-access-control.log`.
|
||||
Read more about logs GitLab keeps in the [omnibus documentation](https://docs.gitlab.com/omnibus/settings/logs.html).
|
||||
|
||||
|
@ -60,7 +60,7 @@ The available required properties are:
|
|||
requesting authorization if no specific label is defined on the project
|
||||
|
||||
When using TLS Authentication with a self signed certificate, the CA certificate
|
||||
needs to be trusted by the openssl installation. When using GitLab installed using
|
||||
needs to be trusted by the OpenSSL installation. When using GitLab installed using
|
||||
Omnibus, learn to install a custom CA in the
|
||||
[omnibus documentation](https://docs.gitlab.com/omnibus/settings/ssl.html). Alternatively learn where to install
|
||||
custom certificates using `openssl version -d`.
|
||||
|
|
|
@ -4,7 +4,7 @@ type: reference
|
|||
|
||||
# Gitaly timeouts
|
||||
|
||||
![gitaly timeouts](img/gitaly_timeouts.png)
|
||||
![Gitaly timeouts](img/gitaly_timeouts.png)
|
||||
|
||||
3 timeout types can be configured to make sure that long running
|
||||
Gitaly calls don't needlessly take up resources.
|
||||
|
|
|
@ -32,7 +32,7 @@ Access the default page for admin area settings by navigating to
|
|||
| Option | Description |
|
||||
| ------ | ----------- |
|
||||
| [Elasticsearch](../../../integration/elasticsearch.md#enabling-elasticsearch) | Elasticsearch integration. Elasticsearch AWS IAM. |
|
||||
| [PlantUML](../../../administration/integration/plantuml.md#gitlab) | Allow rendering of PlantUML diagrams in Asciidoc documents. |
|
||||
| [PlantUML](../../../administration/integration/plantuml.md#gitlab) | Allow rendering of PlantUML diagrams in AsciiDoc documents. |
|
||||
| [Slack application](../../../user/project/integrations/gitlab_slack_application.md#configuration) **(FREE ONLY)** | Slack integration allows you to interact with GitLab via slash commands in a chat window. This option is only available on GitLab.com, though it may be [available for self-managed instances in the future](https://gitlab.com/gitlab-org/gitlab/-/issues/28164). |
|
||||
| [Third party offers](third_party_offers.md) | Control the display of third party offers. |
|
||||
| [Snowplow](../../../development/telemetry/snowplow.md) | Configure the Snowplow integration. |
|
||||
|
|
|
@ -10,7 +10,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
Track development velocity with Productivity Analytics.
|
||||
|
||||
For many companies, the development cycle is a blackbox and getting an estimate of how
|
||||
For many companies, the development cycle is a black box and getting an estimate of how
|
||||
long, on average, it takes to deliver features is an enormous endeavor.
|
||||
|
||||
While [Value Stream Analytics](../project/cycle_analytics.md) focuses on the entire
|
||||
|
|
|
@ -471,9 +471,9 @@ DAST can be [configured](#customizing-the-dast-settings) using environment varia
|
|||
| `DAST_INCLUDE_ALPHA_VULNERABILITIES` | no | Include alpha passive and active scan rules. Boolean. `true`, `True`, or `1` are considered as true value, otherwise false. Defaults to `false`. |
|
||||
| `DAST_USE_AJAX_SPIDER` | no | Use the AJAX spider in addition to the traditional spider, useful for crawling sites that require JavaScript. Boolean. `true`, `True`, or `1` are considered as true value, otherwise false. Defaults to `false`. |
|
||||
| `DAST_ZAP_CLI_OPTIONS` | no | ZAP server command-line options. For example, `-Xmx3072m` would set the Java maximum memory allocation pool size. |
|
||||
| `DAST_ZAP_GENERATE_CONFIG` | no | The file name of the generated sample ZAP config file for use with `DAST_ZAP_CONFIG_FILE`. |
|
||||
| `DAST_ZAP_CONFIG_FILE` | no | Name of config file used to determine thresholds of vulnerability rules. |
|
||||
| `DAST_ZAP_CONFIG_URL` | no | URL of config file used to determine thresholds of vulnerability rules. |
|
||||
| `DAST_ZAP_GENERATE_CONFIG` | no | The file name of the generated sample ZAP configuration file for use with `DAST_ZAP_CONFIG_FILE`. |
|
||||
| `DAST_ZAP_CONFIG_FILE` | no | Name of configuration file used to determine thresholds of vulnerability rules. |
|
||||
| `DAST_ZAP_CONFIG_URL` | no | URL of configuration file used to determine thresholds of vulnerability rules. |
|
||||
| `DAST_ZAP_LOG_CONFIGURATION` | no | Set to a semicolon-separated list of additional log4j properties for the ZAP Server. For example, `log4j.logger.org.parosproxy.paros.network.HttpSender=DEBUG` |
|
||||
|
||||
### DAST command-line options
|
||||
|
|
|
@ -31,8 +31,8 @@ Dependencies are displayed with the following information:
|
|||
| Field | Description |
|
||||
| --------- | ----------- |
|
||||
| Component | The dependency's name and version |
|
||||
| Packager | The packager used to install the depedency |
|
||||
| Location | A link to the packager-specific lockfile in your project that declared the dependency |
|
||||
| Packager | The packager used to install the dependency |
|
||||
| Location | A link to the packager-specific lock file in your project that declared the dependency |
|
||||
| License | Links to dependency's software licenses |
|
||||
|
||||
Dependencies shown are initially sorted by the severity of their known vulnerabilities, if any. They
|
||||
|
|
|
@ -71,7 +71,7 @@ The scanning tools and vulnerabilities database are updated regularly.
|
|||
| Secure scanning tool | Vulnerabilities database updates |
|
||||
|:-------------------------------------------------------------|-------------------------------------------|
|
||||
| [Container Scanning](container_scanning/index.md) | Uses `clair`. The latest `clair-db` version is used for each job by running the [`latest` Docker image tag](https://gitlab.com/gitlab-org/gitlab/blob/438a0a56dc0882f22bdd82e700554525f552d91b/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml#L37). The `clair-db` database [is updated daily according to the author](https://github.com/arminc/clair-local-scan#clair-server-or-local). |
|
||||
| [Dependency Scanning](dependency_scanning/index.md) | Relies on `bundler-audit` (for Rubygems), `retire.js` (for NPM packages), and `gemnasium` (GitLab's own tool for all libraries). Both `bundler-audit` and `retire.js` fetch their vulnerabilities data from GitHub repositories, so vulnerabilities added to `ruby-advisory-db` and `retire.js` are immediately available. The tools themselves are updated once per month if there's a new version. The [Gemnasium DB](https://gitlab.com/gitlab-org/security-products/gemnasium-db) is updated at least once a week. See our [current measurement of time from CVE being issued to our product being updated](https://about.gitlab.com/handbook/engineering/development/performance-indicators/#cve-issue-to-update). |
|
||||
| [Dependency Scanning](dependency_scanning/index.md) | Relies on `bundler-audit` (for Ruby gems), `retire.js` (for NPM packages), and `gemnasium` (GitLab's own tool for all libraries). Both `bundler-audit` and `retire.js` fetch their vulnerabilities data from GitHub repositories, so vulnerabilities added to `ruby-advisory-db` and `retire.js` are immediately available. The tools themselves are updated once per month if there's a new version. The [Gemnasium DB](https://gitlab.com/gitlab-org/security-products/gemnasium-db) is updated at least once a week. See our [current measurement of time from CVE being issued to our product being updated](https://about.gitlab.com/handbook/engineering/development/performance-indicators/#cve-issue-to-update). |
|
||||
| [Dynamic Application Security Testing (DAST)](dast/index.md) | The scanning engine is updated on a periodic basis. See the [version of the underlying tool `zaproxy`](https://gitlab.com/gitlab-org/security-products/dast/blob/master/Dockerfile#L1). The scanning rules are downloaded at scan runtime. |
|
||||
| [Static Application Security Testing (SAST)](sast/index.md) | Relies exclusively on [the tools GitLab wraps](sast/index.md#supported-languages-and-frameworks). The underlying analyzers are updated at least once per month if a relevant update is available. The vulnerabilities database is updated by the upstream tools. |
|
||||
|
||||
|
@ -95,7 +95,7 @@ information with several options:
|
|||
- [Dismiss vulnerability](#dismissing-a-vulnerability): Dismissing a vulnerability styles it in
|
||||
strikethrough.
|
||||
- [Create issue](#creating-an-issue-for-a-vulnerability): Create a new issue with the title and
|
||||
description prepopulated with information from the vulnerability report. By default, such issues
|
||||
description pre-populated with information from the vulnerability report. By default, such issues
|
||||
are [confidential](../project/issues/confidential_issues.md).
|
||||
- [Solution](#solutions-for-vulnerabilities-auto-remediation): For some vulnerabilities,
|
||||
a solution is provided for how to fix the vulnerability.
|
||||
|
@ -142,7 +142,7 @@ button from within the vulnerability modal, or by using the action buttons to th
|
|||
a vulnerability row in the group security dashboard.
|
||||
|
||||
This creates a [confidential issue](../project/issues/confidential_issues.md) in the project the
|
||||
vulnerability came from, and prepopulates it with some useful information taken from the vulnerability
|
||||
vulnerability came from, and pre-populates it with some useful information taken from the vulnerability
|
||||
report. Once the issue is created, you are redirected to it so you can edit, assign, or comment on
|
||||
it.
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ you must update each of the scanners to either reference a different,
|
|||
internally-hosted registry or provide access to the individual scanner images.
|
||||
|
||||
You must also ensure that your app has access to common package repositories
|
||||
that are not hosted on GitLab.com, such as npm, yarn, or rubygems. Packages
|
||||
that are not hosted on GitLab.com, such as npm, yarn, or Ruby gems. Packages
|
||||
from these repos can be obtained by temporarily connecting to a network or by
|
||||
mirroring the packages inside your own offline network.
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ The [Security Scanner Integration](../../../development/integrations/secure.md)
|
|||
|
||||
## Analyzers Data
|
||||
|
||||
| Property \ Tool | Apex | Bandit | Brakeman | ESLint security | Find Sec Bugs | Flawfinder | Gosec | Kubesec Scanner | NodeJsScan | Php CS Security Audit | Security code Scan (.NET) | Sobelow | TSLint Security |
|
||||
| Property \ Tool | Apex | Bandit | Brakeman | ESLint security | Find Sec Bugs | Flawfinder | Gosec | Kubesec Scanner | NodeJsScan | PHP CS Security Audit | Security code Scan (.NET) | Sobelow | TSLint Security |
|
||||
| --------------------------------------- | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :------------------: | :---------------------: | :-------------------------: | :----------------: | :-------------: |
|
||||
| Severity | ✓ | ✓ | 𐄂 | 𐄂 | ✓ | 𐄂 | ✓ | ✓ | 𐄂 | ✓ | 𐄂 | 𐄂 | ✓ |
|
||||
| Title | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||
|
|
|
@ -52,11 +52,11 @@ detected, whereas `https://username:password@example.com/path/to/repo` would be
|
|||
|
||||
## Full History Secret Scan
|
||||
|
||||
GitLab 12.11 introduced support for scanning the full history of a reposity. This new functionality
|
||||
GitLab 12.11 introduced support for scanning the full history of a repository. This new functionality
|
||||
is particularly useful when you are enabling Secret Detection in a repository for the first time and you
|
||||
want to perform a full secret scan. Running a secret scan on the full history can take a long time,
|
||||
especially for larger repositories with lengthy Git histories. We recommend not setting this variable
|
||||
as part of your normal job defintion.
|
||||
as part of your normal job definition.
|
||||
|
||||
A new configuration variable ([`SAST_GITLEAKS_HISTORIC_SCAN`](../sast/#vulnerability-filters))
|
||||
can be set to change the behavior of the GitLab Secret Detection scan to run on the entire Git history of a repository.
|
||||
|
|
|
@ -20,7 +20,7 @@ several different ways:
|
|||
- [Change the Vulnerability Status](#changing-vulnerability-status) - You can change the
|
||||
status of a vulnerability to **Detected**, **Confirmed**, **Dismissed**, or **Resolved**.
|
||||
- [Create issue](#creating-an-issue-for-a-vulnerability) - Create a new issue with the
|
||||
title and description prepopulated with information from the vulnerability report.
|
||||
title and description pre-populated with information from the vulnerability report.
|
||||
By default, such issues are [confidential](../../project/issues/confidential_issues.md).
|
||||
- [Solution](#automatic-remediation-solutions-for-vulnerabilities) - For some vulnerabilities,
|
||||
a solution is provided for how to fix the vulnerability.
|
||||
|
@ -42,7 +42,7 @@ the following values:
|
|||
You can create an issue for a vulnerability by selecting the **Create issue** button.
|
||||
|
||||
This creates a [confidential issue](../../project/issues/confidential_issues.md) in the
|
||||
project the vulnerability came from, and prepopulates it with useful information from
|
||||
project the vulnerability came from, and pre-populates it with useful information from
|
||||
the vulnerability report. After the issue is created, GitLab redirects you to the
|
||||
issue page so you can edit, assign, or comment on the issue.
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ kubectl describe globaladdress.compute.gcp.crossplane.io gitlab-ad-globaladdress
|
|||
|
||||
Resource classes are a way of defining a configuration for the required managed service. We will define the PostgreSQL Resource class
|
||||
|
||||
- Define a `gcp-postgres-standard.yaml` resourceclass which contains
|
||||
- Define a `gcp-postgres-standard.yaml` resource class which contains
|
||||
|
||||
1. A default CloudSQLInstanceClass.
|
||||
1. A CloudSQLInstanceClass with labels.
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/16379) in GitLab 10.5
|
||||
|
||||
Feature highlights are represented by a pulsing blue dot. Hovering over the dot
|
||||
will open up callout with more information.
|
||||
will display more information.
|
||||
They are used to emphasize a certain feature and make something more visible to the user.
|
||||
|
||||
You can dismiss any feature highlight permanently by clicking the "Got it" link
|
||||
at the bottom of the callout. There isn't a way to restore the feature highlight
|
||||
at the bottom of the modal window. There isn't a way to restore the feature highlight
|
||||
after it has been dismissed.
|
||||
|
||||
![Clusters feature highlight](img/feature_highlight_example.png)
|
||||
|
|
|
@ -157,7 +157,7 @@ Below are the shared Runners settings.
|
|||
Linux Shared Runners on GitLab.com provide a way to run commands in a CI
|
||||
job before the Runner attempts to run `git init` and `git fetch` to
|
||||
download a GitLab repository. The
|
||||
[pre_clone_script](https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section)
|
||||
[`pre_clone_script`](https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section)
|
||||
can be used for:
|
||||
|
||||
- Seeding the build directory with repository data
|
||||
|
@ -420,37 +420,37 @@ different database servers.
|
|||
|
||||
The list of GitLab.com specific settings (and their defaults) is as follows:
|
||||
|
||||
| Setting | GitLab.com | Default |
|
||||
|:------------------------------------|:--------------------------------------------------------------------|:--------------------------------------|
|
||||
| archive_command | `/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e wal-push %p` | empty |
|
||||
| archive_mode | on | off |
|
||||
| autovacuum_analyze_scale_factor | 0.01 | 0.01 |
|
||||
| autovacuum_max_workers | 6 | 3 |
|
||||
| autovacuum_vacuum_cost_limit | 1000 | -1 |
|
||||
| autovacuum_vacuum_scale_factor | 0.01 | 0.02 |
|
||||
| checkpoint_completion_target | 0.7 | 0.9 |
|
||||
| checkpoint_segments | 32 | 10 |
|
||||
| effective_cache_size | 338688MB | Based on how much memory is available |
|
||||
| hot_standby | on | off |
|
||||
| hot_standby_feedback | on | off |
|
||||
| log_autovacuum_min_duration | 0 | -1 |
|
||||
| log_checkpoints | on | off |
|
||||
| log_line_prefix | `%t [%p]: [%l-1]` | empty |
|
||||
| log_min_duration_statement | 1000 | -1 |
|
||||
| log_temp_files | 0 | -1 |
|
||||
| maintenance_work_mem | 2048MB | 16 MB |
|
||||
| max_replication_slots | 5 | 0 |
|
||||
| max_wal_senders | 32 | 0 |
|
||||
| max_wal_size | 5GB | 1GB |
|
||||
| shared_buffers | 112896MB | Based on how much memory is available |
|
||||
| shared_preload_libraries | pg_stat_statements | empty |
|
||||
| shmall | 30146560 | Based on the server's capabilities |
|
||||
| shmmax | 123480309760 | Based on the server's capabilities |
|
||||
| wal_buffers | 16MB | -1 |
|
||||
| wal_keep_segments | 512 | 10 |
|
||||
| wal_level | replica | minimal |
|
||||
| statement_timeout | 15s | 60s |
|
||||
| idle_in_transaction_session_timeout | 60s | 60s |
|
||||
| Setting | GitLab.com | Default |
|
||||
|:--------------------------------------|:--------------------------------------------------------------------|:--------------------------------------|
|
||||
| `archive_command` | `/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e wal-push %p` | empty |
|
||||
| `archive_mode` | on | off |
|
||||
| `autovacuum_analyze_scale_factor` | 0.01 | 0.01 |
|
||||
| `autovacuum_max_workers` | 6 | 3 |
|
||||
| `autovacuum_vacuum_cost_limit` | 1000 | -1 |
|
||||
| `autovacuum_vacuum_scale_factor` | 0.01 | 0.02 |
|
||||
| `checkpoint_completion_target` | 0.7 | 0.9 |
|
||||
| `checkpoint_segments` | 32 | 10 |
|
||||
| `effective_cache_size` | 338688MB | Based on how much memory is available |
|
||||
| `hot_standby` | on | off |
|
||||
| `hot_standby_feedback` | on | off |
|
||||
| `log_autovacuum_min_duration` | 0 | -1 |
|
||||
| `log_checkpoints` | on | off |
|
||||
| `log_line_prefix` | `%t [%p]: [%l-1]` | empty |
|
||||
| `log_min_duration_statement` | 1000 | -1 |
|
||||
| `log_temp_files` | 0 | -1 |
|
||||
| `maintenance_work_mem` | 2048MB | 16 MB |
|
||||
| `max_replication_slots` | 5 | 0 |
|
||||
| `max_wal_senders` | 32 | 0 |
|
||||
| `max_wal_size` | 5GB | 1GB |
|
||||
| `shared_buffers` | 112896MB | Based on how much memory is available |
|
||||
| `shared_preload_libraries` | pg_stat_statements | empty |
|
||||
| `shmall` | 30146560 | Based on the server's capabilities |
|
||||
| `shmmax` | 123480309760 | Based on the server's capabilities |
|
||||
| `wal_buffers` | 16MB | -1 |
|
||||
| `wal_keep_segments` | 512 | 10 |
|
||||
| `wal_level` | replica | minimal |
|
||||
| `statement_timeout` | 15s | 60s |
|
||||
| `idle_in_transaction_session_timeout` | 60s | 60s |
|
||||
|
||||
Some of these settings are in the process being adjusted. For example, the value
|
||||
for `shared_buffers` is quite high and as such we are looking into adjusting it.
|
||||
|
|
|
@ -28,7 +28,7 @@ immediate update, unless:
|
|||
- The mirror is already being updated.
|
||||
- 5 minutes haven't elapsed since its last update.
|
||||
|
||||
For security reasons, from [GitLab 12.10 onwards](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27166),
|
||||
For security reasons, in [GitLab 12.10 and later](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27166),
|
||||
the URL to the original repository is only displayed to users with
|
||||
Maintainer or Owner permissions to the mirrored project.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ disqus_identifier: 'https://docs.gitlab.com/ee/workflow/shortcuts.html'
|
|||
GitLab has many useful keyboard shortcuts to make it easier to access different features.
|
||||
You can see a modal listing keyboard shortcuts within GitLab itself by pressing <kbd>?</kbd>,
|
||||
or clicking **Keyboard shortcuts** in the Help menu at the top right.
|
||||
From [GitLab 12.8 onwards](https://gitlab.com/gitlab-org/gitlab/-/issues/22113),
|
||||
In [GitLab 12.8 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/22113),
|
||||
keyboard shortcuts can be disabled using the **Enable**/**Disable** toggle in this modal window.
|
||||
|
||||
The [Global Shortcuts](#global-shortcuts) work from any area of GitLab, but you must
|
||||
|
|
|
@ -13967,6 +13967,12 @@ msgstr ""
|
|||
msgid "MetricsSettings|Add a button to the metrics dashboard linking directly to your existing external dashboard."
|
||||
msgstr ""
|
||||
|
||||
msgid "MetricsSettings|Choose whether to display dashboard metrics in UTC or the user's local timezone."
|
||||
msgstr ""
|
||||
|
||||
msgid "MetricsSettings|Dashboard timezone"
|
||||
msgstr ""
|
||||
|
||||
msgid "MetricsSettings|External dashboard URL"
|
||||
msgstr ""
|
||||
|
||||
|
@ -13976,6 +13982,12 @@ msgstr ""
|
|||
msgid "MetricsSettings|Metrics Dashboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "MetricsSettings|UTC (Coordinated Universal Time)"
|
||||
msgstr ""
|
||||
|
||||
msgid "MetricsSettings|User's local timezone"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metrics|Add metric"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import { mount, shallowMount } from '@vue/test-utils';
|
||||
import { GlDeprecatedButton, GlLink, GlFormGroup, GlFormInput } from '@gitlab/ui';
|
||||
import { GlDeprecatedButton, GlLink, GlFormGroup, GlFormInput, GlFormSelect } from '@gitlab/ui';
|
||||
import { TEST_HOST } from 'helpers/test_constants';
|
||||
import MetricsSettings from '~/operation_settings/components/metrics_settings.vue';
|
||||
|
||||
import ExternalDashboard from '~/operation_settings/components/form_group/external_dashboard.vue';
|
||||
import DashboardTimezone from '~/operation_settings/components/form_group/dashboard_timezone.vue';
|
||||
import { timezones } from '~/monitoring/format_date';
|
||||
import store from '~/operation_settings/store';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import { refreshCurrentPage } from '~/lib/utils/url_utility';
|
||||
|
@ -18,6 +21,8 @@ describe('operation settings external dashboard component', () => {
|
|||
const helpPage = `${TEST_HOST}/help/metrics/page/path`;
|
||||
const externalDashboardUrl = `http://mock-external-domain.com/external/dashboard/url`;
|
||||
const externalDashboardHelpPage = `${TEST_HOST}/help/external/page/path`;
|
||||
const dashboardTimezoneSetting = timezones.LOCAL;
|
||||
const dashboardTimezoneHelpPage = `${TEST_HOST}/help/timezone/page/path`;
|
||||
|
||||
const mountComponent = (shallow = true) => {
|
||||
const config = [
|
||||
|
@ -28,9 +33,12 @@ describe('operation settings external dashboard component', () => {
|
|||
helpPage,
|
||||
externalDashboardUrl,
|
||||
externalDashboardHelpPage,
|
||||
dashboardTimezoneSetting,
|
||||
dashboardTimezoneHelpPage,
|
||||
}),
|
||||
stubs: {
|
||||
ExternalDashboard,
|
||||
DashboardTimezone,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
@ -84,38 +92,74 @@ describe('operation settings external dashboard component', () => {
|
|||
});
|
||||
|
||||
describe('form', () => {
|
||||
describe('input label', () => {
|
||||
let formGroup;
|
||||
describe('dashboard timezone', () => {
|
||||
describe('field label', () => {
|
||||
let formGroup;
|
||||
|
||||
beforeEach(() => {
|
||||
mountComponent(false);
|
||||
formGroup = wrapper.find(ExternalDashboard).find(GlFormGroup);
|
||||
beforeEach(() => {
|
||||
mountComponent(false);
|
||||
formGroup = wrapper.find(DashboardTimezone).find(GlFormGroup);
|
||||
});
|
||||
|
||||
it('uses label text', () => {
|
||||
expect(formGroup.find('label').text()).toBe('Dashboard timezone');
|
||||
});
|
||||
|
||||
it('uses description text', () => {
|
||||
const description = formGroup.find('small');
|
||||
expect(description.text()).not.toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
it('uses label text', () => {
|
||||
expect(formGroup.find('label').text()).toBe('External dashboard URL');
|
||||
});
|
||||
describe('select field', () => {
|
||||
let select;
|
||||
|
||||
it('uses description text', () => {
|
||||
const description = formGroup.find('small');
|
||||
expect(description.find('a').attributes('href')).toBe(externalDashboardHelpPage);
|
||||
beforeEach(() => {
|
||||
mountComponent();
|
||||
select = wrapper.find(DashboardTimezone).find(GlFormSelect);
|
||||
});
|
||||
|
||||
it('defaults to externalDashboardUrl', () => {
|
||||
expect(select.attributes('value')).toBe(dashboardTimezoneSetting);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('input field', () => {
|
||||
let input;
|
||||
describe('external dashboard', () => {
|
||||
describe('input label', () => {
|
||||
let formGroup;
|
||||
|
||||
beforeEach(() => {
|
||||
mountComponent();
|
||||
input = wrapper.find(GlFormInput);
|
||||
beforeEach(() => {
|
||||
mountComponent(false);
|
||||
formGroup = wrapper.find(ExternalDashboard).find(GlFormGroup);
|
||||
});
|
||||
|
||||
it('uses label text', () => {
|
||||
expect(formGroup.find('label').text()).toBe('External dashboard URL');
|
||||
});
|
||||
|
||||
it('uses description text', () => {
|
||||
const description = formGroup.find('small');
|
||||
expect(description.find('a').attributes('href')).toBe(externalDashboardHelpPage);
|
||||
});
|
||||
});
|
||||
|
||||
it('defaults to externalDashboardUrl', () => {
|
||||
expect(input.attributes().value).toBe(externalDashboardUrl);
|
||||
});
|
||||
describe('input field', () => {
|
||||
let input;
|
||||
|
||||
it('uses a placeholder', () => {
|
||||
expect(input.attributes().placeholder).toBe('https://my-org.gitlab.io/my-dashboards');
|
||||
beforeEach(() => {
|
||||
mountComponent();
|
||||
input = wrapper.find(ExternalDashboard).find(GlFormInput);
|
||||
});
|
||||
|
||||
it('defaults to externalDashboardUrl', () => {
|
||||
expect(input.attributes().value).toBeTruthy();
|
||||
expect(input.attributes().value).toBe(externalDashboardUrl);
|
||||
});
|
||||
|
||||
it('uses a placeholder', () => {
|
||||
expect(input.attributes().placeholder).toBe('https://my-org.gitlab.io/my-dashboards');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -128,6 +172,7 @@ describe('operation settings external dashboard component', () => {
|
|||
{
|
||||
project: {
|
||||
metrics_setting_attributes: {
|
||||
dashboard_timezone: dashboardTimezoneSetting,
|
||||
external_dashboard_url: externalDashboardUrl,
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import mutations from '~/operation_settings/store/mutations';
|
||||
import createState from '~/operation_settings/store/state';
|
||||
import { timezones } from '~/monitoring/format_date';
|
||||
|
||||
describe('operation settings mutations', () => {
|
||||
let localState;
|
||||
|
@ -16,4 +17,13 @@ describe('operation settings mutations', () => {
|
|||
expect(localState.externalDashboard.url).toBe(mockUrl);
|
||||
});
|
||||
});
|
||||
|
||||
describe('SET_DASHBOARD_TIMEZONE', () => {
|
||||
it('sets dashboardTimezoneSetting', () => {
|
||||
mutations.SET_DASHBOARD_TIMEZONE(localState, timezones.LOCAL);
|
||||
|
||||
expect(localState.dashboardTimezone.selected).not.toBeUndefined();
|
||||
expect(localState.dashboardTimezone.selected).toBe(timezones.LOCAL);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -52,4 +52,12 @@ describe ProjectMetricsSetting do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#dashboard_timezone=' do
|
||||
it 'downcases string' do
|
||||
subject.dashboard_timezone = 'UTC'
|
||||
|
||||
expect(subject.dashboard_timezone).to eq('utc')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue