Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
7131f9028d
commit
6f5b1492ab
|
|
@ -1 +1 @@
|
||||||
4e5fe176e6b36866ba305e5af1ca494b031cadc8
|
ec5dd7b3c441c744e4b74a083deec1f41435cb71
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
<script>
|
||||||
|
import { GlButton, GlModalDirective, GlTooltipDirective } from '@gitlab/ui';
|
||||||
|
import { formType } from '~/boards/constants';
|
||||||
|
import eventHub from '~/boards/eventhub';
|
||||||
|
import { s__, __ } from '~/locale';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
GlButton,
|
||||||
|
},
|
||||||
|
directives: {
|
||||||
|
GlTooltip: GlTooltipDirective,
|
||||||
|
GlModalDirective,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
boardsStore: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
canAdminList: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
hasScope: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
state: this.boardsStore.state,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
buttonText() {
|
||||||
|
return this.canAdminList ? s__('Boards|Edit board') : s__('Boards|View scope');
|
||||||
|
},
|
||||||
|
tooltipTitle() {
|
||||||
|
return this.hasScope ? __("This board's scope is reduced") : '';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showPage() {
|
||||||
|
eventHub.$emit('showBoardModal', formType.edit);
|
||||||
|
return this.boardsStore.showPage(formType.edit);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="gl-ml-3 gl-display-flex gl-align-items-center">
|
||||||
|
<gl-button
|
||||||
|
v-gl-modal-directive="'board-config-modal'"
|
||||||
|
v-gl-tooltip
|
||||||
|
:title="tooltipTitle"
|
||||||
|
:class="{ 'dot-highlight': hasScope }"
|
||||||
|
data-qa-selector="boards_config_button"
|
||||||
|
@click.prevent="showPage"
|
||||||
|
>
|
||||||
|
{{ buttonText }}
|
||||||
|
</gl-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
@ -1 +1,24 @@
|
||||||
export default () => {};
|
import Vue from 'vue';
|
||||||
|
import { parseBoolean } from '~/lib/utils/common_utils';
|
||||||
|
import ConfigToggle from './components/config_toggle.vue';
|
||||||
|
|
||||||
|
export default (boardsStore) => {
|
||||||
|
const el = document.querySelector('.js-board-config');
|
||||||
|
|
||||||
|
if (!el) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl.boardConfigToggle = new Vue({
|
||||||
|
el,
|
||||||
|
render(h) {
|
||||||
|
return h(ConfigToggle, {
|
||||||
|
props: {
|
||||||
|
boardsStore,
|
||||||
|
canAdminList: parseBoolean(el.dataset.canAdminList),
|
||||||
|
hasScope: parseBoolean(el.dataset.hasScope),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import 'ee_else_ce/boards/models/issue';
|
||||||
import 'ee_else_ce/boards/models/list';
|
import 'ee_else_ce/boards/models/list';
|
||||||
import BoardSidebar from 'ee_else_ce/boards/components/board_sidebar';
|
import BoardSidebar from 'ee_else_ce/boards/components/board_sidebar';
|
||||||
import initNewListDropdown from 'ee_else_ce/boards/components/new_list_dropdown';
|
import initNewListDropdown from 'ee_else_ce/boards/components/new_list_dropdown';
|
||||||
import boardConfigToggle from 'ee_else_ce/boards/config_toggle';
|
|
||||||
import {
|
import {
|
||||||
setWeightFetchingState,
|
setWeightFetchingState,
|
||||||
setEpicFetchingState,
|
setEpicFetchingState,
|
||||||
|
|
@ -40,6 +39,7 @@ import {
|
||||||
} from '~/lib/utils/common_utils';
|
} from '~/lib/utils/common_utils';
|
||||||
import { __ } from '~/locale';
|
import { __ } from '~/locale';
|
||||||
import sidebarEventHub from '~/sidebar/event_hub';
|
import sidebarEventHub from '~/sidebar/event_hub';
|
||||||
|
import boardConfigToggle from './config_toggle';
|
||||||
import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher';
|
import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher';
|
||||||
|
|
||||||
Vue.use(VueApollo);
|
Vue.use(VueApollo);
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ import GLForm from '../../../../gl_form';
|
||||||
import RefSelectDropdown from '../../../../ref_select_dropdown';
|
import RefSelectDropdown from '../../../../ref_select_dropdown';
|
||||||
import ZenMode from '../../../../zen_mode';
|
import ZenMode from '../../../../zen_mode';
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
|
||||||
new ZenMode(); // eslint-disable-line no-new
|
new ZenMode(); // eslint-disable-line no-new
|
||||||
new GLForm($('.tag-form')); // eslint-disable-line no-new
|
new GLForm($('.tag-form')); // eslint-disable-line no-new
|
||||||
new RefSelectDropdown($('.js-branch-select')); // eslint-disable-line no-new
|
new RefSelectDropdown($('.js-branch-select')); // eslint-disable-line no-new
|
||||||
});
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ module Types
|
||||||
mount_mutation Mutations::AwardEmojis::Toggle
|
mount_mutation Mutations::AwardEmojis::Toggle
|
||||||
mount_mutation Mutations::Boards::Create
|
mount_mutation Mutations::Boards::Create
|
||||||
mount_mutation Mutations::Boards::Destroy
|
mount_mutation Mutations::Boards::Destroy
|
||||||
|
mount_mutation Mutations::Boards::Update
|
||||||
mount_mutation Mutations::Boards::Issues::IssueMoveList
|
mount_mutation Mutations::Boards::Issues::IssueMoveList
|
||||||
mount_mutation Mutations::Boards::Lists::Create
|
mount_mutation Mutations::Boards::Lists::Create
|
||||||
mount_mutation Mutations::Boards::Lists::Update
|
mount_mutation Mutations::Boards::Lists::Update
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ class List < ApplicationRecord
|
||||||
validates :label_id, uniqueness: { scope: :board_id }, if: :label?
|
validates :label_id, uniqueness: { scope: :board_id }, if: :label?
|
||||||
|
|
||||||
scope :preload_associated_models, -> { preload(:board, label: :priorities) }
|
scope :preload_associated_models, -> { preload(:board, label: :priorities) }
|
||||||
|
scope :without_types, ->(list_types) { where.not(list_type: list_types) }
|
||||||
|
|
||||||
alias_method :preferences, :list_user_preferences
|
alias_method :preferences, :list_user_preferences
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
class CurrentBoardEntity < Grape::Entity
|
class CurrentBoardEntity < Grape::Entity
|
||||||
expose :id
|
expose :id
|
||||||
expose :name
|
expose :name
|
||||||
|
expose :hide_backlog_list
|
||||||
|
expose :hide_closed_list
|
||||||
end
|
end
|
||||||
|
|
||||||
CurrentBoardEntity.prepend_if_ee('EE::CurrentBoardEntity')
|
CurrentBoardEntity.prepend_if_ee('EE::CurrentBoardEntity')
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,26 @@ module Boards
|
||||||
end
|
end
|
||||||
|
|
||||||
lists = board.lists.preload_associated_models
|
lists = board.lists.preload_associated_models
|
||||||
params[:list_id].present? ? lists.where(id: params[:list_id]) : lists # rubocop: disable CodeReuse/ActiveRecord
|
|
||||||
|
return lists.id_in(params[:list_id]) if params[:list_id].present?
|
||||||
|
|
||||||
|
list_types = unavailable_list_types_for(board)
|
||||||
|
lists.without_types(list_types)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def unavailable_list_types_for(board)
|
||||||
|
hidden_lists_for(board)
|
||||||
|
end
|
||||||
|
|
||||||
|
def hidden_lists_for(board)
|
||||||
|
hidden = []
|
||||||
|
|
||||||
|
hidden << ::List.list_types[:backlog] if board.hide_backlog_list
|
||||||
|
hidden << ::List.list_types[:closed] if board.hide_closed_list
|
||||||
|
|
||||||
|
hidden
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -33,5 +33,5 @@
|
||||||
= visibility_level_icon(group.visibility_level)
|
= visibility_level_icon(group.visibility_level)
|
||||||
|
|
||||||
.controls.gl-flex-shrink-0.gl-ml-5
|
.controls.gl-flex-shrink-0.gl-ml-5
|
||||||
= link_to _('Edit'), admin_group_edit_path(group), id: "edit_#{dom_id(group)}", class: 'gl-button btn'
|
= link_to _('Edit'), admin_group_edit_path(group), id: "edit_#{dom_id(group)}", class: 'btn gl-button btn-default'
|
||||||
= link_to _('Delete'), [:admin, group], data: { confirm: _("Are you sure you want to remove %{group_name}?") % { group_name: group.name } }, method: :delete, class: 'gl-button btn btn-danger'
|
= link_to _('Delete'), [:admin, group], data: { confirm: _("Are you sure you want to remove %{group_name}?") % { group_name: group.name } }, method: :delete, class: 'gl-button btn btn-danger'
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
- @projects.each_with_index do |project|
|
- @projects.each_with_index do |project|
|
||||||
%li.project-row{ class: ('no-description' if project.description.blank?) }
|
%li.project-row{ class: ('no-description' if project.description.blank?) }
|
||||||
.controls
|
.controls
|
||||||
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "gl-button btn"
|
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn gl-button btn-default"
|
||||||
%button.delete-project-button.gl-button.btn.btn-danger{ data: { delete_project_url: admin_project_path(project), project_name: project.name } }
|
%button.delete-project-button.gl-button.btn.btn-danger{ data: { delete_project_url: admin_project_path(project), project_name: project.name } }
|
||||||
= s_('AdminProjects|Delete')
|
= s_('AdminProjects|Delete')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@
|
||||||
#js-board-labels-toggle
|
#js-board-labels-toggle
|
||||||
- if current_user
|
- if current_user
|
||||||
#js-board-epics-swimlanes-toggle
|
#js-board-epics-swimlanes-toggle
|
||||||
.js-board-config{ data: { can_admin_list: user_can_admin_list, has_scope: board.scoped? } }
|
.js-board-config{ data: { can_admin_list: user_can_admin_list.to_s, has_scope: board.scoped?.to_s } }
|
||||||
- if user_can_admin_list
|
- if user_can_admin_list
|
||||||
- if Feature.enabled?(:board_new_list, board.resource_parent, default_enabled: :yaml)
|
- if Feature.enabled?(:board_new_list, board.resource_parent, default_enabled: :yaml)
|
||||||
.js-create-column-trigger{ data: board_list_data }
|
.js-create-column-trigger{ data: board_list_data }
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Add btn-default class for edit buttons in admin projects and groups
|
||||||
|
merge_request: 53453
|
||||||
|
author:
|
||||||
|
type: other
|
||||||
|
|
@ -41,6 +41,7 @@ autoscales
|
||||||
autoscaling
|
autoscaling
|
||||||
awardable
|
awardable
|
||||||
awardables
|
awardables
|
||||||
|
Ayoa
|
||||||
Axios
|
Axios
|
||||||
Azure
|
Azure
|
||||||
B-tree
|
B-tree
|
||||||
|
|
@ -111,6 +112,8 @@ Contentful
|
||||||
Corosync
|
Corosync
|
||||||
Coursier
|
Coursier
|
||||||
cron
|
cron
|
||||||
|
cronjob
|
||||||
|
cronjobs
|
||||||
crons
|
crons
|
||||||
crontab
|
crontab
|
||||||
crontabs
|
crontabs
|
||||||
|
|
@ -280,6 +283,7 @@ kaniko
|
||||||
Karma
|
Karma
|
||||||
Kerberos
|
Kerberos
|
||||||
keyset
|
keyset
|
||||||
|
keyspace
|
||||||
keytab
|
keytab
|
||||||
keytabs
|
keytabs
|
||||||
Kibana
|
Kibana
|
||||||
|
|
@ -350,6 +354,7 @@ mixins
|
||||||
mockup
|
mockup
|
||||||
mockups
|
mockups
|
||||||
ModSecurity
|
ModSecurity
|
||||||
|
Monokai
|
||||||
monorepo
|
monorepo
|
||||||
monorepos
|
monorepos
|
||||||
multiline
|
multiline
|
||||||
|
|
@ -408,6 +413,7 @@ pooler
|
||||||
postgres.ai
|
postgres.ai
|
||||||
PostgreSQL
|
PostgreSQL
|
||||||
precompile
|
precompile
|
||||||
|
precompiled
|
||||||
preconfigure
|
preconfigure
|
||||||
preconfigured
|
preconfigured
|
||||||
preconfigures
|
preconfigures
|
||||||
|
|
@ -445,6 +451,7 @@ queryable
|
||||||
Quicktime
|
Quicktime
|
||||||
Rackspace
|
Rackspace
|
||||||
Raspbian
|
Raspbian
|
||||||
|
rbtrace
|
||||||
Rdoc
|
Rdoc
|
||||||
reachability
|
reachability
|
||||||
Realplayer
|
Realplayer
|
||||||
|
|
@ -479,6 +486,7 @@ reinitialize
|
||||||
reinitializing
|
reinitializing
|
||||||
relicensing
|
relicensing
|
||||||
remediations
|
remediations
|
||||||
|
replicables
|
||||||
repmgr
|
repmgr
|
||||||
repmgrd
|
repmgrd
|
||||||
repurposing
|
repurposing
|
||||||
|
|
@ -521,6 +529,7 @@ Salesforce
|
||||||
sandboxing
|
sandboxing
|
||||||
sanitization
|
sanitization
|
||||||
sbt
|
sbt
|
||||||
|
scalers
|
||||||
scatterplot
|
scatterplot
|
||||||
scatterplots
|
scatterplots
|
||||||
Schemastore
|
Schemastore
|
||||||
|
|
@ -546,6 +555,7 @@ Slackbot
|
||||||
Slony
|
Slony
|
||||||
smartcard
|
smartcard
|
||||||
smartcards
|
smartcards
|
||||||
|
snapshotting
|
||||||
Sobelow
|
Sobelow
|
||||||
Solarized
|
Solarized
|
||||||
Sourcegraph
|
Sourcegraph
|
||||||
|
|
@ -564,6 +574,7 @@ strace
|
||||||
strikethrough
|
strikethrough
|
||||||
strikethroughs
|
strikethroughs
|
||||||
stunnel
|
stunnel
|
||||||
|
stylelint
|
||||||
subfolder
|
subfolder
|
||||||
subfolders
|
subfolders
|
||||||
subgraph
|
subgraph
|
||||||
|
|
@ -629,6 +640,7 @@ toolkit
|
||||||
toolkits
|
toolkits
|
||||||
tooltip
|
tooltip
|
||||||
tooltips
|
tooltips
|
||||||
|
transactionally
|
||||||
transpile
|
transpile
|
||||||
transpiled
|
transpiled
|
||||||
transpiles
|
transpiles
|
||||||
|
|
@ -637,6 +649,7 @@ Trello
|
||||||
triaged
|
triaged
|
||||||
triages
|
triages
|
||||||
triaging
|
triaging
|
||||||
|
Trivy
|
||||||
truthy
|
truthy
|
||||||
Truststore
|
Truststore
|
||||||
Twilio
|
Twilio
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ We have the following documentation to rapidly uplift your GitLab knowledge:
|
||||||
| Topic | Description |
|
| Topic | Description |
|
||||||
|:--------------------------------------------------------------------------------------------------|:------------|
|
|:--------------------------------------------------------------------------------------------------|:------------|
|
||||||
| [GitLab basics guides](gitlab-basics/index.md) | Start working on the command line and with GitLab. |
|
| [GitLab basics guides](gitlab-basics/index.md) | Start working on the command line and with GitLab. |
|
||||||
| [GitLab workflow overview](https://about.gitlab.com/blog/2016/10/25/gitlab-workflow-an-overview/) | Enhance your workflow with the best of GitLab Workflow. |
|
| [GitLab workflow overview](https://about.gitlab.com/topics/version-control/what-is-gitlab-workflow/) | Enhance your workflow with the best of GitLab Workflow. |
|
||||||
| [Get started with GitLab CI/CD](ci/quick_start/index.md) | Quickly implement GitLab CI/CD. |
|
| [Get started with GitLab CI/CD](ci/quick_start/index.md) | Quickly implement GitLab CI/CD. |
|
||||||
| [Auto DevOps](topics/autodevops/index.md) | Learn more about Auto DevOps in GitLab. |
|
| [Auto DevOps](topics/autodevops/index.md) | Learn more about Auto DevOps in GitLab. |
|
||||||
| [GitLab Markdown](user/markdown.md) | Advanced formatting system (GitLab Flavored Markdown). |
|
| [GitLab Markdown](user/markdown.md) | Advanced formatting system (GitLab Flavored Markdown). |
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ sudo gitlab-ctl restart consul
|
||||||
### Consul nodes unable to communicate
|
### Consul nodes unable to communicate
|
||||||
|
|
||||||
By default, Consul will attempt to
|
By default, Consul will attempt to
|
||||||
[bind](https://www.consul.io/docs/agent/options.html#_bind) to `0.0.0.0`, but
|
[bind](https://www.consul.io/docs/agent/options#_bind) to `0.0.0.0`, but
|
||||||
it will advertise the first private IP address on the node for other Consul nodes
|
it will advertise the first private IP address on the node for other Consul nodes
|
||||||
to communicate with it. If the other nodes cannot communicate with a node on
|
to communicate with it. If the other nodes cannot communicate with a node on
|
||||||
this address, then the cluster will have a failed status.
|
this address, then the cluster will have a failed status.
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ before/after the brackets. Also, some shells (for example, `zsh`) can interpret
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
If the GitHub [rate limit](https://docs.github.com/v3/#rate-limiting) is reached while importing,
|
If the GitHub [rate limit](https://docs.github.com/en/rest/reference/rate-limit) is reached while
|
||||||
the importing process waits (`sleep()`) until it can continue importing.
|
importing, the importing process waits (`sleep()`) until it can continue importing.
|
||||||
|
|
||||||
## Importing multiple projects
|
## Importing multiple projects
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ cannot be used to authenticate with GitHub as an external CI/CD repository.
|
||||||
## Connect with Personal Access Token
|
## Connect with Personal Access Token
|
||||||
|
|
||||||
Personal access tokens can only be used to connect GitHub.com
|
Personal access tokens can only be used to connect GitHub.com
|
||||||
repositories to GitLab, and the GitHub user must have the [owner role](https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/access-permissions-on-github).
|
repositories to GitLab, and the GitHub user must have the [owner role](https://docs.github.com/en/github/getting-started-with-github/access-permissions-on-github).
|
||||||
|
|
||||||
To perform a one-off authorization with GitHub to grant GitLab access your
|
To perform a one-off authorization with GitHub to grant GitLab access your
|
||||||
repositories:
|
repositories:
|
||||||
|
|
|
||||||
|
|
@ -319,4 +319,4 @@ For a video walkthrough of this configuration process, see [Auto Deploy to EC2](
|
||||||
|
|
||||||
## Deploy to Google Cloud
|
## Deploy to Google Cloud
|
||||||
|
|
||||||
- [Deploying with GitLab on Google Cloud](https://about.gitlab.com/solutions/google-cloud-platform/)
|
- [Deploying with GitLab on Google Cloud](https://about.gitlab.com/partners/technology-partners/google-cloud-platform/)
|
||||||
|
|
|
||||||
|
|
@ -872,4 +872,4 @@ If:
|
||||||
- This is the first time setting it up, carefully read
|
- This is the first time setting it up, carefully read
|
||||||
[using Docker in Docker workflow](#use-the-docker-executor-with-the-docker-image-docker-in-docker).
|
[using Docker in Docker workflow](#use-the-docker-executor-with-the-docker-image-docker-in-docker).
|
||||||
- You are upgrading from v18.09 or earlier, read our
|
- You are upgrading from v18.09 or earlier, read our
|
||||||
[upgrade guide](https://about.gitlab.com/releases/2019/07/31/docker-in-docker-with-docker-19-dot-03/).
|
[upgrade guide](https://about.gitlab.com/blog/2019/07/31/docker-in-docker-with-docker-19-dot-03/).
|
||||||
|
|
|
||||||
|
|
@ -1069,7 +1069,7 @@ Re-using variables defined inside `script` as part of the environment name doesn
|
||||||
Below are some links you may find interesting:
|
Below are some links you may find interesting:
|
||||||
|
|
||||||
- [The `.gitlab-ci.yml` definition of environments](../yaml/README.md#environment)
|
- [The `.gitlab-ci.yml` definition of environments](../yaml/README.md#environment)
|
||||||
- [A blog post on Deployments & Environments](https://about.gitlab.com/blog/2016/08/26/ci-deployment-and-environments/)
|
- [A blog post on Deployments & Environments](https://about.gitlab.com/blog/2021/02/05/ci-deployment-and-environments/)
|
||||||
- [Review Apps - Use dynamic environments to deploy your code for every branch](../review_apps/index.md)
|
- [Review Apps - Use dynamic environments to deploy your code for every branch](../review_apps/index.md)
|
||||||
- [Deploy Boards for your applications running on Kubernetes](../../user/project/deploy_boards.md)
|
- [Deploy Boards for your applications running on Kubernetes](../../user/project/deploy_boards.md)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ Alternatively, you can use the API to protect an environment:
|
||||||
name: ${CI_JOB_NAME}
|
name: ${CI_JOB_NAME}
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Use the UI to [create a new group](../../user/group/index.md#create-a-new-group).
|
1. Use the UI to [create a new group](../../user/group/index.md#create-a-group).
|
||||||
For example, this group is called `protected-access-group` and has the group ID `9899826`. Note
|
For example, this group is called `protected-access-group` and has the group ID `9899826`. Note
|
||||||
that the rest of the examples in these steps use this group.
|
that the rest of the examples in these steps use this group.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@ type: tutorial
|
||||||
|
|
||||||
# Authenticating and Reading Secrets With HashiCorp Vault
|
# Authenticating and Reading Secrets With HashiCorp Vault
|
||||||
|
|
||||||
> HashiCorp Vault JWT token support [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/294440) in GitLab 13.9.
|
|
||||||
|
|
||||||
This tutorial demonstrates how to authenticate, configure, and read secrets with HashiCorp's Vault from GitLab CI/CD.
|
This tutorial demonstrates how to authenticate, configure, and read secrets with HashiCorp's Vault from GitLab CI/CD.
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
|
|
@ -56,8 +54,8 @@ The JWT's payload looks like this:
|
||||||
"ref": "auto-deploy-2020-04-01", # Git ref for this job
|
"ref": "auto-deploy-2020-04-01", # Git ref for this job
|
||||||
"ref_type": "branch", # Git ref type, branch or tag
|
"ref_type": "branch", # Git ref type, branch or tag
|
||||||
"ref_protected": "true", # true if this git ref is protected, false otherwise
|
"ref_protected": "true", # true if this git ref is protected, false otherwise
|
||||||
"environment": "production", # Environment this job deploys to, if present
|
"environment": "production", # Environment this job deploys to, if present (GitLab 13.9 and later)
|
||||||
"environment_protected": "true" # true if deployed environment is protected, false otherwise
|
"environment_protected": "true" # true if deployed environment is protected, false otherwise (GitLab 13.9 and later)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ description: 'Confidence checking your entire app every time a new feature is ad
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- vale off -->
|
<!-- vale off -->
|
||||||
|
<!-- Needs review for fixing the broken Webdriver links, which link to a deprecated version of Webdriver. -->
|
||||||
|
|
||||||
# End-to-end testing with GitLab CI/CD and WebdriverIO
|
# End-to-end testing with GitLab CI/CD and WebdriverIO
|
||||||
|
|
||||||
|
|
@ -83,7 +84,7 @@ multiple tests, such as making sure you are logged in.
|
||||||
The function `it` defines an individual test.
|
The function `it` defines an individual test.
|
||||||
|
|
||||||
[The `browser` object](https://webdriver.io/guide/testrunner/browserobject.html) is WebdriverIO's
|
[The `browser` object](https://webdriver.io/guide/testrunner/browserobject.html) is WebdriverIO's
|
||||||
special sauce. It provides most of [the WebdriverIO API methods](https://webdriver.io/api.html) that are the key to
|
special sauce. It provides most of [the WebdriverIO API methods](https://webdriver.io/docs/api/) that are the key to
|
||||||
steering the browser. In this case, we can use
|
steering the browser. In this case, we can use
|
||||||
[`browser.url`](https://webdriver.io/api/protocol/url.html) to visit `/page-that-does-not-exist` to
|
[`browser.url`](https://webdriver.io/api/protocol/url.html) to visit `/page-that-does-not-exist` to
|
||||||
hit our 404 page. We can then use [`browser.getUrl`](https://webdriver.io/api/property/getUrl.html)
|
hit our 404 page. We can then use [`browser.getUrl`](https://webdriver.io/api/property/getUrl.html)
|
||||||
|
|
|
||||||
|
|
@ -619,7 +619,7 @@ deploy_production:
|
||||||
- master
|
- master
|
||||||
```
|
```
|
||||||
|
|
||||||
You may also want to add another job for [staging environment](https://about.gitlab.com/blog/2016/08/26/ci-deployment-and-environments/), to final test your application before deploying to production.
|
You may also want to add another job for [staging environment](https://about.gitlab.com/blog/2021/02/05/ci-deployment-and-environments/), to final test your application before deploying to production.
|
||||||
|
|
||||||
### Turn on GitLab CI/CD
|
### Turn on GitLab CI/CD
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
||||||
|
|
||||||
# Kubernetes Agent user stories **(PREMIUM SELF)**
|
# Kubernetes Agent user stories **(PREMIUM SELF)**
|
||||||
|
|
||||||
The [personas in action](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#user-personas)
|
The [personas in action](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#user-personas)
|
||||||
for the Kubernetes Agent are:
|
for the Kubernetes Agent are:
|
||||||
|
|
||||||
- [Sasha, the Software Developer](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#sasha-software-developer).
|
- [Sasha, the Software Developer](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#sasha-software-developer).
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ This document outlines the style guide for the GitLab [GraphQL API](../api/graph
|
||||||
<!-- vale gitlab.Spelling = NO -->
|
<!-- vale gitlab.Spelling = NO -->
|
||||||
We use the [GraphQL Ruby gem](https://graphql-ruby.org/) written by [Robert Mosolgo](https://github.com/rmosolgo/).
|
We use the [GraphQL Ruby gem](https://graphql-ruby.org/) written by [Robert Mosolgo](https://github.com/rmosolgo/).
|
||||||
<!-- vale gitlab.Spelling = YES -->
|
<!-- vale gitlab.Spelling = YES -->
|
||||||
In addition, we have a subscription to [GraphQL Pro](https://www.graphql.pro). For details see [GraphQL Pro subscription](graphql_guide/graphql_pro.md).
|
In addition, we have a subscription to [GraphQL Pro](https://graphql.pro/). For details see [GraphQL Pro subscription](graphql_guide/graphql_pro.md).
|
||||||
|
|
||||||
All GraphQL queries are directed to a single endpoint
|
All GraphQL queries are directed to a single endpoint
|
||||||
([`app/controllers/graphql_controller.rb#execute`](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fcontrollers%2Fgraphql_controller.rb)),
|
([`app/controllers/graphql_controller.rb#execute`](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fcontrollers%2Fgraphql_controller.rb)),
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ for example `Jobs/Deploy.gitlab-ci.yml`.
|
||||||
You can make a new stable template by copying [the latest template](#latest-version)
|
You can make a new stable template by copying [the latest template](#latest-version)
|
||||||
available in a major milestone release of GitLab like `13.0`. All breaking changes
|
available in a major milestone release of GitLab like `13.0`. All breaking changes
|
||||||
must be announced in a blog post before the official release, for example
|
must be announced in a blog post before the official release, for example
|
||||||
[GitLab.com is moving to 13.0, with narrow breaking changes](https://about.gitlab.com/releases/2020/05/06/gitlab-com-13-0-breaking-changes/)
|
[GitLab.com is moving to 13.0, with narrow breaking changes](https://about.gitlab.com/blog/2020/05/06/gitlab-com-13-0-breaking-changes/)
|
||||||
|
|
||||||
You can change a stable template version in a minor GitLab release like `13.1` if:
|
You can change a stable template version in a minor GitLab release like `13.1` if:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ For instance, the "DevOps Report" category is represented by the
|
||||||
`devops_reports.name` value is "DevOps Reports".
|
`devops_reports.name` value is "DevOps Reports".
|
||||||
|
|
||||||
If a category's label doesn't respect this naming convention, it should be specified
|
If a category's label doesn't respect this naming convention, it should be specified
|
||||||
with [the `label` attribute](https://about.gitlab.com/handbook/marketing/website/#category-attributes)
|
with [the `label` attribute](https://about.gitlab.com/handbook/marketing/inbound-marketing/digital-experience/website/#category-attributes)
|
||||||
in <https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/categories.yml>.
|
in <https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/categories.yml>.
|
||||||
|
|
||||||
### Feature labels
|
### Feature labels
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,7 @@ If `GITLAB_TRACING` is not configured correctly, this issue is logged:
|
||||||
|
|
||||||
By default, GitLab ships with the Jaeger tracer, but other tracers can be included at compile time.
|
By default, GitLab ships with the Jaeger tracer, but other tracers can be included at compile time.
|
||||||
Details of how this can be done are included in the [LabKit tracing
|
Details of how this can be done are included in the [LabKit tracing
|
||||||
documentation](https://godoc.org/gitlab.com/gitlab-org/labkit/tracing).
|
documentation](https://pkg.go.dev/gitlab.com/gitlab-org/labkit/tracing).
|
||||||
|
|
||||||
If no log messages about tracing are emitted, the `GITLAB_TRACING` environment variable is likely
|
If no log messages about tracing are emitted, the `GITLAB_TRACING` environment variable is likely
|
||||||
not set.
|
not set.
|
||||||
|
|
|
||||||
|
|
@ -272,7 +272,11 @@ To configure Vale in your editor, install one of the following as appropriate:
|
||||||
In the extension's settings:
|
In the extension's settings:
|
||||||
|
|
||||||
- Select the **Use CLI** checkbox.
|
- Select the **Use CLI** checkbox.
|
||||||
- In the **Config** setting, enter an absolute path to [`.vale.ini`](https://gitlab.com/gitlab-org/gitlab/blob/master/.vale.ini) in one of the cloned GitLab repositories on your computer.
|
- In the <!-- vale gitlab.Spelling = NO --> **Config** setting, enter an absolute
|
||||||
|
path to [`.vale.ini`](https://gitlab.com/gitlab-org/gitlab/blob/master/.vale.ini)
|
||||||
|
in one of the cloned GitLab repositories on your computer.
|
||||||
|
<!-- vale gitlab.Spelling = YES -->
|
||||||
|
|
||||||
- In the **Path** setting, enter the absolute path to the Vale binary. In most
|
- In the **Path** setting, enter the absolute path to the Vale binary. In most
|
||||||
cases, `vale` should work. To find the location, run `which vale` in a terminal.
|
cases, `vale` should work. To find the location, run `which vale` in a terminal.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -202,9 +202,9 @@ code readability and test output.
|
||||||
### Better output in tests
|
### Better output in tests
|
||||||
|
|
||||||
When comparing expected and actual values in tests, use
|
When comparing expected and actual values in tests, use
|
||||||
[`testify/require.Equal`](https://godoc.org/github.com/stretchr/testify/require#Equal),
|
[`testify/require.Equal`](https://pkg.go.dev/github.com/stretchr/testify/require#Equal),
|
||||||
[`testify/require.EqualError`](https://godoc.org/github.com/stretchr/testify/require#EqualError),
|
[`testify/require.EqualError`](https://pkg.go.dev/github.com/stretchr/testify/require#EqualError),
|
||||||
[`testify/require.EqualValues`](https://godoc.org/github.com/stretchr/testify/require#EqualValues),
|
[`testify/require.EqualValues`](https://pkg.go.dev/github.com/stretchr/testify/require#EqualValues),
|
||||||
and others to improve readability when comparing structs, errors,
|
and others to improve readability when comparing structs, errors,
|
||||||
large portions of text, or JSON documents:
|
large portions of text, or JSON documents:
|
||||||
|
|
||||||
|
|
@ -363,12 +363,12 @@ There are a few guidelines one should follow when using the
|
||||||
[Logrus](https://github.com/sirupsen/logrus) package:
|
[Logrus](https://github.com/sirupsen/logrus) package:
|
||||||
|
|
||||||
- When printing an error use
|
- When printing an error use
|
||||||
[WithError](https://godoc.org/github.com/sirupsen/logrus#WithError). For
|
[WithError](https://pkg.go.dev/github.com/sirupsen/logrus#WithError). For
|
||||||
example, `logrus.WithError(err).Error("Failed to do something")`.
|
example, `logrus.WithError(err).Error("Failed to do something")`.
|
||||||
- Since we use [structured logging](#structured-json-logging) we can log
|
- Since we use [structured logging](#structured-json-logging) we can log
|
||||||
fields in the context of that code path, such as the URI of the request using
|
fields in the context of that code path, such as the URI of the request using
|
||||||
[`WithField`](https://godoc.org/github.com/sirupsen/logrus#WithField) or
|
[`WithField`](https://pkg.go.dev/github.com/sirupsen/logrus#WithField) or
|
||||||
[`WithFields`](https://godoc.org/github.com/sirupsen/logrus#WithFields). For
|
[`WithFields`](https://pkg.go.dev/github.com/sirupsen/logrus#WithFields). For
|
||||||
example, `logrus.WithField("file", "/app/go").Info("Opening dir")`. If you
|
example, `logrus.WithField("file", "/app/go").Info("Opening dir")`. If you
|
||||||
have to log multiple keys, always use `WithFields` instead of calling
|
have to log multiple keys, always use `WithFields` instead of calling
|
||||||
`WithField` more than once.
|
`WithField` more than once.
|
||||||
|
|
@ -488,7 +488,7 @@ The following are some style guidelines that are specific to the Secure Team.
|
||||||
### Code style and format
|
### Code style and format
|
||||||
|
|
||||||
Use `goimports -local gitlab.com/gitlab-org` before committing.
|
Use `goimports -local gitlab.com/gitlab-org` before committing.
|
||||||
[`goimports`](https://godoc.org/golang.org/x/tools/cmd/goimports)
|
[`goimports`](https://pkg.go.dev/golang.org/x/tools/cmd/goimports)
|
||||||
is a tool that automatically formats Go source code using
|
is a tool that automatically formats Go source code using
|
||||||
[`Gofmt`](https://golang.org/cmd/gofmt/), in addition to formatting import lines,
|
[`Gofmt`](https://golang.org/cmd/gofmt/), in addition to formatting import lines,
|
||||||
adding missing ones and removing unreferenced ones.
|
adding missing ones and removing unreferenced ones.
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ we simply follow the path we take to serve any ordinary upload.
|
||||||
### Workhorse
|
### Workhorse
|
||||||
|
|
||||||
Assuming Rails decided the request to be valid, Workhorse will take over. Upon receiving the `send-scaled-image`
|
Assuming Rails decided the request to be valid, Workhorse will take over. Upon receiving the `send-scaled-image`
|
||||||
instruction through the Rails response, a [special response injecter](https://gitlab.com/gitlab-org/gitlab-workhorse/-/blob/master/internal/imageresizer/image_resizer.go)
|
instruction through the Rails response, a [special response injector](https://gitlab.com/gitlab-org/gitlab-workhorse/-/blob/master/internal/imageresizer/image_resizer.go)
|
||||||
will be invoked that knows how to rescale images. The only inputs it requires are the location of the image
|
will be invoked that knows how to rescale images. The only inputs it requires are the location of the image
|
||||||
(a path if the image resides in block storage, or a URL to remote storage otherwise) and the desired width.
|
(a path if the image resides in block storage, or a URL to remote storage otherwise) and the desired width.
|
||||||
Workhorse will handle the location transparently so Rails does not need to be concerned with where the image
|
Workhorse will handle the location transparently so Rails does not need to be concerned with where the image
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ guidelines so you can build an integration that fits with the workflow GitLab
|
||||||
users are already familiar with.
|
users are already familiar with.
|
||||||
|
|
||||||
This page also provides resources for the technical work associated
|
This page also provides resources for the technical work associated
|
||||||
with [onboarding as a partner](https://about.gitlab.com/partners/integrate/).
|
with [onboarding as a partner](https://about.gitlab.com/partners/technology-partners/integrate/).
|
||||||
The steps below are a high-level view of what needs to be done to complete an
|
The steps below are a high-level view of what needs to be done to complete an
|
||||||
integration as well as linking to more detailed resources for how to do so.
|
integration as well as linking to more detailed resources for how to do so.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ Even though this approach would make aggregating much easier, it has some major
|
||||||
- We'd have to migrate **all namespaces** by adding and filling a new column. Because of the size of the table, dealing with time/cost would be significant. The background migration would take approximately `153h`, see <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/29772>.
|
- We'd have to migrate **all namespaces** by adding and filling a new column. Because of the size of the table, dealing with time/cost would be significant. The background migration would take approximately `153h`, see <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/29772>.
|
||||||
- Background migration has to be shipped one release before, delaying the functionality by another milestone.
|
- Background migration has to be shipped one release before, delaying the functionality by another milestone.
|
||||||
|
|
||||||
### Attempt E (final): Update the namespace storage statistics in async way
|
### Attempt E (final): Update the namespace storage statistics asynchronously
|
||||||
|
|
||||||
This approach consists of continuing to use the incremental statistics updates we already have,
|
This approach consists of continuing to use the incremental statistics updates we already have,
|
||||||
but we refresh them through Sidekiq jobs and in different transactions:
|
but we refresh them through Sidekiq jobs and in different transactions:
|
||||||
|
|
@ -149,7 +149,7 @@ but we refresh them through Sidekiq jobs and in different transactions:
|
||||||
1. Whenever the statistics of a project changes, insert a row into `namespace_aggregation_schedules`
|
1. Whenever the statistics of a project changes, insert a row into `namespace_aggregation_schedules`
|
||||||
- We don't insert a new row if there's already one related to the root namespace.
|
- We don't insert a new row if there's already one related to the root namespace.
|
||||||
- Keeping in mind the length of the transaction that involves updating `project_statistics`(<https://gitlab.com/gitlab-org/gitlab/-/issues/29070>), the insertion should be done in a different transaction and through a Sidekiq Job.
|
- Keeping in mind the length of the transaction that involves updating `project_statistics`(<https://gitlab.com/gitlab-org/gitlab/-/issues/29070>), the insertion should be done in a different transaction and through a Sidekiq Job.
|
||||||
1. After inserting the row, we schedule another worker to be executed async at two different moments:
|
1. After inserting the row, we schedule another worker to be executed asynchronously at two different moments:
|
||||||
- One enqueued for immediate execution and another one scheduled in `1.5h` hours.
|
- One enqueued for immediate execution and another one scheduled in `1.5h` hours.
|
||||||
- We only schedule the jobs, if we can obtain a `1.5h` lease on Redis on a key based on the root namespace ID.
|
- We only schedule the jobs, if we can obtain a `1.5h` lease on Redis on a key based on the root namespace ID.
|
||||||
- If we can't obtain the lease, it indicates there's another aggregation already in progress, or scheduled in no more than `1.5h`.
|
- If we can't obtain the lease, it indicates there's another aggregation already in progress, or scheduled in no more than `1.5h`.
|
||||||
|
|
@ -161,7 +161,7 @@ but we refresh them through Sidekiq jobs and in different transactions:
|
||||||
|
|
||||||
This implementation has the following benefits:
|
This implementation has the following benefits:
|
||||||
|
|
||||||
- All the updates are done async, so we're not increasing the length of the transactions for `project_statistics`.
|
- All the updates are done asynchronously, so we're not increasing the length of the transactions for `project_statistics`.
|
||||||
- We're doing the update in a single SQL query.
|
- We're doing the update in a single SQL query.
|
||||||
- It is compatible with PostgreSQL and MySQL.
|
- It is compatible with PostgreSQL and MySQL.
|
||||||
- No background migration required.
|
- No background migration required.
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ D3 is very popular across many projects outside of GitLab:
|
||||||
|
|
||||||
- [The New York Times](https://archive.nytimes.com/www.nytimes.com/interactive/2012/02/13/us/politics/2013-budget-proposal-graphic.html)
|
- [The New York Times](https://archive.nytimes.com/www.nytimes.com/interactive/2012/02/13/us/politics/2013-budget-proposal-graphic.html)
|
||||||
- [plot.ly](https://plotly.com/)
|
- [plot.ly](https://plotly.com/)
|
||||||
- [Droptask](https://www.ayoa.com/previously-droptask/)
|
- [Ayoa](https://www.ayoa.com/previously-droptask/)
|
||||||
|
|
||||||
Within GitLab, D3 has been used for the following notable features
|
Within GitLab, D3 has been used for the following notable features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ The following configuration options can be configured:
|
||||||
- `STACKPROF_MODE`: See [sampling modes](https://github.com/tmm1/stackprof#sampling).
|
- `STACKPROF_MODE`: See [sampling modes](https://github.com/tmm1/stackprof#sampling).
|
||||||
Defaults to `cpu`.
|
Defaults to `cpu`.
|
||||||
- `STACKPROF_INTERVAL`: Sampling interval. Unit semantics depend on `STACKPROF_MODE`.
|
- `STACKPROF_INTERVAL`: Sampling interval. Unit semantics depend on `STACKPROF_MODE`.
|
||||||
For `object` mode this is a per-event interval (every `n`th event is sampled)
|
For `object` mode this is a per-event interval (every `nth` event is sampled)
|
||||||
and defaults to `1000`.
|
and defaults to `1000`.
|
||||||
For other modes such as `cpu` this is a frequency and defaults to `10000` μs (100hz).
|
For other modes such as `cpu` this is a frequency and defaults to `10000` μs (100hz).
|
||||||
- `STACKPROF_FILE_PREFIX`: File path prefix where profiles are stored. Defaults
|
- `STACKPROF_FILE_PREFIX`: File path prefix where profiles are stored. Defaults
|
||||||
|
|
@ -293,7 +293,7 @@ worker processes), selecting the latter.
|
||||||
|
|
||||||
For Sidekiq, the signal can be sent to the `sidekiq-cluster` process via `pkill
|
For Sidekiq, the signal can be sent to the `sidekiq-cluster` process via `pkill
|
||||||
-USR2 bin/sidekiq-cluster`, which forwards the signal to all Sidekiq
|
-USR2 bin/sidekiq-cluster`, which forwards the signal to all Sidekiq
|
||||||
children. Alternatively, you can also select a specific pid of interest.
|
children. Alternatively, you can also select a specific PID of interest.
|
||||||
|
|
||||||
Production profiles can be especially noisy. It can be helpful to visualize them
|
Production profiles can be especially noisy. It can be helpful to visualize them
|
||||||
as a [flame graph](https://github.com/brendangregg/FlameGraph). This can be done
|
as a [flame graph](https://github.com/brendangregg/FlameGraph). This can be done
|
||||||
|
|
@ -306,7 +306,7 @@ bundle exec stackprof --stackcollapse /tmp/stackprof.55769.c6c3906452.profile |
|
||||||
## RSpec profiling
|
## RSpec profiling
|
||||||
|
|
||||||
The GitLab development environment also includes the
|
The GitLab development environment also includes the
|
||||||
[rspec_profiling](https://github.com/foraker/rspec_profiling) gem, which is used
|
[`rspec_profiling`](https://github.com/foraker/rspec_profiling) gem, which is used
|
||||||
to collect data on spec execution times. This is useful for analyzing the
|
to collect data on spec execution times. This is useful for analyzing the
|
||||||
performance of the test suite itself, or seeing how the performance of a spec
|
performance of the test suite itself, or seeing how the performance of a spec
|
||||||
may have changed over time.
|
may have changed over time.
|
||||||
|
|
@ -409,7 +409,7 @@ Fragmented Ruby heap snapshot could look like this:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Memory fragmentation could be reduced by tuning GC parameters as described in [this post by Nate Berkopec](https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html). This should be considered as a tradeoff, as it may affect overall performance of memory allocation and GC cycles.
|
Memory fragmentation could be reduced by tuning GC parameters [as described in this post](https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html). This should be considered as a tradeoff, as it may affect overall performance of memory allocation and GC cycles.
|
||||||
|
|
||||||
## Importance of Changes
|
## Importance of Changes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -426,7 +426,7 @@ We are using a custom mapping between source file to test files, maintained in t
|
||||||
|
|
||||||
### PostgreSQL versions testing
|
### PostgreSQL versions testing
|
||||||
|
|
||||||
Even though [Omnibus defaults to PG12 for new installs and upgrades](https://docs.gitlab.com/omnibus/package-information/postgresql_versions.md),
|
Even though [Omnibus defaults to PG12 for new installs and upgrades](https://docs.gitlab.com/omnibus/package-information/postgresql_versions.html),
|
||||||
our test suite is currently running against PG11, since GitLab.com still runs on PG11.
|
our test suite is currently running against PG11, since GitLab.com still runs on PG11.
|
||||||
|
|
||||||
We do run our test suite against PG12 on nightly scheduled pipelines as well as upon specific
|
We do run our test suite against PG12 on nightly scheduled pipelines as well as upon specific
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ When you are optimizing your SQL queries, there are two dimensions to pay attent
|
||||||
|
|
||||||
- When analyzing your query's performance, pay attention to if the time you are seeing is on a [cold or warm cache](#cold-and-warm-cache). These guidelines apply for both cache types.
|
- When analyzing your query's performance, pay attention to if the time you are seeing is on a [cold or warm cache](#cold-and-warm-cache). These guidelines apply for both cache types.
|
||||||
- When working with batched queries, change the range and batch size to see how it effects the query timing and caching.
|
- When working with batched queries, change the range and batch size to see how it effects the query timing and caching.
|
||||||
- If an existing query is already underperforming, make an effort to improve it. If it is too complex or would stall development, create a follow-up so it can be addressed in a timely manner. You can always ask the database reviewer or maintainer for help and guidance.
|
- If an existing query is not performing well, make an effort to improve it. If it is too complex or would stall development, create a follow-up so it can be addressed in a timely manner. You can always ask the database reviewer or maintainer for help and guidance.
|
||||||
|
|
||||||
## Cold and warm cache
|
## Cold and warm cache
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,14 +120,13 @@ This shows commands that have taken a long time and may be a performance
|
||||||
concern.
|
concern.
|
||||||
|
|
||||||
The
|
The
|
||||||
[fluent-plugin-redis-slowlog](https://gitlab.com/gitlab-org/fluent-plugin-redis-slowlog)
|
[`fluent-plugin-redis-slowlog`](https://gitlab.com/gitlab-org/fluent-plugin-redis-slowlog)
|
||||||
project is responsible for taking the slowlog entries from Redis and
|
project is responsible for taking the `slowlog` entries from Redis and
|
||||||
passing to fluentd (and ultimately Elasticsearch).
|
passing to Fluentd (and ultimately Elasticsearch).
|
||||||
|
|
||||||
## Analyzing the entire keyspace
|
## Analyzing the entire keyspace
|
||||||
|
|
||||||
The [Redis Keyspace
|
The [Redis Keyspace Analyzer](https://gitlab.com/gitlab-com/gl-infra/redis-keyspace-analyzer)
|
||||||
Analyzer](https://gitlab.com/gitlab-com/gl-infra/redis-keyspace-analyzer)
|
|
||||||
project contains tools for dumping the full key list and memory usage of a Redis
|
project contains tools for dumping the full key list and memory usage of a Redis
|
||||||
instance, and then analyzing those lists while eliminating potentially sensitive
|
instance, and then analyzing those lists while eliminating potentially sensitive
|
||||||
data from the results. It can be used to find the most frequent key patterns, or
|
data from the results. It can be used to find the most frequent key patterns, or
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ Go's [`regexp`](https://golang.org/pkg/regexp/) package uses `re2` and isn't vul
|
||||||
- [Rubular](https://rubular.com/) is a nice online tool to fiddle with Ruby Regexps.
|
- [Rubular](https://rubular.com/) is a nice online tool to fiddle with Ruby Regexps.
|
||||||
- [Runaway Regular Expressions](https://www.regular-expressions.info/catastrophic.html)
|
- [Runaway Regular Expressions](https://www.regular-expressions.info/catastrophic.html)
|
||||||
- [The impact of regular expression denial of service (ReDoS) in practice: an empirical study at the ecosystem scale](https://people.cs.vt.edu/~davisjam/downloads/publications/DavisCoghlanServantLee-EcosystemREDOS-ESECFSE18.pdf). This research paper discusses approaches to automatically detect ReDoS vulnerabilities.
|
- [The impact of regular expression denial of service (ReDoS) in practice: an empirical study at the ecosystem scale](https://people.cs.vt.edu/~davisjam/downloads/publications/DavisCoghlanServantLee-EcosystemREDOS-ESECFSE18.pdf). This research paper discusses approaches to automatically detect ReDoS vulnerabilities.
|
||||||
- [Freezing the web: A study of redos vulnerabilities in JavaScript-based web servers](https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-staicu.pdf). Another research paper about detecting ReDoS vulnerabilities.
|
- [Freezing the web: A study of ReDoS vulnerabilities in JavaScript-based web servers](https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-staicu.pdf). Another research paper about detecting ReDoS vulnerabilities.
|
||||||
|
|
||||||
## Server Side Request Forgery (SSRF)
|
## Server Side Request Forgery (SSRF)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -588,7 +588,7 @@ the `.with_route` scope defined on all `Routable`s.
|
||||||
|
|
||||||
### Cron workers
|
### Cron workers
|
||||||
|
|
||||||
The context is automatically cleared for workers in the Cronjob queue
|
The context is automatically cleared for workers in the cronjob queue
|
||||||
(`include CronjobQueue`), even when scheduling them from
|
(`include CronjobQueue`), even when scheduling them from
|
||||||
requests. We do this to avoid incorrect metadata when other jobs are
|
requests. We do this to avoid incorrect metadata when other jobs are
|
||||||
scheduled from the cron worker.
|
scheduled from the cron worker.
|
||||||
|
|
|
||||||
|
|
@ -800,10 +800,11 @@ end
|
||||||
```
|
```
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
Only use simple values as input in the `where` block. Using procs, stateful
|
Only use simple values as input in the `where` block. Using
|
||||||
|
<!-- vale gitlab.Spelling = NO --> procs, stateful
|
||||||
objects, FactoryBot-created objects, and similar items can lead to
|
objects, FactoryBot-created objects, and similar items can lead to
|
||||||
[unexpected results](https://github.com/tomykaira/rspec-parameterized/issues/8).
|
[unexpected results](https://github.com/tomykaira/rspec-parameterized/issues/8).
|
||||||
|
<!-- vale gitlab.Spelling = YES -->
|
||||||
### Prometheus tests
|
### Prometheus tests
|
||||||
|
|
||||||
Prometheus metrics may be preserved from one test run to another. To ensure that metrics are
|
Prometheus metrics may be preserved from one test run to another. To ensure that metrics are
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,7 @@ When it comes to querying DOM elements in your tests, it is best to uniquely and
|
||||||
the element.
|
the element.
|
||||||
|
|
||||||
Preferentially, this is done by targeting what the user actually sees using [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro/).
|
Preferentially, this is done by targeting what the user actually sees using [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro/).
|
||||||
When selecting by text it is best to use [`getByRole` or `findByRole`](https://testing-library.com/docs/dom-testing-library/api-queries/#byrole)
|
When selecting by text it is best to use [`getByRole` or `findByRole`](https://testing-library.com/docs/queries/byrole)
|
||||||
as these enforce accessibility best practices as well. The examples below demonstrate the order of preference.
|
as these enforce accessibility best practices as well. The examples below demonstrate the order of preference.
|
||||||
|
|
||||||
When writing Vue component unit tests, it can be wise to query children by component, so that the unit test can focus on comprehensive value coverage
|
When writing Vue component unit tests, it can be wise to query children by component, so that the unit test can focus on comprehensive value coverage
|
||||||
|
|
@ -1034,7 +1034,7 @@ describe "Admin::AbuseReports", :js do
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
### Jest test timeout due to async imports
|
### Jest test timeout due to asynchronous imports
|
||||||
|
|
||||||
If a module asynchronously imports some other modules at runtime, these modules must be
|
If a module asynchronously imports some other modules at runtime, these modules must be
|
||||||
transpiled by the Jest loaders at runtime. It's possible that this can cause [Jest to timeout](https://gitlab.com/gitlab-org/gitlab/-/issues/280809).
|
transpiled by the Jest loaders at runtime. It's possible that this can cause [Jest to timeout](https://gitlab.com/gitlab-org/gitlab/-/issues/280809).
|
||||||
|
|
|
||||||
|
|
@ -840,7 +840,9 @@ We also use `#database-lab` and [explain.depesz.com](https://explain.depesz.com/
|
||||||
|
|
||||||
### 5. Add the metric definition
|
### 5. Add the metric definition
|
||||||
|
|
||||||
When adding, changing, or updating metrics, please update the [Event Dictionary's **Usage Ping** table](https://about.gitlab.com/handbook/product/product-intelligence-guide/#event-dictionary).
|
[Check Metrics Dictionary Guide](usage_ping/metrics_dictionary.md)
|
||||||
|
|
||||||
|
When adding, updating, or removing metrics, please update the [Metrics Dictionary](usage_ping/dictionary.md).
|
||||||
|
|
||||||
### 6. Add new metric to Versions Application
|
### 6. Add new metric to Versions Application
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ The following are guides to basic GitLab functionality:
|
||||||
|
|
||||||
- [Create and add your SSH public key](../ssh/README.md), for enabling Git over SSH.
|
- [Create and add your SSH public key](../ssh/README.md), for enabling Git over SSH.
|
||||||
- [Create a project](../user/project/working_with_projects.md#create-a-project), to start using GitLab.
|
- [Create a project](../user/project/working_with_projects.md#create-a-project), to start using GitLab.
|
||||||
- [Create a group](../user/group/index.md#create-a-new-group), to combine and administer
|
- [Create a group](../user/group/index.md#create-a-group), to combine and administer
|
||||||
projects together.
|
projects together.
|
||||||
- [Create a branch](create-branch.md), to make changes to files stored in a project's repository.
|
- [Create a branch](create-branch.md), to make changes to files stored in a project's repository.
|
||||||
- [Feature branch workflow](feature_branch_workflow.md).
|
- [Feature branch workflow](feature_branch_workflow.md).
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ You should also reference the [OmniAuth documentation](omniauth.md) for general
|
||||||
## Common SAML Terms
|
## Common SAML Terms
|
||||||
|
|
||||||
| Term | Description |
|
| Term | Description |
|
||||||
|------|-------------|
|
|--------------------------------|-------------|
|
||||||
| Identity Provider (IdP) | The service which manages your user identities such as ADFS, Okta, Onelogin, or Ping Identity. |
|
| Identity Provider (IdP) | The service which manages your user identities, such as ADFS, Okta, OneLogin, or Ping Identity. |
|
||||||
| Service Provider (SP) | SAML considers GitLab to be a service provider. |
|
| Service Provider (SP) | SAML considers GitLab to be a service provider. |
|
||||||
| Assertion | A piece of information about a user's identity, such as their name or role. Also known as claims or attributes. |
|
| Assertion | A piece of information about a user's identity, such as their name or role. Also known as claims or attributes. |
|
||||||
| SSO | Single Sign-On. |
|
| SSO | Single Sign-On. |
|
||||||
|
|
@ -265,7 +265,7 @@ considered admin users.
|
||||||
|
|
||||||
### Auditor groups **(PREMIUM SELF)**
|
### Auditor groups **(PREMIUM SELF)**
|
||||||
|
|
||||||
> Introduced in [GitLab Starter](https://about.gitlab.com/pricing/) 11.4.
|
> Introduced in GitLab 11.4.
|
||||||
|
|
||||||
The requirements are the same as the previous settings, your IdP needs to pass Group information to GitLab, you need to tell
|
The requirements are the same as the previous settings, your IdP needs to pass Group information to GitLab, you need to tell
|
||||||
GitLab where to look for the groups in the SAML response, and which group(s) should be
|
GitLab where to look for the groups in the SAML response, and which group(s) should be
|
||||||
|
|
@ -454,8 +454,6 @@ args: {
|
||||||
|
|
||||||
### `uid_attribute`
|
### `uid_attribute`
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17734) in GitLab 10.7.
|
|
||||||
|
|
||||||
By default, the `uid` is set as the `name_id` in the SAML response. If you'd like to designate a unique attribute for the `uid`, you can set the `uid_attribute`. In the example below, the value of `uid` attribute in the SAML response is set as the `uid_attribute`.
|
By default, the `uid` is set as the `name_id` in the SAML response. If you'd like to designate a unique attribute for the `uid`, you can set the `uid_attribute`. In the example below, the value of `uid` attribute in the SAML response is set as the `uid_attribute`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ comments: false
|
||||||
Create projects and groups.
|
Create projects and groups.
|
||||||
|
|
||||||
- [Create a new project](../user/project/working_with_projects.md#create-a-project)
|
- [Create a new project](../user/project/working_with_projects.md#create-a-project)
|
||||||
- [Create a new group](../user/group/index.md#create-a-new-group)
|
- [Create a new group](../user/group/index.md#create-a-group)
|
||||||
|
|
||||||
## Prioritize
|
## Prioritize
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ staging and canary deployments,
|
||||||
## Custom buildpacks
|
## Custom buildpacks
|
||||||
|
|
||||||
If the automatic buildpack detection fails for your project, or if you want to
|
If the automatic buildpack detection fails for your project, or if you want to
|
||||||
use a custom buildpack, you can override the buildpack using a project variable
|
use a custom buildpack, you can override the buildpack using a project CI/CD variable
|
||||||
or a `.buildpacks` file in your project:
|
or a `.buildpacks` file in your project:
|
||||||
|
|
||||||
- **Project variable** - Create a project variable `BUILDPACK_URL` with the URL
|
- **Project variable** - Create a project variable `BUILDPACK_URL` with the URL
|
||||||
|
|
@ -43,7 +43,7 @@ can't use the `.buildpacks` file. The buildpack
|
||||||
in the backend to parse the `.buildpacks` file, does not provide the necessary commands
|
in the backend to parse the `.buildpacks` file, does not provide the necessary commands
|
||||||
`bin/test-compile` and `bin/test`.
|
`bin/test-compile` and `bin/test`.
|
||||||
|
|
||||||
If your goal is to use only a single custom buildpack, you should provide the project variable
|
If your goal is to use only a single custom buildpack, you should provide the project CI/CD variable
|
||||||
`BUILDPACK_URL` instead.
|
`BUILDPACK_URL` instead.
|
||||||
|
|
||||||
## Custom `Dockerfile`
|
## Custom `Dockerfile`
|
||||||
|
|
@ -55,13 +55,13 @@ builds a Docker image based on the Dockerfile, rather than using buildpacks.
|
||||||
This can be much faster and result in smaller images, especially if your
|
This can be much faster and result in smaller images, especially if your
|
||||||
Dockerfile is based on [Alpine](https://hub.docker.com/_/alpine/).
|
Dockerfile is based on [Alpine](https://hub.docker.com/_/alpine/).
|
||||||
|
|
||||||
If you set the `DOCKERFILE_PATH` CI variable, Auto Build looks for a Dockerfile there
|
If you set the `DOCKERFILE_PATH` CI/CD variable, Auto Build looks for a Dockerfile there
|
||||||
instead.
|
instead.
|
||||||
|
|
||||||
## Passing arguments to `docker build`
|
## Passing arguments to `docker build`
|
||||||
|
|
||||||
Arguments can be passed to the `docker build` command using the
|
Arguments can be passed to the `docker build` command using the
|
||||||
`AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` project variable. For example, to build a
|
`AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` project CI/CD variable. For example, to build a
|
||||||
Docker image based on based on the `ruby:alpine` instead of the default `ruby:latest`:
|
Docker image based on based on the `ruby:alpine` instead of the default `ruby:latest`:
|
||||||
|
|
||||||
1. Set `AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` to `--build-arg=RUBY_VERSION=alpine`.
|
1. Set `AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` to `--build-arg=RUBY_VERSION=alpine`.
|
||||||
|
|
@ -93,12 +93,12 @@ You can extend and manage your Auto DevOps configuration with GitLab APIs:
|
||||||
- [Editing groups](../../api/groups.md#update-group).
|
- [Editing groups](../../api/groups.md#update-group).
|
||||||
- [Editing projects](../../api/projects.md#edit-project).
|
- [Editing projects](../../api/projects.md#edit-project).
|
||||||
|
|
||||||
## Forward CI variables to the build environment
|
## Forward CI/CD variables to the build environment
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/25514) in GitLab 12.3, but available in versions 11.9 and above.
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/25514) in GitLab 12.3, but available in versions 11.9 and above.
|
||||||
|
|
||||||
CI variables can be forwarded into the build environment using the
|
CI/CD variables can be forwarded into the build environment using the
|
||||||
`AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES` CI variable.
|
`AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES` CI/CD variable.
|
||||||
The forwarded variables should be specified by name in a comma-separated
|
The forwarded variables should be specified by name in a comma-separated
|
||||||
list. For example, to forward the variables `CI_COMMIT_SHA` and
|
list. For example, to forward the variables `CI_COMMIT_SHA` and
|
||||||
`CI_ENVIRONMENT_NAME`, set `AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES`
|
`CI_ENVIRONMENT_NAME`, set `AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES`
|
||||||
|
|
@ -130,7 +130,7 @@ feature to use the `--secret` flag.
|
||||||
|
|
||||||
Auto DevOps uses [Helm](https://helm.sh/) to deploy your application to Kubernetes.
|
Auto DevOps uses [Helm](https://helm.sh/) to deploy your application to Kubernetes.
|
||||||
You can override the Helm chart used by bundling up a chart into your project
|
You can override the Helm chart used by bundling up a chart into your project
|
||||||
repository or by specifying a project variable:
|
repository or by specifying a project CI/CD variable:
|
||||||
|
|
||||||
- **Bundled chart** - If your project has a `./chart` directory with a `Chart.yaml`
|
- **Bundled chart** - If your project has a `./chart` directory with a `Chart.yaml`
|
||||||
file in it, Auto DevOps detects the chart and uses it instead of the
|
file in it, Auto DevOps detects the chart and uses it instead of the
|
||||||
|
|
@ -151,17 +151,17 @@ You can override the default values in the `values.yaml` file in the
|
||||||
- Adding a file named `.gitlab/auto-deploy-values.yaml` to your repository, which is
|
- Adding a file named `.gitlab/auto-deploy-values.yaml` to your repository, which is
|
||||||
automatically used, if found.
|
automatically used, if found.
|
||||||
- Adding a file with a different name or path to the repository, and setting the
|
- Adding a file with a different name or path to the repository, and setting the
|
||||||
`HELM_UPGRADE_VALUES_FILE` [environment variable](#environment-variables) with
|
`HELM_UPGRADE_VALUES_FILE` [CI/CD variable](#cicd-variables) with
|
||||||
the path and name.
|
the path and name.
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
For GitLab 12.5 and earlier, use the `HELM_UPGRADE_EXTRA_ARGS` environment variable
|
For GitLab 12.5 and earlier, use the `HELM_UPGRADE_EXTRA_ARGS` variable
|
||||||
to override the default chart values by setting `HELM_UPGRADE_EXTRA_ARGS` to `--values <my-values.yaml>`.
|
to override the default chart values by setting `HELM_UPGRADE_EXTRA_ARGS` to `--values <my-values.yaml>`.
|
||||||
|
|
||||||
## Customize the `helm upgrade` command
|
## Customize the `helm upgrade` command
|
||||||
|
|
||||||
You can customize the `helm upgrade` command used in the [auto-deploy-image](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image)
|
You can customize the `helm upgrade` command used in the [auto-deploy-image](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image)
|
||||||
by passing options to the command with the `HELM_UPGRADE_EXTRA_ARGS` variable.
|
by passing options to the command with the `HELM_UPGRADE_EXTRA_ARGS` CI/CD variable.
|
||||||
For example, set the value of `HELM_UPGRADE_EXTRA_ARGS` to `--no-hooks` to disable
|
For example, set the value of `HELM_UPGRADE_EXTRA_ARGS` to `--no-hooks` to disable
|
||||||
pre-upgrade and post-upgrade hooks when the command is executed.
|
pre-upgrade and post-upgrade hooks when the command is executed.
|
||||||
|
|
||||||
|
|
@ -170,7 +170,7 @@ list of options.
|
||||||
|
|
||||||
## Custom Helm chart per environment
|
## Custom Helm chart per environment
|
||||||
|
|
||||||
You can specify the use of a custom Helm chart per environment by scoping the environment variable
|
You can specify the use of a custom Helm chart per environment by scoping the CI/CD variable
|
||||||
to the desired environment. See [Limiting environment scopes of variables](../../ci/variables/README.md#limit-the-environment-scopes-of-cicd-variables).
|
to the desired environment. See [Limiting environment scopes of variables](../../ci/variables/README.md#limit-the-environment-scopes-of-cicd-variables).
|
||||||
|
|
||||||
## Customizing `.gitlab-ci.yml`
|
## Customizing `.gitlab-ci.yml`
|
||||||
|
|
@ -260,7 +260,7 @@ the [GitLab 12.10 based templates](https://gitlab.com/gitlab-org/auto-devops-v12
|
||||||
To support applications requiring a database,
|
To support applications requiring a database,
|
||||||
[PostgreSQL](https://www.postgresql.org/) is provisioned by default. The credentials to access
|
[PostgreSQL](https://www.postgresql.org/) is provisioned by default. The credentials to access
|
||||||
the database are preconfigured, but can be customized by setting the associated
|
the database are preconfigured, but can be customized by setting the associated
|
||||||
[variables](#environment-variables). You can use these credentials to define a `DATABASE_URL`:
|
[CI/CD variables](#cicd-variables). You can use these credentials to define a `DATABASE_URL`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
postgres://user:password@postgres-host:postgres-port/postgres-database
|
postgres://user:password@postgres-host:postgres-port/postgres-database
|
||||||
|
|
@ -269,7 +269,7 @@ postgres://user:password@postgres-host:postgres-port/postgres-database
|
||||||
### Upgrading PostgresSQL
|
### Upgrading PostgresSQL
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
The variable `AUTO_DEVOPS_POSTGRES_CHANNEL` that controls default provisioned
|
The CI/CD variable `AUTO_DEVOPS_POSTGRES_CHANNEL` that controls default provisioned
|
||||||
PostgreSQL was changed to `2` in [GitLab 13.0](https://gitlab.com/gitlab-org/gitlab/-/issues/210499).
|
PostgreSQL was changed to `2` in [GitLab 13.0](https://gitlab.com/gitlab-org/gitlab/-/issues/210499).
|
||||||
To keep using the old PostgreSQL, set the `AUTO_DEVOPS_POSTGRES_CHANNEL` variable to
|
To keep using the old PostgreSQL, set the `AUTO_DEVOPS_POSTGRES_CHANNEL` variable to
|
||||||
`1`.
|
`1`.
|
||||||
|
|
@ -290,17 +290,17 @@ production environments, for some use cases, it may not be sufficiently secure o
|
||||||
resilient, and you may want to use an external managed provider (such as
|
resilient, and you may want to use an external managed provider (such as
|
||||||
AWS Relational Database Service) for PostgreSQL.
|
AWS Relational Database Service) for PostgreSQL.
|
||||||
|
|
||||||
You must define environment-scoped variables for `POSTGRES_ENABLED` and
|
You must define environment-scoped CI/CD variables for `POSTGRES_ENABLED` and
|
||||||
`DATABASE_URL` in your project's CI/CD settings:
|
`DATABASE_URL` in your project's CI/CD settings:
|
||||||
|
|
||||||
1. Disable the built-in PostgreSQL installation for the required environments using
|
1. Disable the built-in PostgreSQL installation for the required environments using
|
||||||
scoped [environment variables](../../ci/environments/index.md#scoping-environments-with-specs).
|
environment-scoped [CI/CD variables](../../ci/environments/index.md#scoping-environments-with-specs).
|
||||||
For this use case, it's likely that only `production` must be added to this
|
For this use case, it's likely that only `production` must be added to this
|
||||||
list. The built-in PostgreSQL setup for Review Apps and staging is sufficient.
|
list. The built-in PostgreSQL setup for Review Apps and staging is sufficient.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
1. Define the `DATABASE_URL` CI variable as a scoped environment variable that is
|
1. Define the `DATABASE_URL` variable as an environment-scoped variable that is
|
||||||
available to your application. This should be a URL in the following format:
|
available to your application. This should be a URL in the following format:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -310,7 +310,7 @@ You must define environment-scoped variables for `POSTGRES_ENABLED` and
|
||||||
You must ensure that your Kubernetes cluster has network access to wherever
|
You must ensure that your Kubernetes cluster has network access to wherever
|
||||||
PostgreSQL is hosted.
|
PostgreSQL is hosted.
|
||||||
|
|
||||||
## Environment variables
|
## CI/CD variables
|
||||||
|
|
||||||
The following variables can be used for setting up the Auto DevOps domain,
|
The following variables can be used for setting up the Auto DevOps domain,
|
||||||
providing a custom Helm chart, or scaling your application. PostgreSQL can
|
providing a custom Helm chart, or scaling your application. PostgreSQL can
|
||||||
|
|
@ -318,10 +318,10 @@ also be customized, and you can use a [custom buildpack](#custom-buildpacks).
|
||||||
|
|
||||||
### Build and deployment
|
### Build and deployment
|
||||||
|
|
||||||
The following table lists variables related to building and deploying
|
The following table lists CI/CD variables related to building and deploying
|
||||||
applications.
|
applications.
|
||||||
|
|
||||||
| **Variable** | **Description** |
|
| **CI/CD Variable** | **Description** |
|
||||||
|-----------------------------------------|------------------------------------|
|
|-----------------------------------------|------------------------------------|
|
||||||
| `ADDITIONAL_HOSTS` | Fully qualified domain names specified as a comma-separated list that are added to the Ingress hosts. |
|
| `ADDITIONAL_HOSTS` | Fully qualified domain names specified as a comma-separated list that are added to the Ingress hosts. |
|
||||||
| `<ENVIRONMENT>_ADDITIONAL_HOSTS` | For a specific environment, the fully qualified domain names specified as a comma-separated list that are added to the Ingress hosts. This takes precedence over `ADDITIONAL_HOSTS`. |
|
| `<ENVIRONMENT>_ADDITIONAL_HOSTS` | For a specific environment, the fully qualified domain names specified as a comma-separated list that are added to the Ingress hosts. This takes precedence over `ADDITIONAL_HOSTS`. |
|
||||||
|
|
@ -329,7 +329,7 @@ applications.
|
||||||
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_ENABLED` | When set to a non-empty value and no `Dockerfile` is present, Auto Build builds your application using Cloud Native Buildpacks instead of Herokuish. [More details](stages.md#auto-build-using-cloud-native-buildpacks-beta). |
|
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_ENABLED` | When set to a non-empty value and no `Dockerfile` is present, Auto Build builds your application using Cloud Native Buildpacks instead of Herokuish. [More details](stages.md#auto-build-using-cloud-native-buildpacks-beta). |
|
||||||
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER` | The builder used when building with Cloud Native Buildpacks. The default builder is `heroku/buildpacks:18`. [More details](stages.md#auto-build-using-cloud-native-buildpacks-beta). |
|
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER` | The builder used when building with Cloud Native Buildpacks. The default builder is `heroku/buildpacks:18`. [More details](stages.md#auto-build-using-cloud-native-buildpacks-beta). |
|
||||||
| `AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` | Extra arguments to be passed to the `docker build` command. Note that using quotes doesn't prevent word splitting. [More details](#passing-arguments-to-docker-build). |
|
| `AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` | Extra arguments to be passed to the `docker build` command. Note that using quotes doesn't prevent word splitting. [More details](#passing-arguments-to-docker-build). |
|
||||||
| `AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES` | A [comma-separated list of CI variable names](#forward-ci-variables-to-the-build-environment) to be forwarded to the build environment (the buildpack builder or `docker build`). |
|
| `AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES` | A [comma-separated list of CI/CD variable names](#forward-cicd-variables-to-the-build-environment) to be forwarded to the build environment (the buildpack builder or `docker build`). |
|
||||||
| `AUTO_DEVOPS_CHART` | Helm Chart used to deploy your apps. Defaults to the one [provided by GitLab](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image/-/tree/master/assets/auto-deploy-app). |
|
| `AUTO_DEVOPS_CHART` | Helm Chart used to deploy your apps. Defaults to the one [provided by GitLab](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image/-/tree/master/assets/auto-deploy-app). |
|
||||||
| `AUTO_DEVOPS_CHART_REPOSITORY` | Helm Chart repository used to search for charts. Defaults to `https://charts.gitlab.io`. |
|
| `AUTO_DEVOPS_CHART_REPOSITORY` | Helm Chart repository used to search for charts. Defaults to `https://charts.gitlab.io`. |
|
||||||
| `AUTO_DEVOPS_CHART_REPOSITORY_NAME` | From GitLab 11.11, used to set the name of the Helm repository. Defaults to `gitlab`. |
|
| `AUTO_DEVOPS_CHART_REPOSITORY_NAME` | From GitLab 11.11, used to set the name of the Helm repository. Defaults to `gitlab`. |
|
||||||
|
|
@ -367,9 +367,9 @@ Auto DevOps can undo your changes.
|
||||||
|
|
||||||
### Database
|
### Database
|
||||||
|
|
||||||
The following table lists variables related to the database.
|
The following table lists CI/CD variables related to the database.
|
||||||
|
|
||||||
| **Variable** | **Description** |
|
| **CI/CD Variable** | **Description** |
|
||||||
|-----------------------------------------|------------------------------------|
|
|-----------------------------------------|------------------------------------|
|
||||||
| `DB_INITIALIZE` | From GitLab 11.4, used to specify the command to run to initialize the application's PostgreSQL database. Runs inside the application pod. |
|
| `DB_INITIALIZE` | From GitLab 11.4, used to specify the command to run to initialize the application's PostgreSQL database. Runs inside the application pod. |
|
||||||
| `DB_MIGRATE` | From GitLab 11.4, used to specify the command to run to migrate the application's PostgreSQL database. Runs inside the application pod. |
|
| `DB_MIGRATE` | From GitLab 11.4, used to specify the command to run to migrate the application's PostgreSQL database. Runs inside the application pod. |
|
||||||
|
|
@ -383,7 +383,7 @@ The following table lists variables related to the database.
|
||||||
|
|
||||||
The following table lists variables used to disable jobs.
|
The following table lists variables used to disable jobs.
|
||||||
|
|
||||||
| **Job Name** | **Variable** | **GitLab version** | **Description** |
|
| **Job Name** | **CI/CDVariable** | **GitLab version** | **Description** |
|
||||||
|----------------------------------------|---------------------------------|-----------------------|-----------------|
|
|----------------------------------------|---------------------------------|-----------------------|-----------------|
|
||||||
| `.fuzz_base` | `COVFUZZ_DISABLED` | [From GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34984) | [Read more](../../user/application_security/coverage_fuzzing/) about how `.fuzz_base` provide capability for your own jobs. If the variable is present, your jobs aren't created. |
|
| `.fuzz_base` | `COVFUZZ_DISABLED` | [From GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34984) | [Read more](../../user/application_security/coverage_fuzzing/) about how `.fuzz_base` provide capability for your own jobs. If the variable is present, your jobs aren't created. |
|
||||||
| `apifuzzer_fuzz` | `API_FUZZING_DISABLED` | [From GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39135) | If the variable is present, the job isn't created. |
|
| `apifuzzer_fuzz` | `API_FUZZING_DISABLED` | [From GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39135) | If the variable is present, the job isn't created. |
|
||||||
|
|
@ -433,7 +433,7 @@ The following table lists variables used to disable jobs.
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/49056) in GitLab 11.7.
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/49056) in GitLab 11.7.
|
||||||
|
|
||||||
Some applications need to define secret variables that are accessible by the deployed
|
Some applications need to define secret variables that are accessible by the deployed
|
||||||
application. Auto DevOps detects variables starting with `K8S_SECRET_`, and makes
|
application. Auto DevOps detects CI/CD variables starting with `K8S_SECRET_`, and makes
|
||||||
these prefixed variables available to the deployed application as environment variables.
|
these prefixed variables available to the deployed application as environment variables.
|
||||||
|
|
||||||
To configure your application variables:
|
To configure your application variables:
|
||||||
|
|
@ -545,7 +545,7 @@ The normal behavior of Auto DevOps is to use continuous deployment, pushing
|
||||||
automatically to the `production` environment every time a new pipeline is run
|
automatically to the `production` environment every time a new pipeline is run
|
||||||
on the default branch. However, there are cases where you might want to use a
|
on the default branch. However, there are cases where you might want to use a
|
||||||
staging environment, and deploy to production manually. For this scenario, the
|
staging environment, and deploy to production manually. For this scenario, the
|
||||||
`STAGING_ENABLED` environment variable was introduced.
|
`STAGING_ENABLED` CI/CD variable was introduced.
|
||||||
|
|
||||||
If you define `STAGING_ENABLED` with a non-empty value, then GitLab automatically deploys the application
|
If you define `STAGING_ENABLED` with a non-empty value, then GitLab automatically deploys the application
|
||||||
to a `staging` environment, and creates a `production_manual` job for
|
to a `staging` environment, and creates a `production_manual` job for
|
||||||
|
|
@ -584,7 +584,7 @@ are created:
|
||||||
1. `rollout 50%`
|
1. `rollout 50%`
|
||||||
1. `rollout 100%`
|
1. `rollout 100%`
|
||||||
|
|
||||||
The percentage is based on the `REPLICAS` variable, and defines the number of
|
The percentage is based on the `REPLICAS` CI/CD variable, and defines the number of
|
||||||
pods you want to have for your deployment. If the value is `10`, and you run the
|
pods you want to have for your deployment. If the value is `10`, and you run the
|
||||||
`10%` rollout job, there is `1` new pod and `9` old ones.
|
`10%` rollout job, there is `1` new pod and `9` old ones.
|
||||||
|
|
||||||
|
|
@ -616,8 +616,8 @@ With `INCREMENTAL_ROLLOUT_MODE` set to `manual` and with `STAGING_ENABLED`
|
||||||

|

|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
Before GitLab 11.4, the presence of the `INCREMENTAL_ROLLOUT_ENABLED` environment
|
Before GitLab 11.4, the presence of the `INCREMENTAL_ROLLOUT_ENABLED` CI/CD variable
|
||||||
variable enabled this feature. This configuration is deprecated, and is scheduled to be
|
enabled this feature. This configuration is deprecated, and is scheduled to be
|
||||||
removed in the future.
|
removed in the future.
|
||||||
|
|
||||||
### Timed incremental rollout to production **(PREMIUM)**
|
### Timed incremental rollout to production **(PREMIUM)**
|
||||||
|
|
@ -632,7 +632,7 @@ This configuration is based on
|
||||||
|
|
||||||
Everything behaves the same way, except:
|
Everything behaves the same way, except:
|
||||||
|
|
||||||
- To enable it, set the `INCREMENTAL_ROLLOUT_MODE` variable to `timed`.
|
- To enable it, set the `INCREMENTAL_ROLLOUT_MODE` CI/CD variable to `timed`.
|
||||||
- Instead of the standard `production` job, the following jobs are created with
|
- Instead of the standard `production` job, the following jobs are created with
|
||||||
a 5 minute delay between each:
|
a 5 minute delay between each:
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 39 KiB |
|
|
@ -31,25 +31,12 @@ management of processes, and faster creation of new projects: push your code,
|
||||||
and GitLab does the rest, improving your productivity and efficiency.
|
and GitLab does the rest, improving your productivity and efficiency.
|
||||||
|
|
||||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||||
For an introduction to Auto DevOps, watch [AutoDevOps in GitLab 11.0](https://youtu.be/0Tc0YYBxqi4).
|
For an introduction to Auto DevOps, watch [AutoDevOps in GitLab 11.0](https://youtu.be/0Tc0YYBxqi4) or see this [overview](https://about.gitlab.com/stages-devops-lifecycle/auto-devops/).
|
||||||
|
|
||||||
For requirements, read [Requirements for Auto DevOps](requirements.md) for more information.
|
For requirements, read [Requirements for Auto DevOps](requirements.md) for more information.
|
||||||
|
|
||||||
For a developer's guide, read [Auto DevOps development guide](../../development/auto_devops.md).
|
For a developer's guide, read [Auto DevOps development guide](../../development/auto_devops.md).
|
||||||
|
|
||||||
### Share your feedback
|
|
||||||
|
|
||||||
As Auto DevOps continues to gain popularity, and lowers the barrier to entry for
|
|
||||||
getting started with DevOps and CI/CD, see what our wider community is saying:
|
|
||||||
|
|
||||||
From [AlexJonesax](https://twitter.com/AlexJonesax) and [KaiPMDH](https://twitter.com/KaiPMDH) on Twitter:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
We welcome everyone to [share your experience by tagging GitLab on Twitter](https://twitter.com/gitlab).
|
|
||||||
|
|
||||||
## Enabled by default
|
## Enabled by default
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41729) in GitLab 11.3.
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41729) in GitLab 11.3.
|
||||||
|
|
|
||||||
|
|
@ -234,8 +234,8 @@ takes you to the pod's logs page.
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
The example shows only one pod hosting the application at the moment, but you can add
|
The example shows only one pod hosting the application at the moment, but you can add
|
||||||
more pods by defining the [`REPLICAS` variable](customize.md#environment-variables)
|
more pods by defining the [`REPLICAS` CI/CD variable](customize.md#cicd-variables)
|
||||||
in **Settings > CI/CD > Environment variables**.
|
in **Settings > CI / CD > Variables**.
|
||||||
|
|
||||||
### Work with branches
|
### Work with branches
|
||||||
|
|
||||||
|
|
@ -307,7 +307,7 @@ and customized to fit your workflow. Here are some helpful resources for further
|
||||||
1. [Auto DevOps](index.md)
|
1. [Auto DevOps](index.md)
|
||||||
1. [Multiple Kubernetes clusters](index.md#using-multiple-kubernetes-clusters)
|
1. [Multiple Kubernetes clusters](index.md#using-multiple-kubernetes-clusters)
|
||||||
1. [Incremental rollout to production](customize.md#incremental-rollout-to-production) **(PREMIUM)**
|
1. [Incremental rollout to production](customize.md#incremental-rollout-to-production) **(PREMIUM)**
|
||||||
1. [Disable jobs you don't need with environment variables](customize.md#environment-variables)
|
1. [Disable jobs you don't need with CI/CD variables](customize.md#cicd-variables)
|
||||||
1. [Use a static IP for your cluster](../../user/clusters/applications.md#using-a-static-ip)
|
1. [Use a static IP for your cluster](../../user/clusters/applications.md#using-a-static-ip)
|
||||||
1. [Use your own buildpacks to build your application](customize.md#custom-buildpacks)
|
1. [Use your own buildpacks to build your application](customize.md#custom-buildpacks)
|
||||||
1. [Prometheus monitoring](../../user/project/integrations/prometheus.md)
|
1. [Prometheus monitoring](../../user/project/integrations/prometheus.md)
|
||||||
|
|
|
||||||
|
|
@ -109,8 +109,8 @@ After all requirements are met, you can [enable Auto DevOps](index.md#enablingdi
|
||||||
|
|
||||||
You can choose to target [AWS ECS](../../ci/cloud_deployment/index.md) as a deployment platform instead of using Kubernetes.
|
You can choose to target [AWS ECS](../../ci/cloud_deployment/index.md) as a deployment platform instead of using Kubernetes.
|
||||||
|
|
||||||
To get started on Auto DevOps to AWS ECS, you must add a specific Environment
|
To get started on Auto DevOps to AWS ECS, you must add a specific CI/CD variable.
|
||||||
Variable. To do so, follow these steps:
|
To do so, follow these steps:
|
||||||
|
|
||||||
1. In your project, go to **Settings > CI / CD** and expand the **Variables**
|
1. In your project, go to **Settings > CI / CD** and expand the **Variables**
|
||||||
section.
|
section.
|
||||||
|
|
@ -121,7 +121,7 @@ Variable. To do so, follow these steps:
|
||||||
- `ECS` if you're not enforcing any launch type check when deploying to ECS.
|
- `ECS` if you're not enforcing any launch type check when deploying to ECS.
|
||||||
|
|
||||||
When you trigger a pipeline, if you have Auto DevOps enabled and if you have correctly
|
When you trigger a pipeline, if you have Auto DevOps enabled and if you have correctly
|
||||||
[entered AWS credentials as environment variables](../../ci/cloud_deployment/index.md#deploy-your-application-to-the-aws-elastic-container-service-ecs),
|
[entered AWS credentials as variables](../../ci/cloud_deployment/index.md#deploy-your-application-to-the-aws-elastic-container-service-ecs),
|
||||||
your application is deployed to AWS ECS.
|
your application is deployed to AWS ECS.
|
||||||
|
|
||||||
[GitLab Managed Apps](../../user/clusters/applications.md) are not available when deploying to AWS ECS.
|
[GitLab Managed Apps](../../user/clusters/applications.md) are not available when deploying to AWS ECS.
|
||||||
|
|
@ -145,7 +145,7 @@ own pipeline, as the override stops working when the name changes.
|
||||||
|
|
||||||
You can target [AWS EC2](../../ci/cloud_deployment/index.md)
|
You can target [AWS EC2](../../ci/cloud_deployment/index.md)
|
||||||
as a deployment platform instead of Kubernetes. To use Auto DevOps with AWS EC2, you must add a
|
as a deployment platform instead of Kubernetes. To use Auto DevOps with AWS EC2, you must add a
|
||||||
specific environment variable.
|
specific CI/CD variable.
|
||||||
|
|
||||||
For more details, see [Custom build job for Auto DevOps](../../ci/cloud_deployment/index.md#custom-build-job-for-auto-devops)
|
For more details, see [Custom build job for Auto DevOps](../../ci/cloud_deployment/index.md#custom-build-job-for-auto-devops)
|
||||||
for deployments to AWS EC2.
|
for deployments to AWS EC2.
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ For the requirements of other languages and frameworks, read the
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
If Auto Build fails despite the project meeting the buildpack requirements, set
|
If Auto Build fails despite the project meeting the buildpack requirements, set
|
||||||
a project variable `TRACE=true` to enable verbose logging, which may help you
|
a project CI/CD variable `TRACE=true` to enable verbose logging, which may help you
|
||||||
troubleshoot.
|
troubleshoot.
|
||||||
|
|
||||||
### Auto Build using Cloud Native Buildpacks (beta)
|
### Auto Build using Cloud Native Buildpacks (beta)
|
||||||
|
|
@ -62,9 +62,9 @@ troubleshoot.
|
||||||
|
|
||||||
Auto Build supports building your application using [Cloud Native Buildpacks](https://buildpacks.io)
|
Auto Build supports building your application using [Cloud Native Buildpacks](https://buildpacks.io)
|
||||||
through the [`pack` command](https://github.com/buildpacks/pack). To use Cloud Native Buildpacks,
|
through the [`pack` command](https://github.com/buildpacks/pack). To use Cloud Native Buildpacks,
|
||||||
set the CI variable `AUTO_DEVOPS_BUILD_IMAGE_CNB_ENABLED` to a non-empty
|
set the CI/CD variable `AUTO_DEVOPS_BUILD_IMAGE_CNB_ENABLED` to a non-empty
|
||||||
value. The default builder is `heroku/buildpacks:18` but a different builder
|
value. The default builder is `heroku/buildpacks:18` but a different builder
|
||||||
can be selected using the CI variable `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER`.
|
can be selected using the CI/CD variable `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER`.
|
||||||
|
|
||||||
Cloud Native Buildpacks (CNBs) are an evolution of Heroku buildpacks, and
|
Cloud Native Buildpacks (CNBs) are an evolution of Heroku buildpacks, and
|
||||||
GitLab expects them to eventually supersede Herokuish-based builds within Auto DevOps. For more
|
GitLab expects them to eventually supersede Herokuish-based builds within Auto DevOps. For more
|
||||||
|
|
@ -103,7 +103,9 @@ NOTE:
|
||||||
Not all buildpacks supported by [Auto Build](#auto-build) are supported by Auto Test.
|
Not all buildpacks supported by [Auto Build](#auto-build) are supported by Auto Test.
|
||||||
Auto Test uses [Herokuish](https://gitlab.com/gitlab-org/gitlab/-/issues/212689), *not*
|
Auto Test uses [Herokuish](https://gitlab.com/gitlab-org/gitlab/-/issues/212689), *not*
|
||||||
Cloud Native Buildpacks, and only buildpacks that implement the
|
Cloud Native Buildpacks, and only buildpacks that implement the
|
||||||
|
<!-- vale gitlab.Spelling = NO -->
|
||||||
[Testpack API](https://devcenter.heroku.com/articles/testpack-api) are supported.
|
[Testpack API](https://devcenter.heroku.com/articles/testpack-api) are supported.
|
||||||
|
<!-- vale gitlab.Spelling = YES -->
|
||||||
|
|
||||||
### Currently supported languages
|
### Currently supported languages
|
||||||
|
|
||||||
|
|
@ -284,7 +286,7 @@ see the documentation.
|
||||||
### Overriding the DAST target
|
### Overriding the DAST target
|
||||||
|
|
||||||
To use a custom target instead of the auto-deployed review apps,
|
To use a custom target instead of the auto-deployed review apps,
|
||||||
set a `DAST_WEBSITE` environment variable to the URL for DAST to scan.
|
set a `DAST_WEBSITE` CI/CD variable to the URL for DAST to scan.
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
If [DAST Full Scan](../../user/application_security/dast/index.md#full-scan) is
|
If [DAST Full Scan](../../user/application_security/dast/index.md#full-scan) is
|
||||||
|
|
@ -297,10 +299,10 @@ data loss or corruption.
|
||||||
|
|
||||||
You can disable DAST:
|
You can disable DAST:
|
||||||
|
|
||||||
- On all branches by setting the `DAST_DISABLED` environment variable to `"true"`.
|
- On all branches by setting the `DAST_DISABLED` CI/CD variable to `"true"`.
|
||||||
- Only on the default branch by setting the `DAST_DISABLED_FOR_DEFAULT_BRANCH`
|
- Only on the default branch by setting the `DAST_DISABLED_FOR_DEFAULT_BRANCH`
|
||||||
environment variable to `"true"`.
|
variable to `"true"`.
|
||||||
- Only on feature branches by setting `REVIEW_DISABLED` environment variable to
|
- Only on feature branches by setting `REVIEW_DISABLED` variable to
|
||||||
`"true"`. This also disables the Review App.
|
`"true"`. This also disables the Review App.
|
||||||
|
|
||||||
## Auto Browser Performance Testing **(PREMIUM)**
|
## Auto Browser Performance Testing **(PREMIUM)**
|
||||||
|
|
@ -336,7 +338,7 @@ uploads the report as an artifact.
|
||||||
|
|
||||||
Some initial setup is required. A [k6](https://k6.io/) test needs to be
|
Some initial setup is required. A [k6](https://k6.io/) test needs to be
|
||||||
written that's tailored to your specific application. The test also needs to be
|
written that's tailored to your specific application. The test also needs to be
|
||||||
configured so it can pick up the environment's dynamic URL via an environment variable.
|
configured so it can pick up the environment's dynamic URL via a CI/CD variable.
|
||||||
|
|
||||||
Any load performance test result differences between the source and target branches are also
|
Any load performance test result differences between the source and target branches are also
|
||||||
[shown in the merge request widget](../../user/project/merge_requests/load_performance_testing.md).
|
[shown in the merge request widget](../../user/project/merge_requests/load_performance_testing.md).
|
||||||
|
|
@ -356,7 +358,7 @@ default, but the
|
||||||
[Auto DevOps template](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)
|
[Auto DevOps template](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)
|
||||||
contains job definitions for these tasks if you want to enable them.
|
contains job definitions for these tasks if you want to enable them.
|
||||||
|
|
||||||
You can use [environment variables](customize.md#environment-variables) to automatically
|
You can use [CI/CD variables](customize.md#cicd-variables) to automatically
|
||||||
scale your pod replicas, and to apply custom arguments to the Auto DevOps `helm upgrade`
|
scale your pod replicas, and to apply custom arguments to the Auto DevOps `helm upgrade`
|
||||||
commands. This is an easy way to
|
commands. This is an easy way to
|
||||||
[customize the Auto Deploy Helm chart](customize.md#custom-helm-chart).
|
[customize the Auto Deploy Helm chart](customize.md#custom-helm-chart).
|
||||||
|
|
@ -440,7 +442,7 @@ On GitLab 12.9 and 12.10, opting into
|
||||||
`AUTO_DEVOPS_POSTGRES_CHANNEL` version `2` deletes the version `1` PostgreSQL
|
`AUTO_DEVOPS_POSTGRES_CHANNEL` version `2` deletes the version `1` PostgreSQL
|
||||||
database. Follow the [guide to upgrading PostgreSQL](upgrading_postgresql.md)
|
database. Follow the [guide to upgrading PostgreSQL](upgrading_postgresql.md)
|
||||||
to back up and restore your database before opting into version `2` (On
|
to back up and restore your database before opting into version `2` (On
|
||||||
GitLab 13.0, an additional variable is required to trigger the database
|
GitLab 13.0, an additional CI/CD variable is required to trigger the database
|
||||||
deletion).
|
deletion).
|
||||||
|
|
||||||
### Migrations
|
### Migrations
|
||||||
|
|
@ -448,7 +450,7 @@ deletion).
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/21955) in GitLab 11.4
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/21955) in GitLab 11.4
|
||||||
|
|
||||||
You can configure database initialization and migrations for PostgreSQL to run
|
You can configure database initialization and migrations for PostgreSQL to run
|
||||||
within the application pod by setting the project variables `DB_INITIALIZE` and
|
within the application pod by setting the project CI/CD variables `DB_INITIALIZE` and
|
||||||
`DB_MIGRATE` respectively.
|
`DB_MIGRATE` respectively.
|
||||||
|
|
||||||
If present, `DB_INITIALIZE` is run as a shell command within an application pod
|
If present, `DB_INITIALIZE` is run as a shell command within an application pod
|
||||||
|
|
@ -500,7 +502,7 @@ access to a Redis instance. Auto DevOps doesn't deploy this instance for you, so
|
||||||
you must:
|
you must:
|
||||||
|
|
||||||
- Maintain your own Redis instance.
|
- Maintain your own Redis instance.
|
||||||
- Set a CI variable `K8S_SECRET_REDIS_URL`, which is the URL of this instance,
|
- Set a CI/CD variable `K8S_SECRET_REDIS_URL`, which is the URL of this instance,
|
||||||
to ensure it's passed into your deployments.
|
to ensure it's passed into your deployments.
|
||||||
|
|
||||||
After configuring your worker to respond to health checks, run a Sidekiq
|
After configuring your worker to respond to health checks, run a Sidekiq
|
||||||
|
|
@ -686,5 +688,5 @@ You can follow the [code intelligence epic](https://gitlab.com/groups/gitlab-org
|
||||||
for updates.
|
for updates.
|
||||||
|
|
||||||
This stage is enabled by default. You can disable it by adding the
|
This stage is enabled by default. You can disable it by adding the
|
||||||
`CODE_INTELLIGENCE_DISABLED` environment variable. Read more about
|
`CODE_INTELLIGENCE_DISABLED` CI/CD variable. Read more about
|
||||||
[disabling Auto DevOps jobs](../../topics/autodevops/customize.md#disable-jobs).
|
[disabling Auto DevOps jobs](../../topics/autodevops/customize.md#disable-jobs).
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ If your Auto DevOps project has an active environment that was deployed with the
|
||||||
job saves a backup for 1 week in a job artifact called `helm-2-release-backups`.
|
job saves a backup for 1 week in a job artifact called `helm-2-release-backups`.
|
||||||
The backup is in a Kubernetes manifest file that can be restored using
|
The backup is in a Kubernetes manifest file that can be restored using
|
||||||
`kubectl apply -f $backup`.
|
`kubectl apply -f $backup`.
|
||||||
1. Remove the `MIGRATE_HELM_2TO3` variable.
|
1. Remove the `MIGRATE_HELM_2TO3` CI/CD variable.
|
||||||
|
|
||||||
#### In-Cluster PostgreSQL Channel 2
|
#### In-Cluster PostgreSQL Channel 2
|
||||||
|
|
||||||
|
|
@ -145,11 +145,11 @@ steps to upgrade to v2:
|
||||||
them to `production` first to delete the unstable tracks.
|
them to `production` first to delete the unstable tracks.
|
||||||
1. Verify your project is [using the v2 `auto-deploy-image`](#verify-dependency-versions).
|
1. Verify your project is [using the v2 `auto-deploy-image`](#verify-dependency-versions).
|
||||||
If not, [specify the version](#use-a-specific-version-of-auto-deploy-dependencies).
|
If not, [specify the version](#use-a-specific-version-of-auto-deploy-dependencies).
|
||||||
1. Add an `AUTO_DEVOPS_FORCE_DEPLOY_V2` environment variable with a value of `true`
|
1. Add an `AUTO_DEVOPS_FORCE_DEPLOY_V2` CI/CD variable with a value of `true`
|
||||||
in the GitLab CI/CD settings.
|
in the GitLab CI/CD settings.
|
||||||
1. Create a new pipeline and run the `production` job to renew the resource architecture
|
1. Create a new pipeline and run the `production` job to renew the resource architecture
|
||||||
with the v2 `auto-deploy-app chart`.
|
with the v2 `auto-deploy-app chart`.
|
||||||
1. Remove the `AUTO_DEVOPS_FORCE_DEPLOY_V2` environment variable.
|
1. Remove the `AUTO_DEVOPS_FORCE_DEPLOY_V2` variable.
|
||||||
|
|
||||||
### Use a specific version of Auto Deploy dependencies
|
### Use a specific version of Auto Deploy dependencies
|
||||||
|
|
||||||
|
|
@ -167,7 +167,7 @@ include:
|
||||||
### Ignore warnings and continue deploying
|
### Ignore warnings and continue deploying
|
||||||
|
|
||||||
If you are certain that the new chart version is safe to be deployed, you can add
|
If you are certain that the new chart version is safe to be deployed, you can add
|
||||||
the `AUTO_DEVOPS_FORCE_DEPLOY_V<major-version-number>` [environment variable](customize.md#build-and-deployment)
|
the `AUTO_DEVOPS_FORCE_DEPLOY_V<major-version-number>` [CI/CD variable](customize.md#build-and-deployment)
|
||||||
to force the deployment to continue.
|
to force the deployment to continue.
|
||||||
|
|
||||||
For example, if you want to deploy the `v2.0.0` chart on a deployment that previously
|
For example, if you want to deploy the `v2.0.0` chart on a deployment that previously
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ sort order is by **Last created**.
|
||||||
To search for groups by name, enter your criteria in the search field. The group search is case
|
To search for groups by name, enter your criteria in the search field. The group search is case
|
||||||
insensitive, and applies partial matching.
|
insensitive, and applies partial matching.
|
||||||
|
|
||||||
To [Create a new group](../group/index.md#create-a-new-group) click **New group**.
|
To [Create a new group](../group/index.md#create-a-group) click **New group**.
|
||||||
|
|
||||||
### Administering Jobs
|
### Administering Jobs
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ lock files. Python projects can have lock files, but GitLab Secure tools don't s
|
||||||
## Security scans using Auto DevOps
|
## Security scans using Auto DevOps
|
||||||
|
|
||||||
When using [Auto DevOps](../../../topics/autodevops/index.md), use
|
When using [Auto DevOps](../../../topics/autodevops/index.md), use
|
||||||
[special environment variables](../../../topics/autodevops/customize.md#environment-variables)
|
[special environment variables](../../../topics/autodevops/customize.md#cicd-variables)
|
||||||
to configure daily security scans.
|
to configure daily security scans.
|
||||||
|
|
||||||
<!-- ## Troubleshooting
|
<!-- ## Troubleshooting
|
||||||
|
|
|
||||||
|
|
@ -372,7 +372,7 @@ For GitLab Runner to function, you _must_ specify the following:
|
||||||
- `runnerRegistrationToken`: The registration token for adding new runners to GitLab.
|
- `runnerRegistrationToken`: The registration token for adding new runners to GitLab.
|
||||||
This must be [retrieved from your GitLab instance](../../ci/runners/README.md).
|
This must be [retrieved from your GitLab instance](../../ci/runners/README.md).
|
||||||
|
|
||||||
These values can be specified using [CI variables](../../ci/variables/README.md):
|
These values can be specified using [CI/CD variables](../../ci/variables/README.md):
|
||||||
|
|
||||||
- `GITLAB_RUNNER_GITLAB_URL` is used for `gitlabUrl`.
|
- `GITLAB_RUNNER_GITLAB_URL` is used for `gitlabUrl`.
|
||||||
- `GITLAB_RUNNER_REGISTRATION_TOKEN` is used for `runnerRegistrationToken`
|
- `GITLAB_RUNNER_REGISTRATION_TOKEN` is used for `runnerRegistrationToken`
|
||||||
|
|
@ -730,7 +730,7 @@ Set:
|
||||||
- "Redirect URI" to `http://<JupyterHub Host>/hub/oauth_callback`.
|
- "Redirect URI" to `http://<JupyterHub Host>/hub/oauth_callback`.
|
||||||
- "Scope" to `api read_repository write_repository`.
|
- "Scope" to `api read_repository write_repository`.
|
||||||
|
|
||||||
In addition, the following variables must be specified using [CI variables](../../ci/variables/README.md):
|
In addition, the following variables must be specified using [CI/CD variables](../../ci/variables/README.md):
|
||||||
|
|
||||||
- `JUPYTERHUB_PROXY_SECRET_TOKEN` - Secure string used for signing communications
|
- `JUPYTERHUB_PROXY_SECRET_TOKEN` - Secure string used for signing communications
|
||||||
from the hub. Read [`proxy.secretToken`](https://zero-to-jupyterhub.readthedocs.io/en/stable/reference/reference.html#proxy-secrettoken).
|
from the hub. Read [`proxy.secretToken`](https://zero-to-jupyterhub.readthedocs.io/en/stable/reference/reference.html#proxy-secrettoken).
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB |
|
|
@ -7,54 +7,34 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
||||||
|
|
||||||
# Groups
|
# Groups
|
||||||
|
|
||||||
With GitLab Groups, you can:
|
In GitLab, you can put related projects together in a group.
|
||||||
|
|
||||||
- Assemble related projects together.
|
For example, you might create a group for your company members and a subgroup for each individual team.
|
||||||
- Grant members access to several projects at once.
|
You can name the group `company-team`, and the subgroups `backend-team`, `frontend-team`, and `production-team`.
|
||||||
|
|
||||||
For a video introduction to GitLab Groups, see [GitLab University: Repositories, Projects and Groups](https://www.youtube.com/watch?v=4TWfh1aKHHw).
|
Then you can:
|
||||||
|
|
||||||
Groups can also be nested in [subgroups](subgroups/index.md).
|
- Grant members access to multiple projects at once.
|
||||||
|
- Add to-do items for all of the group members at once.
|
||||||
|
- View the [issues](../project/issues/index.md#issues-list) and
|
||||||
|
[merge requests](../project/merge_requests/reviewing_and_managing_merge_requests.md#view-merge-requests-for-all-projects-in-a-group)
|
||||||
|
for all projects in the group, together in a single list view.
|
||||||
|
- [Bulk edit](../group/bulk_editing/index.md) issues, epics, and merge requests.
|
||||||
|
|
||||||
Find your groups by clicking **Groups > Your Groups** in the top navigation.
|
You can also create [subgroups](subgroups/index.md).
|
||||||
|
|
||||||

|
## View groups
|
||||||
|
|
||||||
> The **Groups** dropdown in the top navigation was [introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/36234) in [GitLab 11.1](https://about.gitlab.com/releases/2018/07/22/gitlab-11-1-released/#groups-dropdown-in-navigation).
|
To view groups:
|
||||||
|
|
||||||
The **Groups** page displays:
|
1. In the top menu, select **Groups > Your Groups**. All groups you are a member of are displayed.
|
||||||
|
1. To view a list of public groups, select **Explore public groups**.
|
||||||
|
|
||||||
- All groups you are a member of, when **Your groups** is selected.
|
You can also view groups by namespace.
|
||||||
- A list of public groups, when **Explore public groups** is selected.
|
|
||||||
|
|
||||||
Each group on the **Groups** page is listed with:
|
### Namespaces
|
||||||
|
|
||||||
- How many subgroups it has.
|
In GitLab, a namespace is a unique name and URL for a user, a group, or subgroup.
|
||||||
- How many projects it contains.
|
|
||||||
- How many members the group has, not including members inherited from parent group(s).
|
|
||||||
- The group's visibility.
|
|
||||||
- A link to the group's settings, if you have sufficient permissions.
|
|
||||||
- A link to leave the group, if you are a member.
|
|
||||||
|
|
||||||
## Use cases
|
|
||||||
|
|
||||||
You can create groups for numerous reasons. To name a couple:
|
|
||||||
|
|
||||||
- Grant access to multiple projects and multiple team members in fewer steps by organizing related projects under the same [namespace](#namespaces) and adding members to the top-level group.
|
|
||||||
- Make it easier to `@mention` all of your team at once in issues and merge requests by creating a group and including the appropriate members.
|
|
||||||
|
|
||||||
For example, you could create a group for your company members, and create a [subgroup](subgroups/index.md) for each individual team. Let's say you create a group called `company-team`, and you create subgroups in this group for the individual teams `backend-team`, `frontend-team`, and `production-team`.
|
|
||||||
|
|
||||||
- When you start a new implementation from an issue, you add a comment:
|
|
||||||
_"`@company-team`, let's do it! `@company-team/backend-team` you're good to go!"_
|
|
||||||
- When your backend team needs help from frontend, they add a comment:
|
|
||||||
_"`@company-team/frontend-team` could you help us here please?"_
|
|
||||||
- When the frontend team completes their implementation, they comment:
|
|
||||||
_"`@company-team/backend-team`, it's done! Let's ship it `@company-team/production-team`!"_
|
|
||||||
|
|
||||||
## Namespaces
|
|
||||||
|
|
||||||
In GitLab, a namespace is a unique name to be used as a user name, a group name, or a subgroup name.
|
|
||||||
|
|
||||||
- `http://gitlab.example.com/username`
|
- `http://gitlab.example.com/username`
|
||||||
- `http://gitlab.example.com/groupname`
|
- `http://gitlab.example.com/groupname`
|
||||||
|
|
@ -62,35 +42,19 @@ In GitLab, a namespace is a unique name to be used as a user name, a group name,
|
||||||
|
|
||||||
For example, consider a user named Alex:
|
For example, consider a user named Alex:
|
||||||
|
|
||||||
1. Alex creates an account on GitLab.com with the username `alex`;
|
1. Alex creates an account with the username `alex`: `https://gitlab.example.com/alex`
|
||||||
their profile will be accessed under `https://gitlab.example.com/alex`
|
1. Alex creates a group for their team with the group name `alex-team`.
|
||||||
1. Alex creates a group for their team with the group name `alex-team`;
|
The group and its projects are available at: `https://gitlab.example.com/alex-team`
|
||||||
the group and its projects will be accessed under `https://gitlab.example.com/alex-team`
|
1. Alex creates a subgroup of `alex-team` with the subgroup name `marketing`.
|
||||||
1. Alex creates a subgroup of `alex-team` with the subgroup name `marketing`;
|
The subgroup and its projects are available at: `https://gitlab.example.com/alex-team/marketing`
|
||||||
this subgroup and its projects will be accessed under `https://gitlab.example.com/alex-team/marketing`
|
|
||||||
|
|
||||||
By doing so:
|
## Create a group
|
||||||
|
|
||||||
- Any team member mentions Alex with `@alex`
|
NOTE:
|
||||||
- Alex mentions everyone from their team with `@alex-team`
|
For a list of words that can not be used as group names, see
|
||||||
- Alex mentions only the marketing team with `@alex-team/marketing`
|
[reserved names](../reserved_names.md).
|
||||||
|
|
||||||
## Issues and merge requests within a group
|
To create a new group, either:
|
||||||
|
|
||||||
Issues and merge requests are part of projects. For a given group, you can view all of the
|
|
||||||
[issues](../project/issues/index.md#issues-list) and [merge requests](../project/merge_requests/reviewing_and_managing_merge_requests.md#view-merge-requests-for-all-projects-in-a-group) across all projects in that group,
|
|
||||||
together in a single list view.
|
|
||||||
|
|
||||||
### Bulk editing issues and merge requests
|
|
||||||
|
|
||||||
For details, see [bulk editing issues and merge requests](../group/bulk_editing/index.md).
|
|
||||||
|
|
||||||
## Create a new group
|
|
||||||
|
|
||||||
> For a list of words that are not allowed to be used as group names see the
|
|
||||||
> [reserved names](../reserved_names.md).
|
|
||||||
|
|
||||||
To create a new Group, either:
|
|
||||||
|
|
||||||
- In the top menu, click **Groups** and then **Your Groups**, and click the green button **New group**.
|
- In the top menu, click **Groups** and then **Your Groups**, and click the green button **New group**.
|
||||||
|
|
||||||
|
|
@ -166,7 +130,7 @@ If you change your mind before your request is approved, just click the
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Changing the owner of a group
|
## Change the owner of a group
|
||||||
|
|
||||||
Ownership of a group means at least one of its members has
|
Ownership of a group means at least one of its members has
|
||||||
[Owner permission](../permissions.md#group-members-permissions). Groups must have at
|
[Owner permission](../permissions.md#group-members-permissions). Groups must have at
|
||||||
|
|
@ -266,6 +230,18 @@ You can sort members by **Account**, **Access granted**, **Max role**, or **Last
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Mention a group in an issue or merge request
|
||||||
|
|
||||||
|
When you mention a group in a comment, every member of the group gets a to-do item
|
||||||
|
added to their To-do list.
|
||||||
|
|
||||||
|
1. Open the MR or issue.
|
||||||
|
1. In a comment, type `@` followed by the user, group, or subgroup namespace.
|
||||||
|
For example, `@alex`, `@alex-team`, or `@alex-team/marketing`.
|
||||||
|
1. Select **Comment**.
|
||||||
|
|
||||||
|
A to-do item is created for all the group and subgroup members.
|
||||||
|
|
||||||
## Changing the default branch protection of a group
|
## Changing the default branch protection of a group
|
||||||
|
|
||||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7583) in GitLab 12.9.
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7583) in GitLab 12.9.
|
||||||
|
|
@ -520,7 +496,7 @@ the group's dashboard, and clicking **Settings**.
|
||||||
### General settings
|
### General settings
|
||||||
|
|
||||||
In addition to editing any settings you previously
|
In addition to editing any settings you previously
|
||||||
set when [creating the group](#create-a-new-group), you can also
|
set when [creating the group](#create-a-group), you can also
|
||||||
access further configurations for your group.
|
access further configurations for your group.
|
||||||
|
|
||||||
#### Changing a group's path
|
#### Changing a group's path
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ If a default Storage Class doesn't already exist and is desired, follow Amazon's
|
||||||
to create one.
|
to create one.
|
||||||
|
|
||||||
Alternatively, disable PostgreSQL by setting the project variable
|
Alternatively, disable PostgreSQL by setting the project variable
|
||||||
[`POSTGRES_ENABLED`](../../../topics/autodevops/customize.md#environment-variables) to `false`.
|
[`POSTGRES_ENABLED`](../../../topics/autodevops/customize.md#cicd-variables) to `false`.
|
||||||
|
|
||||||
### Deploy the app to EKS
|
### Deploy the app to EKS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ applications through GMAv2 exclusively when using Container Network Security.
|
||||||
The following steps are recommended to install and use Container Host Security through GitLab:
|
The following steps are recommended to install and use Container Host Security through GitLab:
|
||||||
|
|
||||||
1. [Install at least one runner and connect it to GitLab](https://docs.gitlab.com/runner/).
|
1. [Install at least one runner and connect it to GitLab](https://docs.gitlab.com/runner/).
|
||||||
1. [Create a group](../../../../group/#create-a-new-group).
|
1. [Create a group](../../../../group/#create-a-group).
|
||||||
1. [Connect a Kubernetes cluster to the group](../../add_remove_clusters.md).
|
1. [Connect a Kubernetes cluster to the group](../../add_remove_clusters.md).
|
||||||
1. [Create a cluster management project and associate it with the Kubernetes cluster](../../../../clusters/management_project.md).
|
1. [Create a cluster management project and associate it with the Kubernetes cluster](../../../../clusters/management_project.md).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ applications through GMAv2 exclusively when using Container Network Security.
|
||||||
The following steps are recommended to install and use Container Network Security through GitLab:
|
The following steps are recommended to install and use Container Network Security through GitLab:
|
||||||
|
|
||||||
1. [Install at least one runner and connect it to GitLab](https://docs.gitlab.com/runner/).
|
1. [Install at least one runner and connect it to GitLab](https://docs.gitlab.com/runner/).
|
||||||
1. [Create a group](../../../../group/#create-a-new-group).
|
1. [Create a group](../../../../group/#create-a-group).
|
||||||
1. [Connect a Kubernetes cluster to the group](../../add_remove_clusters.md).
|
1. [Connect a Kubernetes cluster to the group](../../add_remove_clusters.md).
|
||||||
1. [Create a cluster management project and associate it with the Kubernetes cluster](../../../../clusters/management_project.md).
|
1. [Create a cluster management project and associate it with the Kubernetes cluster](../../../../clusters/management_project.md).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -122,13 +122,15 @@ Requesting a code review is an important part of contributing code. However, dec
|
||||||
your code and asking for a review are no easy tasks. Using the "assignee" field for both authors and
|
your code and asking for a review are no easy tasks. Using the "assignee" field for both authors and
|
||||||
reviewers makes it hard for others to determine who's doing what on a merge request.
|
reviewers makes it hard for others to determine who's doing what on a merge request.
|
||||||
|
|
||||||
GitLab Merge Request Reviewers easily allow authors to request a review as well as see the status of the
|
GitLab Merge Request Reviewers enable you to request a review of your work, and
|
||||||
review. By selecting one or more users from the **Reviewers** field in the merge request's right-hand
|
see the status of the review. Reviewers help distinguish the roles of the users
|
||||||
sidebar, the assigned reviewers will receive a notification of the request to review the merge request.
|
involved in the merge request. In comparison to an **Assignee**, who is directly
|
||||||
|
responsible for creating or merging a merge request, a **Reviewer** is a team member
|
||||||
|
who may only be involved in one aspect of the merge request, such as a peer review.
|
||||||
|
|
||||||
This makes it easy to determine the relevant roles for the users involved in the merge request, as well as formally requesting a review from a peer.
|
To request a review of a merge request, expand the **Reviewers** select box in
|
||||||
|
the right-hand sidebar. Search for the users you want to request a review from.
|
||||||
To request it, open the **Reviewers** drop-down box to search for the user you wish to get a review from.
|
When selected, GitLab creates a [to-do list item](../../todos.md) for each reviewer.
|
||||||
|
|
||||||
#### Approval Rule information for Reviewers **(PREMIUM)**
|
#### Approval Rule information for Reviewers **(PREMIUM)**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -138,14 +138,14 @@ to push or merge code to any branches.
|
||||||
|
|
||||||
To enable this access:
|
To enable this access:
|
||||||
|
|
||||||
1. [Create a new group](../../group/index.md#create-a-new-group), and then
|
1. [Create a new group](../../group/index.md#create-a-group), and then
|
||||||
[add the user to the group](../../group/index.md#add-users-to-a-group),
|
[add the user to the group](../../group/index.md#add-users-to-a-group),
|
||||||
ensuring you select the Reporter role for the user.
|
ensuring you select the Reporter role for the user.
|
||||||
1. [Share the project with your group](../members/share_project_with_groups.md#sharing-a-project-with-a-group-of-users),
|
1. [Share the project with your group](../members/share_project_with_groups.md#sharing-a-project-with-a-group-of-users),
|
||||||
based on the Reporter role.
|
based on the Reporter role.
|
||||||
1. Navigate to your project's **Settings > General**, and in the
|
1. Navigate to your project's **Settings > General**, and in the
|
||||||
**Merge request approvals** section, click **Expand**.
|
**Merge request approvals** section, click **Expand**.
|
||||||
1. [Add the group](../../group/index.md#create-a-new-group) to the permission list
|
1. [Add the group](../../group/index.md#create-a-group) to the permission list
|
||||||
for the protected branch.
|
for the protected branch.
|
||||||
|
|
||||||

|

|
||||||
|
|
|
||||||
|
|
@ -20655,6 +20655,9 @@ msgstr ""
|
||||||
msgid "OnCallSchedules|Create on-call schedules in GitLab"
|
msgid "OnCallSchedules|Create on-call schedules in GitLab"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "OnCallSchedules|Currently no rotation."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "OnCallSchedules|Delete rotation"
|
msgid "OnCallSchedules|Delete rotation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,10 @@ module QA
|
||||||
element :focus_mode_button
|
element :focus_mode_button
|
||||||
end
|
end
|
||||||
|
|
||||||
|
view 'app/assets/javascripts/boards/components/config_toggle.vue' do
|
||||||
|
element :boards_config_button
|
||||||
|
end
|
||||||
|
|
||||||
# The `focused_board` method does not use `find_element` with an element defined
|
# The `focused_board` method does not use `find_element` with an element defined
|
||||||
# with the attribute `data-qa-selector` since such element is not unique when the
|
# with the attribute `data-qa-selector` since such element is not unique when the
|
||||||
# `is-focused` class is not set, and it was not possible to find a better solution.
|
# `is-focused` class is not set, and it was not possible to find a better solution.
|
||||||
|
|
@ -82,6 +86,10 @@ module QA
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def click_boards_config_button
|
||||||
|
click_element(:boards_config_button)
|
||||||
|
end
|
||||||
|
|
||||||
def click_boards_dropdown_button
|
def click_boards_dropdown_button
|
||||||
# The dropdown button comes from the `GlDropdown` component of `@gitlab/ui`,
|
# The dropdown button comes from the `GlDropdown` component of `@gitlab/ui`,
|
||||||
# so it wasn't possible to add a `data-qa-selector` to it.
|
# so it wasn't possible to add a `data-qa-selector` to it.
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ Migration/UpdateLargeTable:
|
||||||
- :project_ci_cd_settings
|
- :project_ci_cd_settings
|
||||||
- :project_settings
|
- :project_settings
|
||||||
- :project_features
|
- :project_features
|
||||||
|
- :protected_branches
|
||||||
- :push_event_payloads
|
- :push_event_payloads
|
||||||
- :resource_label_events
|
- :resource_label_events
|
||||||
- :routes
|
- :routes
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
RSpec.describe Mutations::Boards::Update do
|
||||||
|
let_it_be(:project) { create(:project) }
|
||||||
|
let_it_be(:user) { create(:user) }
|
||||||
|
let_it_be(:board) { create(:board, project: project) }
|
||||||
|
|
||||||
|
let(:mutation) { described_class.new(object: nil, context: { current_user: user }, field: nil) }
|
||||||
|
let(:mutated_board) { subject[:board] }
|
||||||
|
|
||||||
|
let(:mutation_params) do
|
||||||
|
{
|
||||||
|
id: board.to_global_id,
|
||||||
|
hide_backlog_list: true,
|
||||||
|
hide_closed_list: false
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { mutation.resolve(**mutation_params) }
|
||||||
|
|
||||||
|
specify { expect(described_class).to require_graphql_authorizations(:admin_board) }
|
||||||
|
|
||||||
|
describe '#resolve' do
|
||||||
|
context 'when the user cannot admin the board' do
|
||||||
|
it 'raises an error' do
|
||||||
|
expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with invalid params' do
|
||||||
|
it 'raises an error' do
|
||||||
|
mutation_params[:id] = project.to_global_id
|
||||||
|
|
||||||
|
expect { subject }.to raise_error(::GraphQL::CoercionError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user can update board' do
|
||||||
|
before do
|
||||||
|
board.resource_parent.add_reporter(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'updates board with correct values' do
|
||||||
|
expected_attributes = {
|
||||||
|
hide_backlog_list: true,
|
||||||
|
hide_closed_list: false
|
||||||
|
}
|
||||||
|
|
||||||
|
subject
|
||||||
|
|
||||||
|
expect(board.reload).to have_attributes(expected_attributes)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -17,6 +17,19 @@ RSpec.describe List do
|
||||||
it { is_expected.to validate_presence_of(:list_type) }
|
it { is_expected.to validate_presence_of(:list_type) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.without_types' do
|
||||||
|
it 'exclude lists of given types' do
|
||||||
|
board = create(:list, list_type: :label).board
|
||||||
|
# closed list is created by default
|
||||||
|
backlog_list = create(:list, list_type: :backlog, board: board)
|
||||||
|
|
||||||
|
exclude_type = [described_class.list_types[:label], described_class.list_types[:closed]]
|
||||||
|
|
||||||
|
lists = described_class.without_types(exclude_type)
|
||||||
|
expect(lists.where(board: board)).to match_array([backlog_list])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#update_preferences_for' do
|
describe '#update_preferences_for' do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:list) { create(:list) }
|
let(:list) { create(:list) }
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,26 @@ RSpec.describe Boards::Lists::ListService do
|
||||||
describe '#execute' do
|
describe '#execute' do
|
||||||
let(:service) { described_class.new(parent, user) }
|
let(:service) { described_class.new(parent, user) }
|
||||||
|
|
||||||
|
shared_examples 'hidden lists' do
|
||||||
|
let!(:list) { create(:list, board: board, label: label) }
|
||||||
|
|
||||||
|
context 'when hide_backlog_list is true' do
|
||||||
|
it 'hides backlog list' do
|
||||||
|
board.update!(hide_backlog_list: true)
|
||||||
|
|
||||||
|
expect(service.execute(board)).to match_array([board.closed_list, list])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when hide_closed_list is true' do
|
||||||
|
it 'hides closed list' do
|
||||||
|
board.update!(hide_closed_list: true)
|
||||||
|
|
||||||
|
expect(service.execute(board)).to match_array([board.backlog_list, list])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when board parent is a project' do
|
context 'when board parent is a project' do
|
||||||
let(:project) { create(:project) }
|
let(:project) { create(:project) }
|
||||||
let(:board) { create(:board, project: project) }
|
let(:board) { create(:board, project: project) }
|
||||||
|
|
@ -16,6 +36,7 @@ RSpec.describe Boards::Lists::ListService do
|
||||||
let(:parent) { project }
|
let(:parent) { project }
|
||||||
|
|
||||||
it_behaves_like 'lists list service'
|
it_behaves_like 'lists list service'
|
||||||
|
it_behaves_like 'hidden lists'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when board parent is a group' do
|
context 'when board parent is a group' do
|
||||||
|
|
@ -26,6 +47,7 @@ RSpec.describe Boards::Lists::ListService do
|
||||||
let(:parent) { group }
|
let(:parent) { group }
|
||||||
|
|
||||||
it_behaves_like 'lists list service'
|
it_behaves_like 'lists list service'
|
||||||
|
it_behaves_like 'hidden lists'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue