diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-21 14:21:10 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-21 14:21:10 +0000 |
commit | cb0d23c455b73486fd1015f8ca9479b5b7e3585d (patch) | |
tree | d7dc129a407fd74266d2dc561bebf24665197c2f /doc/user/project | |
parent | c3e911be175c0aabfea1eb030f9e0ef23f5f3887 (diff) | |
download | gitlab-ce-cb0d23c455b73486fd1015f8ca9479b5b7e3585d.tar.gz |
Add latest changes from gitlab-org/gitlab@12-7-stable-ee
Diffstat (limited to 'doc/user/project')
107 files changed, 949 insertions, 528 deletions
diff --git a/doc/user/project/clusters/add_remove_clusters.md b/doc/user/project/clusters/add_remove_clusters.md index 6a0377f118d..a77584c0485 100644 --- a/doc/user/project/clusters/add_remove_clusters.md +++ b/doc/user/project/clusters/add_remove_clusters.md @@ -10,6 +10,74 @@ Every new Google Cloud Platform (GCP) account receives [$300 in credit upon sign and in partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab's Google Kubernetes Engine Integration. All you have to do is [follow this link](https://cloud.google.com/partners/partnercredit/?pcn_code=0014M00001h35gDQAQ#contact-form) and apply for credit. +## Before you begin + +Before [adding a Kubernetes cluster](#add-new-cluster) using GitLab, you need: + +- GitLab itself. Either: + - A GitLab.com [account](https://about.gitlab.com/pricing/#gitlab-com). + - A [self-managed installation](https://about.gitlab.com/pricing/#self-managed) with GitLab version + 12.5 or later. This will ensure the GitLab UI can be used for cluster creation. +- The following GitLab access: + - [Maintainer access to a project](../../permissions.md#project-members-permissions) for a + project-level cluster. + - [Maintainer access to a group](../../permissions.md#group-members-permissions) for a + group-level cluster. + - [Admin Area access](../../admin_area/index.md) for a self-managed instance-level + cluster. **(CORE ONLY)** + +### GKE requirements + +Before creating your first cluster on Google GKE with GitLab's integration, make sure the following +requirements are met: + +- A [billing account](https://cloud.google.com/billing/docs/how-to/manage-billing-account) + set up with access. +- The Kubernetes Engine API and related service are enabled. It should work immediately but may + take up to 10 minutes after you create a project. For more information see the + ["Before you begin" section of the Kubernetes Engine docs](https://cloud.google.com/kubernetes-engine/docs/quickstart#before-you-begin). + +### EKS requirements + +Before creating your first cluster on Amazon EKS with GitLab's integration, make sure the following +requirements are met: + +- An [Amazon Web Services](https://aws.amazon.com/) account is set up and you are able to log in. +- You have permissions to manage IAM resources. +- If you want to use an [existing EKS cluster](#existing-eks-cluster): + - An Amazon EKS cluster with worker nodes properly configured. + - `kubectl` [installed and configured](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html#get-started-kubectl) + for access to the EKS cluster. + +#### Additional requirements for self-managed instances **(CORE ONLY)** + +If you are using a self-managed GitLab instance, GitLab must first be configured with a set of +Amazon credentials. These credentials will be used to assume an Amazon IAM role provided by the user +creating the cluster. Create an IAM user and ensure it has permissions to assume the role(s) that +your users will use to create EKS clusters. + +For example, the following policy document allows assuming a role whose name starts with +`gitlab-eks-` in account `123456789012`: + +```json +{ + "Version": "2012-10-17", + "Statement": { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Resource": "arn:aws:iam::123456789012:role/gitlab-eks-*" + } +} +``` + +Generate an access key for the IAM user, and configure GitLab with the credentials: + +1. Navigate to **Admin Area > Settings > Integrations** and expand the **Amazon EKS** section. +1. Check **Enable Amazon EKS integration**. +1. Enter the account ID and access key credentials into the respective + `Account ID`, `Access key ID` and `Secret access key` fields. +1. Click **Save changes**. + ## Access controls When creating a cluster in GitLab, you will be asked if you would like to create either: @@ -116,57 +184,39 @@ New clusters can be added using GitLab for: - Google Kubernetes Engine. - Amazon Elastic Kubernetes Service. -### GKE cluster - -GitLab supports: - -- Creating a new GKE cluster using the GitLab UI. -- Providing credentials to add an [existing Kubernetes cluster](#add-existing-cluster). - -Starting from [GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/25925), all the GKE clusters provisioned by GitLab are [VPC-native](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips). +### New GKE cluster -NOTE: **Note:** -The [Google authentication integration](../../../integration/google.md) must -be enabled in GitLab at the instance level. If that's not the case, ask your -GitLab administrator to enable it. On GitLab.com, this is enabled. - -#### GKE Requirements +Starting from [GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/25925), all the GKE clusters +provisioned by GitLab are [VPC-native](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips). -Before creating your first cluster on Google Kubernetes Engine with GitLab's -integration, make sure the following requirements are met: - -- A [billing account](https://cloud.google.com/billing/docs/how-to/manage-billing-account) - is set up and you have permissions to access it. -- The Kubernetes Engine API and related service are enabled. It should work immediately but may take up to 10 minutes after you create a project. For more information see the - ["Before you begin" section of the Kubernetes Engine docs](https://cloud.google.com/kubernetes-engine/docs/quickstart#before-you-begin). +#### Important notes -Also note the following: +Note the following: +- The [Google authentication integration](../../../integration/google.md) must be enabled in GitLab + at the instance level. If that's not the case, ask your GitLab administrator to enable it. On + GitLab.com, this is enabled. - Starting from [GitLab 12.1](https://gitlab.com/gitlab-org/gitlab-foss/issues/55902), all GKE clusters created by GitLab are RBAC-enabled. Take a look at the [RBAC section](#rbac-cluster-resources) for more information. - Starting from [GitLab 12.5](https://gitlab.com/gitlab-org/gitlab/merge_requests/18341), the cluster's pod address IP range will be set to /16 instead of the regular /14. /16 is a CIDR notation. - -NOTE: **Note:** -GitLab requires basic authentication enabled and a client certificate issued for the cluster in -order to setup an [initial service account](#access-controls). Starting from [GitLab -11.10](https://gitlab.com/gitlab-org/gitlab-foss/issues/58208), the cluster creation process will -explicitly request that basic authentication and client certificate is enabled. +- GitLab requires basic authentication enabled and a client certificate issued for the cluster to + set up an [initial service account](#access-controls). Starting from [GitLab + 11.10](https://gitlab.com/gitlab-org/gitlab-foss/issues/58208), the cluster creation process will + explicitly request that basic authentication and client certificate is enabled. #### Creating the cluster on GKE -If all of the above requirements are met, you can proceed to create and add a -new Kubernetes cluster to your project: - -1. Navigate to your project's **Operations > Kubernetes** page. - - NOTE: **Note:** - You need Maintainer [permissions](../../permissions.md) and above to access the Kubernetes page. +To create and add a new Kubernetes cluster to your project, group, or instance: +1. Navigate to your: + - Project's **Operations > Kubernetes** page, for a project-level cluster. + - Group's **Kubernetes** page, for a group-level cluster. + - **Admin Area > Kubernetes** page, for an instance-level cluster. 1. Click **Add Kubernetes cluster**. -1. Click **Create with Google Kubernetes Engine**. +1. Under the **Create new cluster** tab, click **Google GKE**. 1. Connect your Google account if you haven't done already by clicking the **Sign in with Google** button. 1. Choose your cluster's settings: @@ -198,64 +248,19 @@ separately after the cluster has been created. This means that Cloud Run (Knative), Istio, and HTTP Load Balancing will be enabled on the cluster at create time and cannot be [installed or uninstalled](../../clusters/applications.md) separately. -### EKS Cluster - -GitLab supports: - -- Creating a new EKS cluster using the GitLab UI - ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/22392) in GitLab 12.5). -- Providing credentials to add an [existing Kubernetes cluster](#add-existing-cluster). - -#### EKS Requirements - -Before creating your first cluster on Amazon EKS with GitLab's integration, -make sure the following requirements are met: - -- An [Amazon Web Services](https://aws.amazon.com/) account is set up and you are able to log in. -- You have permissions to manage IAM resources. - -##### Additional requirements for self-managed instances - -If you are using a self-managed GitLab instance, GitLab must first -be configured with a set of Amazon credentials. These credentials -will be used to assume an Amazon IAM role provided by the user -creating the cluster. Create an IAM user and ensure it has permissions -to assume the role(s) that your users will use to create EKS clusters. - -For example, the following policy document allows assuming a role whose name starts with -`gitlab-eks-` in account `123456789012`: - -```json -{ - "Version": "2012-10-17", - "Statement": { - "Effect": "Allow", - "Action": "sts:AssumeRole", - "Resource": "arn:aws:iam::123456789012:role/gitlab-eks-*" - } -} -``` - -Generate an access key for the IAM user, and configure GitLab with the credentials: - -1. Navigate to **Admin Area > Settings > Integrations** and expand the **Amazon EKS** section. -1. Check **Enable Amazon EKS integration**. -1. Enter the account ID and access key credentials into the respective - `Account ID`, `Access key ID` and `Secret access key` fields. -1. Click **Save changes**. - -#### Creating the cluster on EKS - -If all of the above requirements are met, you can proceed to create and add a -new Kubernetes cluster to your project: +### New EKS cluster -1. Navigate to your project's **Operations > Kubernetes** page. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/22392) in GitLab 12.5. - NOTE: **Note:** - You need Maintainer [permissions](../../permissions.md) and above to access the Kubernetes page. +To create and add a new Kubernetes cluster to your project, group, or instance: +1. Navigate to your: + - Project's **Operations > Kubernetes** page, for a project-level cluster. + - Group's **Kubernetes** page, for a group-level cluster. + - **Admin Area > Kubernetes** page, for an instance-level cluster. 1. Click **Add Kubernetes cluster**. -1. Click **Amazon EKS**. You will be provided with an `Account ID` and `External ID` to use in the next step. +1. Under the **Create new cluster** tab, click **Amazon EKS**. You will be provided with an + `Account ID` and `External ID` to use in the next step. 1. In the [IAM Management Console](https://console.aws.amazon.com/iam/home), create an IAM role: 1. From the left panel, select **Roles**. 1. Click **Create role**. @@ -331,8 +336,9 @@ new Kubernetes cluster to your project: - **Kubernetes cluster name** - The name you wish to give the cluster. - **Environment scope** - The [associated environment](index.md#setting-the-environment-scope-premium) to this cluster. - **Kubernetes version** - The Kubernetes version to use. Currently the only version supported is 1.14. - - **Role name** - Select the [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) - to allow Amazon EKS and the Kubernetes control plane to manage AWS resources on your behalf. + - **Role name** - Select the [IAM role](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) + to allow Amazon EKS and the Kubernetes control plane to manage AWS resources on your behalf. This IAM role is separate + to the IAM role created above, you will need to create it if it does not yet exist. - **Region** - The [region](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) in which the cluster will be created. - **Key pair name** - Select the [key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) @@ -356,24 +362,23 @@ to install some [pre-defined applications](index.md#installing-applications). If you have either of the following types of clusters already, you can add them to a project: -- [Google Kubernetes Engine cluster](#add-existing-gke-cluster). -- [Amazon Elastic Kubernetes Service](#add-existing-eks-cluster). +- [Google Kubernetes Engine cluster](#existing-gke-cluster). +- [Amazon Elastic Kubernetes Service](#existing-eks-cluster). NOTE: **Note:** Kubernetes integration is not supported for arm64 clusters. See the issue [Helm Tiller fails to install on arm64 cluster](https://gitlab.com/gitlab-org/gitlab-foss/issues/64044) for details. -### Add existing GKE cluster - -To add an existing Kubernetes cluster to your project: - -1. Navigate to your project's **Operations > Kubernetes** page. +### Existing GKE cluster - NOTE: **Note:** - You need Maintainer [permissions](../../permissions.md) and above to access the Kubernetes page. +To add an existing GKE cluster to your project, group, or instance: +1. Navigate to your: + - Project's **Operations > Kubernetes** page, for a project-level cluster. + - Group's **Kubernetes** page, for a group-level cluster. + - **Admin Area > Kubernetes** page, for an instance-level cluster. 1. Click **Add Kubernetes cluster**. -1. Click **Add an existing Kubernetes cluster** and fill in the details: +1. Click the **Add existing cluster** tab and fill in the details: - **Kubernetes cluster name** (required) - The name you wish to give the cluster. - **Environment scope** (required) - The [associated environment](index.md#setting-the-environment-scope-premium) to this cluster. @@ -389,7 +394,7 @@ To add an existing Kubernetes cluster to your project: ``` - **CA certificate** (required) - A valid Kubernetes certificate is needed to authenticate to the cluster. We will use the certificate created by default. - - List the secrets with `kubectl get secrets`, and one should named similar to + - List the secrets with `kubectl get secrets`, and one should be named similar to `default-token-xxxxx`. Copy that token name for use below. - Get the certificate by running this command: @@ -508,136 +513,110 @@ To add an existing Kubernetes cluster to your project: After a couple of minutes, your cluster will be ready to go. You can now proceed to install some [pre-defined applications](index.md#installing-applications). -### Add existing EKS cluster - -In this section, we will show how to integrate an [Amazon EKS](https://aws.amazon.com/eks/) cluster with GitLab and begin -deploying applications. - -#### Requirements - -To integrate with with EKS, you will need: - -- An account on GitLab, like [GitLab.com](https://gitlab.com). -- An Amazon EKS cluster (with worker nodes properly configured). -- `kubectl` [installed and configured for access to the EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html#get-started-kubectl). - -If you don't have an Amazon EKS cluster, one can be created by following the -[EKS getting started guide](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html). - -#### Configuring and connecting the EKS cluster - -From the left side bar, hover over **Operations > Kubernetes > Add Kubernetes cluster**, -then click **Add an existing Kubernetes cluster**. - -A few details from the EKS cluster will be required to connect it to GitLab: - -1. **Retrieve the certificate**: A valid Kubernetes certificate is needed to - authenticate to the EKS cluster. We will use the certificate created by default. - Open a shell and use `kubectl` to retrieve it: - - - List the secrets with `kubectl get secrets`, and one should named similar to - `default-token-xxxxx`. Copy that token name for use below. - - Get the certificate with: - - ```sh - kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 --decode - ``` - -1. **Create admin token**: A `cluster-admin` token is required to install and - manage Helm Tiller. GitLab establishes mutual SSL auth with Helm Tiller - and creates limited service accounts for each application. To create the - token we will create an admin service account as follows: - - 1. Create a file called `eks-admin-service-account.yaml` with contents: - - ```yaml - apiVersion: v1 - kind: ServiceAccount - metadata: - name: eks-admin - namespace: kube-system - ``` - - 1. Apply the service account to your cluster: - - ```bash - kubectl apply -f eks-admin-service-account.yaml - ``` - - Output: - - ```bash - serviceaccount "eks-admin" created - ``` - - 1. Create a file called `eks-admin-cluster-role-binding.yaml` with contents: - - ```yaml - apiVersion: rbac.authorization.k8s.io/v1beta1 - kind: ClusterRoleBinding - metadata: - name: eks-admin - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin - subjects: - - kind: ServiceAccount - name: eks-admin - namespace: kube-system - ``` - - 1. Apply the cluster role binding to your cluster: - - ```bash - kubectl apply -f eks-admin-cluster-role-binding.yaml - ``` - - Output: - - ```bash - clusterrolebinding "eks-admin" created - ``` - - 1. Retrieve the token for the `eks-admin` service account: - - ```bash - kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}') - ``` - - Copy the `<authentication_token>` value from the output: - - ```yaml - Name: eks-admin-token-b5zv4 - Namespace: kube-system - Labels: <none> - Annotations: kubernetes.io/service-account.name=eks-admin +### Existing EKS cluster + +To add an existing EKS cluster to your project, group, or instance: + +1. Perform the following steps on the EKS cluster: + 1. Retrieve the certificate. A valid Kubernetes certificate is needed to authenticate to the + EKS cluster. We will use the certificate created by default. + Open a shell and use `kubectl` to retrieve it: + + 1. List the secrets with `kubectl get secrets`, and one should named similar to + `default-token-xxxxx`. Copy that token name for use below. + 1. Get the certificate with: + + ```sh + kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 --decode + ``` + + 1. Create admin token. A `cluster-admin` token is required to install and manage Helm Tiller. + GitLab establishes mutual SSL authentication with Helm Tiller and creates limited service + accounts for each application. To create the token we will create an admin service account as + follows: + + 1. Create a file called `eks-admin-service-account.yaml` with contents: + + ```yaml + apiVersion: v1 + kind: ServiceAccount + metadata: + name: eks-admin + namespace: kube-system + ``` + + 1. Apply the service account to your cluster: + + ```shell + $ kubectl apply -f eks-admin-service-account.yaml + serviceaccount "eks-admin" created + ``` + + 1. Create a file called `eks-admin-cluster-role-binding.yaml` with contents: + + ```yaml + apiVersion: rbac.authorization.k8s.io/v1beta1 + kind: ClusterRoleBinding + metadata: + name: eks-admin + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin + subjects: + - kind: ServiceAccount + name: eks-admin + namespace: kube-system + ``` + + 1. Apply the cluster role binding to your cluster: + + ```shell + $ kubectl apply -f eks-admin-cluster-role-binding.yaml + clusterrolebinding "eks-admin" created + ``` + + 1. Retrieve the token for the `eks-admin` service account: + + ```bash + kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}') + ``` + + Copy the `<authentication_token>` value from the output: + + ```yaml + Name: eks-admin-token-b5zv4 + Namespace: kube-system + Labels: <none> + Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8 - Type: kubernetes.io/service-account-token - - Data - ==== - ca.crt: 1025 bytes - namespace: 11 bytes - token: <authentication_token> - ``` - -1. The API server endpoint is also required, so GitLab can connect to the cluster. - This is displayed on the AWS EKS console, when viewing the EKS cluster details. - -You now have all the information needed to connect the EKS cluster: - -- Kubernetes cluster name: Provide a name for the cluster to identify it within GitLab. -- Environment scope: Leave this as `*` for now, since we are only connecting a single cluster. -- API URL: Paste in the API server endpoint retrieved above. -- CA Certificate: Paste the certificate data from the earlier step, as-is. -- Paste the admin token value. -- Project namespace: This can be left blank to accept the default namespace, based on the project name. - -![Add Cluster](img/add_cluster.png) + Type: kubernetes.io/service-account-token + + Data + ==== + ca.crt: 1025 bytes + namespace: 11 bytes + token: <authentication_token> + ``` + + 1. Locate the the API server endpoint so GitLab can connect to the cluster. This is displayed on + the AWS EKS console, when viewing the EKS cluster details. +1. Navigate to your: + - Project's **Operations > Kubernetes** page, for a project-level cluster. + - Group's **Kubernetes** page, for a group-level cluster. + - **Admin Area > Kubernetes** page, for an instance-level cluster. +1. Click **Add Kubernetes cluster**. +1. Click the **Add existing cluster** tab and fill in the details: + - **Kubernetes cluster name**: A name for the cluster to identify it within GitLab. + - **Environment scope**: Leave this as `*` for now, since we are only connecting a single cluster. + - **API URL**: The API server endpoint retrieved earlier. + - **CA Certificate**: The certificate data from the earlier step, as-is. + - **Service Token**: The admin token value. + - For project-level clusters, **Project namespace prefix**: This can be left blank to accept the + default namespace, based on the project name. +1. Click on **Add Kubernetes cluster**. The cluster is now connected to GitLab. -Click on **Add Kubernetes cluster**, the cluster is now connected to GitLab. At this point, [Kubernetes deployment variables](index.md#deployment-variables) will automatically be available during CI/CD jobs, making it easy to interact with the cluster. @@ -719,16 +698,19 @@ To disable the Kubernetes cluster integration, follow the same procedure. ## Removing integration -To remove the Kubernetes cluster integration from your project, simply click the -**Remove integration** button. You will then be able to follow the procedure -and add a Kubernetes cluster again. +To remove the Kubernetes cluster integration from your project, either: + +- Select **Remove integration**, to remove only the Kubernetes integration. +- [From GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/26815), select + **Remove integration and resources**, to also remove all related GitLab cluster resources (for + example, namespaces, roles, and bindings) when removing the integration. When removing the cluster integration, note: - You need Maintainer [permissions](../../permissions.md) and above to remove a Kubernetes cluster integration. - When you remove a cluster, you only remove its relationship to GitLab, not the cluster itself. To - remove the cluster, you can do so by visiting the GKE dashboard or using `kubectl`. + remove the cluster, you can do so by visiting the GKE or EKS dashboard, or using `kubectl`. ## Learn more diff --git a/doc/user/project/clusters/eks_and_gitlab/index.md b/doc/user/project/clusters/eks_and_gitlab/index.md index fda8cd6340e..9bb8f6cb83c 100644 --- a/doc/user/project/clusters/eks_and_gitlab/index.md +++ b/doc/user/project/clusters/eks_and_gitlab/index.md @@ -1,5 +1,5 @@ --- -redirect_to: '../add_remove_clusters.md#add-existing-eks-cluster' +redirect_to: '../add_remove_clusters.md#existing-eks-cluster' --- -This document was moved to [another location](../add_remove_clusters.md#add-existing-eks-cluster). +This document was moved to [another location](../add_remove_clusters.md#existing-eks-cluster). diff --git a/doc/user/project/clusters/img/add_cluster.png b/doc/user/project/clusters/img/add_cluster.png Binary files differdeleted file mode 100644 index 94ec83f1514..00000000000 --- a/doc/user/project/clusters/img/add_cluster.png +++ /dev/null diff --git a/doc/user/project/clusters/index.md b/doc/user/project/clusters/index.md index 6d863a8b888..895cc6c4b57 100644 --- a/doc/user/project/clusters/index.md +++ b/doc/user/project/clusters/index.md @@ -30,9 +30,6 @@ Using the GitLab project Kubernetes integration, you can: - View [Pod logs](#pod-logs-ultimate). **(ULTIMATE)** - Run serverless workloads on [Kubernetes with Knative](serverless/index.md). -See [Adding and removing Kubernetes clusters](add_remove_clusters.md) for details on how to -set up integrations. - ### Deploy Boards **(PREMIUM)** GitLab's Deploy Boards offer a consolidated view of the current health and @@ -79,10 +76,7 @@ Kubernetes clusters can be used without Auto DevOps. ### Web terminals -NOTE: **Note:** -Introduced in GitLab 8.15. You must be the project owner or have `maintainer` permissions -to use terminals. Support is limited to the first container in the -first pod of your environment. +> Introduced in GitLab 8.15. When enabled, the Kubernetes service adds [web terminal](../../../ci/environments.md#web-terminals) support to your [environments](../../../ci/environments.md). This is based on the `exec` functionality found in @@ -97,6 +91,14 @@ pods are annotated with: `$CI_ENVIRONMENT_SLUG` and `$CI_PROJECT_PATH_SLUG` are the values of the CI variables. +You must be the project owner or have `maintainer` permissions to use terminals. Support is limited +to the first container in the first pod of your environment. + +## Adding and removing clusters + +See [Adding and removing Kubernetes clusters](add_remove_clusters.md) for details on how to +set up integrations with Google Cloud Platform (GCP) and Amazon Elastic Kubernetes Service (EKS). + ## Cluster configuration After [adding a Kubernetes cluster](add_remove_clusters.md) to GitLab, read this section that covers @@ -115,8 +117,8 @@ applications running on the cluster. ### GitLab-managed clusters -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/22011) in GitLab 11.5. -> Became [optional](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/26565) in GitLab 11.11. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/22011) in GitLab 11.5. +> - Became [optional](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/26565) in GitLab 11.11. You can choose to allow GitLab to manage your cluster for you. If your cluster is managed by GitLab, resources for your projects will be automatically created. See the diff --git a/doc/user/project/clusters/kubernetes_pod_logs.md b/doc/user/project/clusters/kubernetes_pod_logs.md index 797ddf784cc..7cd5d99ef67 100644 --- a/doc/user/project/clusters/kubernetes_pod_logs.md +++ b/doc/user/project/clusters/kubernetes_pod_logs.md @@ -41,9 +41,37 @@ Logs can be displayed by clicking on a specific pod from [Deploy Boards](../depl 1. On the **Environments** page, you should see the status of the environment's pods with [Deploy Boards](../deploy_boards.md). 1. When mousing over the list of pods, a tooltip will appear with the exact pod name and status. ![Deploy Boards pod list](img/pod_logs_deploy_board.png) -1. Click on the desired pod to bring up the logs view, which will contain the last 500 lines for that pod. - You may switch between the following in this view: - - Pods. - - [From GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/5769), environments. +1. Click on the desired pod to bring up the logs view. - Support for pods with multiple containers is coming [in a future release](https://gitlab.com/gitlab-org/gitlab/issues/6502). +### Logs view + +The logs view will contain the last 500 lines for a pod, and has control to filter via: + +- Pods. +- [From GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/5769), environments. +- [From GitLab 12.7](https://gitlab.com/gitlab-org/gitlab/merge_requests/21656), [full text search](#full-text-search). + +Support for pods with multiple containers is coming [in a future release](https://gitlab.com/gitlab-org/gitlab/issues/13404). + +Support for historical data is coming [in a future release](https://gitlab.com/gitlab-org/gitlab/issues/196191). + +### Full text search + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/21656) in GitLab 12.7. + +When you enable [Elastic Stack](../../clusters/applications.md#elastic-stack) on your cluster, +you can search the content of your logs via a search bar. + +The search is passed on to Elasticsearch using the [simple_query_string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html) +Elasticsearch function, which supports the following operators: + +``` ++ signifies AND operation +| signifies OR operation +- negates a single token +" wraps a number of tokens to signify a phrase for searching +* at the end of a term signifies a prefix query +( and ) signify precedence +~N after a word signifies edit distance (fuzziness) +~N after a phrase signifies slop amount +``` diff --git a/doc/user/project/clusters/serverless/aws.md b/doc/user/project/clusters/serverless/aws.md index 0b74f1e73eb..220ce2593bb 100644 --- a/doc/user/project/clusters/serverless/aws.md +++ b/doc/user/project/clusters/serverless/aws.md @@ -121,7 +121,6 @@ This example code does the following: - Installs the Serverless Framework. - Deploys the serverless function to your AWS account using the AWS credentials defined above. - - Deploys the serverless function to your AWS account using the AWS credentials defined above ### Setting up your AWS credentials with your GitLab account diff --git a/doc/user/project/clusters/serverless/index.md b/doc/user/project/clusters/serverless/index.md index 9aaf046e78b..1dc543c3b83 100644 --- a/doc/user/project/clusters/serverless/index.md +++ b/doc/user/project/clusters/serverless/index.md @@ -43,7 +43,7 @@ To run Knative on GitLab, you will need: clone the sample [Knative Ruby App](https://gitlab.com/knative-examples/knative-ruby-app) to get started. 1. **Kubernetes Cluster:** An RBAC-enabled Kubernetes cluster is required to deploy Knative. - The simplest way to get started is to add a cluster using [GitLab's GKE integration](../add_remove_clusters.md#gke-cluster). + The simplest way to get started is to add a cluster using GitLab's [GKE integration](../add_remove_clusters.md). The set of minimum recommended cluster specifications to run Knative is 3 nodes, 6 vCPUs, and 22.50 GB memory. 1. **Helm Tiller:** Helm is a package manager for Kubernetes and is required to install Knative. diff --git a/doc/user/project/img/code_owners_approval_new_protected_branch_v12_4.png b/doc/user/project/img/code_owners_approval_new_protected_branch_v12_4.png Binary files differindex f813b60dcd9..fc2893aa4d5 100644 --- a/doc/user/project/img/code_owners_approval_new_protected_branch_v12_4.png +++ b/doc/user/project/img/code_owners_approval_new_protected_branch_v12_4.png diff --git a/doc/user/project/img/deploy_boards_landing_page.png b/doc/user/project/img/deploy_boards_landing_page.png Binary files differindex c9621a06860..73b3724d657 100644 --- a/doc/user/project/img/deploy_boards_landing_page.png +++ b/doc/user/project/img/deploy_boards_landing_page.png diff --git a/doc/user/project/img/description_templates_issue_settings.png b/doc/user/project/img/description_templates_issue_settings.png Binary files differindex 53328108835..657b6ae1269 100644 --- a/doc/user/project/img/description_templates_issue_settings.png +++ b/doc/user/project/img/description_templates_issue_settings.png diff --git a/doc/user/project/img/description_templates_merge_request_settings.png b/doc/user/project/img/description_templates_merge_request_settings.png Binary files differindex eda264f7f37..587367bf2fe 100644 --- a/doc/user/project/img/description_templates_merge_request_settings.png +++ b/doc/user/project/img/description_templates_merge_request_settings.png diff --git a/doc/user/project/img/issue_boards_multi_select.png b/doc/user/project/img/issue_boards_multi_select.png Binary files differindex 34ec0c1c58e..eebe06b04ae 100644 --- a/doc/user/project/img/issue_boards_multi_select.png +++ b/doc/user/project/img/issue_boards_multi_select.png diff --git a/doc/user/project/img/protected_branches_list_v12_3.png b/doc/user/project/img/protected_branches_list_v12_3.png Binary files differindex 2353ddd23be..995a294b85c 100644 --- a/doc/user/project/img/protected_branches_list_v12_3.png +++ b/doc/user/project/img/protected_branches_list_v12_3.png diff --git a/doc/user/project/img/protected_branches_page_v12_3.png b/doc/user/project/img/protected_branches_page_v12_3.png Binary files differindex 9a194c85c41..60aa3c4d251 100644 --- a/doc/user/project/img/protected_branches_page_v12_3.png +++ b/doc/user/project/img/protected_branches_page_v12_3.png diff --git a/doc/user/project/img/service_desk_disabled.png b/doc/user/project/img/service_desk_disabled.png Binary files differdeleted file mode 100644 index ba11b508682..00000000000 --- a/doc/user/project/img/service_desk_disabled.png +++ /dev/null diff --git a/doc/user/project/img/service_desk_enabled.png b/doc/user/project/img/service_desk_enabled.png Binary files differindex aee2b53a680..33d51227e5f 100644 --- a/doc/user/project/img/service_desk_enabled.png +++ b/doc/user/project/img/service_desk_enabled.png diff --git a/doc/user/project/img/service_desk_nav_item.png b/doc/user/project/img/service_desk_nav_item.png Binary files differindex 3420e355f67..fdf8fa024c3 100644 --- a/doc/user/project/img/service_desk_nav_item.png +++ b/doc/user/project/img/service_desk_nav_item.png diff --git a/doc/user/project/import/img/bitbucket_import_select_project_v12_3.png b/doc/user/project/import/img/bitbucket_import_select_project_v12_3.png Binary files differindex 1f1febd9068..bbc72a0b4b7 100644 --- a/doc/user/project/import/img/bitbucket_import_select_project_v12_3.png +++ b/doc/user/project/import/img/bitbucket_import_select_project_v12_3.png diff --git a/doc/user/project/import/img/bitbucket_server_import_select_project_v12_3.png b/doc/user/project/import/img/bitbucket_server_import_select_project_v12_3.png Binary files differindex 1c344853cc8..3f94dd83dd6 100644 --- a/doc/user/project/import/img/bitbucket_server_import_select_project_v12_3.png +++ b/doc/user/project/import/img/bitbucket_server_import_select_project_v12_3.png diff --git a/doc/user/project/import/img/gitlab_new_project_page_v12_2.png b/doc/user/project/import/img/gitlab_new_project_page_v12_2.png Binary files differindex e79c27f32c0..ff6e5dbf4a1 100644 --- a/doc/user/project/import/img/gitlab_new_project_page_v12_2.png +++ b/doc/user/project/import/img/gitlab_new_project_page_v12_2.png diff --git a/doc/user/project/import/img/import_projects_from_gitea_importer_v12_3.png b/doc/user/project/import/img/import_projects_from_gitea_importer_v12_3.png Binary files differindex d8ae1a54851..0f99f74871b 100644 --- a/doc/user/project/import/img/import_projects_from_gitea_importer_v12_3.png +++ b/doc/user/project/import/img/import_projects_from_gitea_importer_v12_3.png diff --git a/doc/user/project/import/img/import_projects_from_github_importer_v12_3.png b/doc/user/project/import/img/import_projects_from_github_importer_v12_3.png Binary files differindex 6a53d9e6d1d..3ac03c0ecc5 100644 --- a/doc/user/project/import/img/import_projects_from_github_importer_v12_3.png +++ b/doc/user/project/import/img/import_projects_from_github_importer_v12_3.png diff --git a/doc/user/project/import/img/import_projects_from_repo_url.png b/doc/user/project/import/img/import_projects_from_repo_url.png Binary files differindex 90bcff5d31b..fd3eae98ebf 100644 --- a/doc/user/project/import/img/import_projects_from_repo_url.png +++ b/doc/user/project/import/img/import_projects_from_repo_url.png diff --git a/doc/user/project/import/perforce.md b/doc/user/project/import/perforce.md index a08488a4baf..cbcef7a2fb0 100644 --- a/doc/user/project/import/perforce.md +++ b/doc/user/project/import/perforce.md @@ -19,7 +19,7 @@ Git: said 'You need to stop work on that new feature and fix this security vulnerability' you can do so very easily in Git. 1. Having a complete copy of the project and its history on your local machine - means every transaction is superfast and Git provides that. You can branch/merge + means every transaction is very fast and Git provides that. You can branch/merge and experiment in isolation, then clean up your mess before sharing your new cool stuff with everyone. 1. Git also made code review simple because you could share your changes without diff --git a/doc/user/project/import/phabricator.md b/doc/user/project/import/phabricator.md index 5015c5390de..46438c81d35 100644 --- a/doc/user/project/import/phabricator.md +++ b/doc/user/project/import/phabricator.md @@ -32,4 +32,4 @@ we can gain early feedback before releasing it for everyone. To enable it: Feature.enable(:phabricator_import) ``` -1. Enable Phabricator as an [import source](../../admin_area/settings/visibility_and_access_controls.md#import-sources) in the Admin area. +1. Enable Phabricator as an [import source](../../admin_area/settings/visibility_and_access_controls.md#import-sources) in the Admin Area. diff --git a/doc/user/project/integrations/generic_alerts.md b/doc/user/project/integrations/generic_alerts.md index 62310dd9177..8c509f30c4f 100644 --- a/doc/user/project/integrations/generic_alerts.md +++ b/doc/user/project/integrations/generic_alerts.md @@ -30,7 +30,7 @@ You can customize the payload by sending the following parameters. All fields ar | `start_time` | DateTime | The time of the incident. If none is provided, a timestamp of the issue will be used. | | `service` | String | The affected service. | | `monitoring_tool` | String | The name of the associated monitoring tool. | -| `hosts` | String or Array | One or more hosts, as to where this incident ocurred. | +| `hosts` | String or Array | One or more hosts, as to where this incident occurred. | Example request: diff --git a/doc/user/project/integrations/img/emails_on_push_service.png b/doc/user/project/integrations/img/emails_on_push_service.png Binary files differindex 84e42eca9a2..43cef167369 100644 --- a/doc/user/project/integrations/img/emails_on_push_service.png +++ b/doc/user/project/integrations/img/emails_on_push_service.png diff --git a/doc/user/project/integrations/img/embed_metrics_issue_template.png b/doc/user/project/integrations/img/embed_metrics_issue_template.png Binary files differindex 3c6a243e5c1..ca39a738d5f 100644 --- a/doc/user/project/integrations/img/embed_metrics_issue_template.png +++ b/doc/user/project/integrations/img/embed_metrics_issue_template.png diff --git a/doc/user/project/integrations/img/hangouts_chat_configuration.png b/doc/user/project/integrations/img/hangouts_chat_configuration.png Binary files differindex c40c9b92edb..1104f20ce2f 100644 --- a/doc/user/project/integrations/img/hangouts_chat_configuration.png +++ b/doc/user/project/integrations/img/hangouts_chat_configuration.png diff --git a/doc/user/project/integrations/img/mattermost_configuration.png b/doc/user/project/integrations/img/mattermost_configuration.png Binary files differindex d196b1fc8e4..18c0036846d 100644 --- a/doc/user/project/integrations/img/mattermost_configuration.png +++ b/doc/user/project/integrations/img/mattermost_configuration.png diff --git a/doc/user/project/integrations/img/microsoft_teams_configuration.png b/doc/user/project/integrations/img/microsoft_teams_configuration.png Binary files differindex 8794991f2ec..22ad28e3f73 100644 --- a/doc/user/project/integrations/img/microsoft_teams_configuration.png +++ b/doc/user/project/integrations/img/microsoft_teams_configuration.png diff --git a/doc/user/project/integrations/img/slack_configuration.png b/doc/user/project/integrations/img/slack_configuration.png Binary files differindex 6922c70f253..4d5e6ae7856 100644 --- a/doc/user/project/integrations/img/slack_configuration.png +++ b/doc/user/project/integrations/img/slack_configuration.png diff --git a/doc/user/project/integrations/img/unify_circuit_configuration.png b/doc/user/project/integrations/img/unify_circuit_configuration.png Binary files differindex 285d4f92030..adba065347f 100644 --- a/doc/user/project/integrations/img/unify_circuit_configuration.png +++ b/doc/user/project/integrations/img/unify_circuit_configuration.png diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md index 3b7309ea7e4..17e64f1692d 100644 --- a/doc/user/project/integrations/prometheus.md +++ b/doc/user/project/integrations/prometheus.md @@ -139,7 +139,10 @@ GitLab supports a limited set of [CI variables](../../../ci/variables/README.htm - CI_ENVIRONMENT_SLUG - KUBE_NAMESPACE -To specify a variable in a query, enclose it in quotation marks with curly braces with a leading percent. For example: `"%{ci_environment_slug}"`. +There are 2 methods to specify a variable in a query or dashboard: + +1. Variables can be specified using the [Liquid template format](https://help.shopify.com/en/themes/liquid/basics), for example `{{ci_environment_slug}}` ([added](https://gitlab.com/gitlab-org/gitlab/merge_requests/20793) in GitLab 12.6). +1. You can also enclose it in quotation marks with curly braces with a leading percent, for example `"%{ci_environment_slug}"`. This method is deprecated though and support will be [removed in the next major release](https://gitlab.com/gitlab-org/gitlab/issues/37990). ### Defining custom dashboards per project @@ -152,12 +155,13 @@ NOTE: **Note:** The custom metrics as defined below do not support alerts, unlike [additional metrics](#adding-additional-metrics-premium). -Dashboards have several components: +#### Adding a new dashboard to your project -- Panel groups, which comprise panels. -- Panels, which support one or more metrics. +You can configure a custom dashboard by adding a new `.yml` file into a project's repository. Only `.yml` files present in the projects **default** branch are displayed on the project's **Operations > Metrics** section. + +You may create a new file from scratch or duplicate a GitLab-defined dashboard. -To configure a custom dashboard: +**Add a `.yml` file manually** 1. Create a YAML file with the `.yml` extension under your repository's root directory inside `.gitlab/dashboards/`. For example, create @@ -182,7 +186,7 @@ To configure a custom dashboard: define the layout of the dashboard and the Prometheus queries used to populate data. -1. Save the file, commit, and push to your repository. +1. Save the file, commit, and push to your repository. The file must be present in your **default** branch. 1. Navigate to your project's **Operations > Metrics** and choose the custom dashboard from the dropdown. @@ -190,6 +194,28 @@ NOTE: **Note:** Configuration files nested under subdirectories of `.gitlab/dashboards` are not supported and will not be available in the UI. +**Duplicate a GitLab-defined dashboard as a new `.yml` file** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/37238) in GitLab 12.7. + +You can save a copy of a GitLab defined dashboard that can be customized and adapted to your project. You can decide to save the dashboard new `.yml` file in the project's **default** branch or in a newly created branch with a name of your choosing. + +1. Click on the "Duplicate dashboard" in the dashboard dropdown. + + NOTE:**Note:** + Only GitLab-defined dashboards can be duplicated. + +1. Input the file name and other information, such as a new commit message, and click on "Duplicate". + +If you select your **default** branch, the new dashboard will become immediately available. If you select another branch, this branch should be merged to your **default** branch first. + +#### Dashboard YAML properties + +Dashboards have several components: + +- Panel groups, which comprise of panels. +- Panels, which support one or more metrics. + The following tables outline the details of expected properties. **Dashboard properties:** diff --git a/doc/user/project/integrations/prometheus_library/nginx.md b/doc/user/project/integrations/prometheus_library/nginx.md index cf46456ca42..eda8cf35091 100644 --- a/doc/user/project/integrations/prometheus_library/nginx.md +++ b/doc/user/project/integrations/prometheus_library/nginx.md @@ -20,7 +20,7 @@ NGINX server metrics are detected, which tracks the pages and content directly s ## Configuring Prometheus to monitor for NGINX metrics -To get started with NGINX monitoring, you should first enable the [VTS statistics](https://github.com/vozlt/nginx-module-vts)) module for your NGINX server. This will capture and display statistics in an HTML readable form. Next, you should install and configure the [NGINX VTS exporter](https://github.com/hnlq715/nginx-vts-exporter) which parses these statistics and translates them into a Prometheus monitoring endpoint. +To get started with NGINX monitoring, you should first enable the [VTS statistics](https://github.com/vozlt/nginx-module-vts) module for your NGINX server. This will capture and display statistics in an HTML readable form. Next, you should install and configure the [NGINX VTS exporter](https://github.com/hnlq715/nginx-vts-exporter) which parses these statistics and translates them into a Prometheus monitoring endpoint. If you are using NGINX as your Kubernetes Ingress, GitLab will [automatically detect](nginx_ingress.md) the metrics once enabled in 0.9.0 and later releases. diff --git a/doc/user/project/integrations/services_templates.md b/doc/user/project/integrations/services_templates.md index a0bf31c526f..8a88df88629 100644 --- a/doc/user/project/integrations/services_templates.md +++ b/doc/user/project/integrations/services_templates.md @@ -8,8 +8,8 @@ for new projects only. ## Enable a service template -In GitLab's Admin area, navigate to **Service Templates** and choose the -service template you wish to create. +Navigate to the **Admin Area > Service Templates** and choose the service +template you wish to create. ## Services for external issue trackers diff --git a/doc/user/project/integrations/webhooks.md b/doc/user/project/integrations/webhooks.md index bb946574371..79cda9a045e 100644 --- a/doc/user/project/integrations/webhooks.md +++ b/doc/user/project/integrations/webhooks.md @@ -56,9 +56,9 @@ tier](https://about.gitlab.com/pricing/), as shown in the following table: | Tier | Number of webhooks per project | |----------|--------------------------------| -| Free | 10 | -| Bronze | 20 | -| Silver | 30 | +| Free | 100 | +| Bronze | 100 | +| Silver | 100 | | Gold | 100 | ## Use-cases diff --git a/doc/user/project/issue_board.md b/doc/user/project/issue_board.md index 403972941b2..b1334f0b0b0 100644 --- a/doc/user/project/issue_board.md +++ b/doc/user/project/issue_board.md @@ -281,6 +281,17 @@ As on another list types, click on the trash icon to remove it. ![Milestone lists](img/issue_board_milestone_lists.png) +## Work In Progress limits **(STARTER)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11403) in GitLab 12.7 + +You can set Work In Progress (WIP) limits per issues list. When a limit is set, the list's header shows the number of issues in the list and the soft limit of issues. For example, for a list with 4 issues, and a limit of 5, the header will show `4/5`. If you exceed the limit, the current number of issues is shown in red. For example, you have a list with 5 issues with a limit of 5. When you move another issue to that list, the list's header displays `6/5`, with the `6` shown in red. + +To set a WIP limit for a list: + +1. Navigate to a Project or Group board for which you have membership and click on the Settings icon (gear) in a list's header. +1. Next to **Work In Progress Limit**, click **Edit** and enter the maximum number of issues. Press `Enter` to save. + ### Summary of features per tier Different issue board features are available in different [GitLab tiers](https://about.gitlab.com/pricing/), as shown in the following table: diff --git a/doc/user/project/issues/csv_export.md b/doc/user/project/issues/csv_export.md index b97bcd47f61..13f0c11399f 100644 --- a/doc/user/project/issues/csv_export.md +++ b/doc/user/project/issues/csv_export.md @@ -69,6 +69,8 @@ Data will be encoded with a comma as the column delimiter, with `"` used to quot | Labels | Title of any labels joined with a `,` | | Time Estimate | [Time estimate](../time_tracking.md#estimates) in seconds | | Time Spent | [Time spent](../time_tracking.md#time-spent) in seconds | +| Epic ID | Id of the parent epic **(ULTIMATE)**, introduced in 12.7 | +| Epic Title | Title of the parent epic **(ULTIMATE)**, introduced in 12.7 | ## Limitations diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md index 594f73dbfbe..c5358f338a5 100644 --- a/doc/user/project/issues/design_management.md +++ b/doc/user/project/issues/design_management.md @@ -37,6 +37,13 @@ Design Management requires that projects are using [hashed storage](../../../administration/repository_storage_types.html#hashed-storage) (the default storage type since v10.0). +### Feature Flags + +- Reference Parsing + + Designs support short references in Markdown, but this needs to be enabled by setting + the `:design_management_reference_filter_gfm_pipeline` feature flag. + ## Limitations - Files uploaded must have a file extension of either `png`, `jpg`, `jpeg`, `gif`, `bmp`, `tiff` or `ico`. @@ -71,6 +78,8 @@ Designs cannot be added if the issue has been moved, or its ## Viewing designs Images on the Design Management page can be enlarged by clicking on them. +You can navigate through designs by clicking on the navigation buttons on the +top-right corner or with <kbd>Left</kbd>/<kbd>Right</kbd> keyboard buttons. The number of comments on a design — if any — is listed to the right of the design filename. Clicking on this number enlarges the design @@ -84,6 +93,14 @@ to help summarize changes between versions. | Modified (in the selected version) | ![Design Modified](img/design_modified_v12_3.png) | | Added (in the selected version) | ![Design Added](img/design_added_v12_3.png) | +### Exploring designs by zooming + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/13217) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.7. + +Designs can be explored in greater detail by zooming in and out of the image. Control the amount of zoom with the `+` and `-` buttons at the bottom of the image. While zoomed, you can still [add new annotations](#adding-annotations-to-designs) to the image, and see any existing ones. + +![Design zooming](img/design_zooming_v12_7.png) + ## Deleting designs > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11089) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.4. @@ -127,3 +144,32 @@ Different discussions have different badge numbers: From GitLab 12.5 on, new annotations will be outputted to the issue activity, so that everyone involved can participate in the discussion. + +## References + +GitLab Flavored Markdown supports references to designs. The syntax for this is: + + `#123[file.jpg]` - the issue reference, with the filename in square braces + +File names may contain a variety of odd characters, so two escaping mechanisms are supported: + +### Quoting + +File names may be quoted with double quotation marks, eg: + + `#123["file.jpg"]` + +This is useful if, for instance, your filename has square braces in its name. In this scheme, all +double quotation marks in the file name need to be escaped with backslashes, and backslashes need +to be escaped likewise: + + `#123["with with \"quote\" marks and a backslash \\.png"]` + +### Base64 Encoding + +In the case of file names that include HTML elements, you will need to escape these names to avoid +them being processed as HTML literals. To do this, we support base64 encoding, eg. + + The file `<a>.jpg` can be referenced as `#123[base64:PGE+LmpwZwo=]` + +Obviously we would advise against using such filenames. diff --git a/doc/user/project/issues/img/confirm_design_deletion_v12_4.png b/doc/user/project/issues/img/confirm_design_deletion_v12_4.png Binary files differindex b1a55c639ca..447d3907122 100644 --- a/doc/user/project/issues/img/confirm_design_deletion_v12_4.png +++ b/doc/user/project/issues/img/confirm_design_deletion_v12_4.png diff --git a/doc/user/project/issues/img/delete_multiple_designs_v12_4.png b/doc/user/project/issues/img/delete_multiple_designs_v12_4.png Binary files differindex b421a5577df..75cbdf77c24 100644 --- a/doc/user/project/issues/img/delete_multiple_designs_v12_4.png +++ b/doc/user/project/issues/img/delete_multiple_designs_v12_4.png diff --git a/doc/user/project/issues/img/delete_single_design_v12_4.png b/doc/user/project/issues/img/delete_single_design_v12_4.png Binary files differindex 0ca03b48e76..158b4949ce4 100644 --- a/doc/user/project/issues/img/delete_single_design_v12_4.png +++ b/doc/user/project/issues/img/delete_single_design_v12_4.png diff --git a/doc/user/project/issues/img/design_zooming_v12_7.png b/doc/user/project/issues/img/design_zooming_v12_7.png Binary files differnew file mode 100644 index 00000000000..4acb4e10913 --- /dev/null +++ b/doc/user/project/issues/img/design_zooming_v12_7.png diff --git a/doc/user/project/issues/img/disable_issue_auto_close.png b/doc/user/project/issues/img/disable_issue_auto_close.png Binary files differnew file mode 100644 index 00000000000..5894d39622a --- /dev/null +++ b/doc/user/project/issues/img/disable_issue_auto_close.png diff --git a/doc/user/project/issues/img/select_designs_v12_4.png b/doc/user/project/issues/img/select_designs_v12_4.png Binary files differindex a53bd516300..532a79fce65 100644 --- a/doc/user/project/issues/img/select_designs_v12_4.png +++ b/doc/user/project/issues/img/select_designs_v12_4.png diff --git a/doc/user/project/issues/img/zoom-quickaction-button.png b/doc/user/project/issues/img/zoom-quickaction-button.png Binary files differindex c95a56b43e8..3be4f36f88f 100644 --- a/doc/user/project/issues/img/zoom-quickaction-button.png +++ b/doc/user/project/issues/img/zoom-quickaction-button.png diff --git a/doc/user/project/issues/index.md b/doc/user/project/issues/index.md index 6abd6fd7047..f540dfe0e51 100644 --- a/doc/user/project/issues/index.md +++ b/doc/user/project/issues/index.md @@ -97,7 +97,7 @@ and modify them if you have the necessary [permissions](../../permissions.md). On the Issues List, you can view all issues in the current project, or from multiple projects when opening the Issues List from the higher-level group context. Filter the -issue list with a [search query](../../search/index.md#issues-and-merge-requests-per-project), +issue list with a [search query](../../search/index.md#filtering-issue-and-merge-request-lists), including specific metadata, such as label(s), assignees(s), status, and more. From this view, you can also make certain changes [in bulk](../bulk_editing.md) to the displayed issues. diff --git a/doc/user/project/issues/managing_issues.md b/doc/user/project/issues/managing_issues.md index 38649b05593..ff360e973aa 100644 --- a/doc/user/project/issues/managing_issues.md +++ b/doc/user/project/issues/managing_issues.md @@ -66,7 +66,7 @@ configured. When you click this link, an email address is generated and displayed, which should be used by **you only**, to create issues in this project. You can save this address as a -contact in your email client for easy acceess. +contact in your email client for easy access. CAUTION: **Caution:** This is a private email address, generated just for you. **Keep it to yourself**, @@ -207,10 +207,23 @@ and https://gitlab.example.com/group/otherproject/issues/23. ``` will close `#18`, `#19`, `#20`, and `#21` in the project this commit is pushed to, -as well as `#22` and `#23` in group/otherproject. `#17` won't be closed as it does +as well as `#22` and `#23` in `group/otherproject`. `#17` won't be closed as it does not match the pattern. It works with multi-line commit messages as well as one-liners when used from the command line with `git commit -m`. +#### Disabling automatic issue closing + +The automatic issue closing feature can be disabled on a per-project basis +within the [project's repository settings](../settings/index.md). Referenced +issues will still be displayed as such but won't be closed automatically. + +![disable issue auto close - settings](img/disable_issue_auto_close.png) + +This only applies to issues affected by new merge requests or commits. Already +closed issues remain as-is. Disabling automatic issue closing only affects merge +requests *within* the project and won't prevent other projects from closing it +via cross-project issues. + #### Customizing the issue closing pattern **(CORE ONLY)** In order to change the default issue closing pattern, GitLab administrators must edit the diff --git a/doc/user/project/members/img/project_members.png b/doc/user/project/members/img/project_members.png Binary files differindex 5d44b5d957e..218f5a24d2e 100644 --- a/doc/user/project/members/img/project_members.png +++ b/doc/user/project/members/img/project_members.png diff --git a/doc/user/project/members/img/project_members_filter_v12_6.png b/doc/user/project/members/img/project_members_filter_v12_6.png Binary files differindex 0207515ded0..692fdfe00a1 100644 --- a/doc/user/project/members/img/project_members_filter_v12_6.png +++ b/doc/user/project/members/img/project_members_filter_v12_6.png diff --git a/doc/user/project/members/index.md b/doc/user/project/members/index.md index c069882e38f..27a5701e6c2 100644 --- a/doc/user/project/members/index.md +++ b/doc/user/project/members/index.md @@ -27,8 +27,8 @@ From the image above, we can deduce the following things: - Administrator is the Owner and member of **all** groups and for that reason, there is an indication of an ancestor group and inherited Owner permissions. -[From](https://gitlab.com/gitlab-org/gitlab/issues/21727), you can filter this list -using dropdown on the right side: +[From GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/21727), you can filter this list +using the dropdown on the right side: ![Project members filter](img/project_members_filter_v12_6.png) diff --git a/doc/user/project/merge_requests/code_quality.md b/doc/user/project/merge_requests/code_quality.md index 69bdfe10e3f..9d44f416696 100644 --- a/doc/user/project/merge_requests/code_quality.md +++ b/doc/user/project/merge_requests/code_quality.md @@ -66,6 +66,19 @@ will scan your source code for code quality issues. The report will be saved as that you can later download and analyze. Due to implementation limitations we always take the latest Code Quality artifact available. +It is also possible to override the URL to the Code Quality image by +setting the `CODE_QUALITY_IMAGE` variable. This is particularly useful if you want +to lock in a specific version of Code Quality, or use a fork of it: + +```yaml +include: + - template: Code-Quality.gitlab-ci.yml + +code_quality: + variables: + CODE_QUALITY_IMAGE: "registry.example.com/codequality-fork:latest" +``` + By default, report artifacts are not downloadable. If you need them downloadable on the job details page, you can add `gl-code-quality-report.json` to the artifact paths like so: @@ -125,6 +138,33 @@ code_quality: codequality: gl-code-quality-report.json ``` +In GitLab 12.6, Code Quality switched to the +[new versioning scheme](https://gitlab.com/gitlab-org/security-products/codequality/merge_requests/38). +It is highly recommended to include the Code Quality template as shown in the +[example configuration](#example-configuration), which uses the new versioning scheme. +If not using the template, the `SP_VERSION` variable can be hardcoded to use the +new image versions: + +```yaml +code_quality: + image: docker:stable + variables: + DOCKER_DRIVER: overlay2 + SP_VERSION: 0.85.6 + allow_failure: true + services: + - docker:stable-dind + script: + - docker run + --env SOURCE_CODE="$PWD" + --volume "$PWD":/code + --volume /var/run/docker.sock:/var/run/docker.sock + "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code + artifacts: + reports: + codequality: gl-code-quality-report.json +``` + For GitLab 11.4 and earlier, the job should look like: ```yaml diff --git a/doc/user/project/merge_requests/creating_merge_requests.md b/doc/user/project/merge_requests/creating_merge_requests.md index 1dec58a8bb0..5b4c6d22c80 100644 --- a/doc/user/project/merge_requests/creating_merge_requests.md +++ b/doc/user/project/merge_requests/creating_merge_requests.md @@ -1,124 +1,165 @@ --- -type: index, reference +type: howto +description: "How to create Merge Requests in GitLab." +disqus_identifier: 'https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html' --- -# Creating merge requests +# How to create a merge request -Merge requests are the primary method of making changes to files in a GitLab project. -Changes are proposed by creating and submitting a merge request, which is then -[reviewed, and accepted (or rejected)](reviewing_and_managing_merge_requests.md), -all within GitLab. +Before creating a merge request, read through an +[introduction to Merge Requests](getting_started.md) +to familiarize yourself with the concept, the terminology, +and to learn what you can do with them. -## Creating new merge requests +Every merge request starts by creating a branch. You can either +do it locally through the command line, via a Git CLI application, +or through the GitLab UI. -You can start creating a new merge request by clicking the **New merge request** button -on the **Merge Requests** page in a project. Then you must choose the source project and -branch that contain your changes, and the target project and branch where you want to merge -the changes into. Click on **Compare branches and continue** to go to the next step -and start filling in the merge request details. +This document describes the several ways to create a merge request. -When viewing the commits on a branch other than master in **Repository > Commits**, you -can click on the **Create merge request** button, and a new merge request will be started -using the current branch as the source, and `master` in the current project as the target. +When you start a new merge request, regarless of the method, +you'll be taken to the [**New Merge Request** page](#new-merge-request-page) +to fill it with information about the merge request. -If you have recently pushed changes to GitLab, the **Create merge request** button will -also appear in the top right of the: +If you push a new branch to GitLab, also regardless of the method, +you can click the [**Create Merge Request**](#create-merge-request-button) +button and start a merge request from there. + +## New Merge Request page + +On the **New Merge Request** page, start by filling in the title +and description for the merge request. If there are are already +commits on the branch, the title will be pre-filled with the first +line of the first commit message, and the description will be +pre-filled with any additional lines in the commit message. +The title is the only field that is mandatory in all cases. + +From there, you can fill it with information (title, description, +assignee(s), milestone, labels, approvers) and click **Create Merge Request**. + +From that initial screen, you can also see all the commits, +pipelines, and file changes pushed to your branch before submitting +the merge request. + +![New Merge Request page](img/new_merge_request_page_v12_6.png) + +TIP: **Tip:** +You can push one or more times to your branch in GitLab before +creating the merge request. + +## Create Merge Request button + +Once you have pushed a new branch to GitLab, visit your repository +in GitLab and to see a call-to-action at the top of your screen +from which you can click the button **Create Merge Request**. + +![Create Merge Request button](img/create_merge_request_button_v12_6.png) + +You can also see the **Create merge request** button in the top-right of the: - **Project** page. - **Repository > Files** page. - **Merge Requests** page. -In this case, the merge request will use the most recent branch you pushed changes -to as the source branch, and `master` in the current project as the target. +In this case, GitLab will use the most recent branch you pushed +changes to as the source branch, and the default branch in the current +project as the target. -You can also [create a new merge request directly from an issue](../repository/web_editor.md#create-a-new-branch-from-an-issue). +## New merge request by adding, editing, and uploading a file -## Workflow for new merge requests +When you choose to edit, add, or upload a file through the GitLab UI, +at the end of the file you'll see the option to add the **Commit message**, +to select the **Target branch** of that commit, and the checkbox to +**Start new a merge request with these changes**. -On the **New Merge Request** page, you can start by filling in the title and description -for the merge request. If there are are already commits on the branch, the title will -be pre-filled with the first line of the first commit message, and the description will -be pre-filled with any additional lines in the commit message. The title is the only -field that is mandatory in all cases. +Similarly, if you change files through the Web IDE, when you navigate to **Commit** on the left-hand sidebar, you'll see these same options. -From here, you can also: +Once you have added, edited, or uploaded the file: -- Set the merge request as a [work in progress](work_in_progress_merge_requests.md). -- Select the [assignee](#assignee), or [assignees](#multiple-assignees-starter). **(STARTER)** -- Select a [milestone](../milestones/index.md). -- Select [labels](../labels.md). -- Add any [merge request dependencies](merge_request_dependencies.md). **(PREMIUM)** -- Select [approval options](merge_request_approvals.md). **(STARTER)** -- Verify the source and target branches are correct. -- Enable the [delete source branch when merge request is accepted](#deleting-the-source-branch) option. -- Enable the [squash commits when merge request is accepted](squash_and_merge.md) option. -- If the merge request is from a fork, enable [Allow collaboration on merge requests across forks](allow_collaboration.md). +1. Describe your changes in the commit message. +1. Select an existing branch to add your commit into, or, if you'd like to create a new branch, type the new branch name (without spaces, capital letters, or special chars). +1. Keep the checkbox checked to start a new merge request straightaway, or, uncheck it to add more changes to that branch before starting the merge request. +1. Click **Commit changes**. -Many of these can be set when pushing changes from the command line, with -[Git push options](../push_options.md). +If you chose to start a merge request, you'll be taken to the +[**New Merge Request** page](#new-merge-request-page), from +which you can fill it in with information and submit the merge request. -### Merge requests to close issues +The merge request will target the default branch of the repository. +If you want to change it, you can do it later by editing the merge request. -If the merge request is being created to resolve an issue, you can add a note in the -description which will set it to [automatically close the issue](../issues/managing_issues.md#closing-issues-automatically) -when merged. +## New merge request from a new branch created through the UI -If the issue is [confidential](../issues/confidential_issues.md), you may want to -use a different workflow for [merge requests for confidential issues](../issues/confidential_issues.md#merge-requests-for-confidential-issues), -to prevent confidential information from being exposed. +To quickly start working on files through the GitLab UI, +navigate to your project's **Repository > Branches** and click +**New branch**. A new branch will be created and you can start +editing files. -## Assignee +Once committed and pushed, you can click on the [**Create Merge Request**](#create-merge-request-button) +button to open the [**New Merge Request** page](#new-merge-request-page). +A new merge request will be started using the current branch as the source, +and the default branch in the current project as the target. -Choose an assignee to designate someone as the person responsible for the first -[review of the merge request](reviewing_and_managing_merge_requests.md). Open the -drop down box to search for the user you wish to assign, and the merge request will be -added to their [assigned merge request list](../../search/index.md#issues-and-merge-requests). +## New merge request from you local environment -### Multiple assignees **(STARTER)** +Assuming you have your repository cloned into your computer and you'd +like to start working on changes to files, start by creating and +checking out a new branch: -> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/2004) in [GitLab Starter 11.11](https://about.gitlab.com/pricing/). +```bash +git checkout -b my-new-branch +``` -Multiple people often review merge requests at the same time. GitLab allows you to -have multiple assignees for merge requests to indicate everyone that is reviewing or -accountable for it. +Work on your file changes, stage, and commit them: -![multiple assignees for merge requests sidebar](img/multiple_assignees_for_merge_requests_sidebar.png) +```bash +git add . +git commit -m "My commit message" +``` -To assign multiple assignees to a merge request: +Once you're done, [push your branch to GitLab](../../../gitlab-basics/start-using-git.md#send-changes-to-gitlabcom): -1. From a merge request, expand the right sidebar and locate the **Assignees** section. -1. Click on **Edit** and from the dropdown menu, select as many users as you want - to assign the merge request to. +```bash +git push origin my-new-branch +``` -Similarly, assignees are removed by deselecting them from the same dropdown menu. +In the output, GitLab will prompt you with a direct link for creating +a merge request: -It's also possible to manage multiple assignees: +```bash +... +remote: To create a merge request for docs-new-merge-request, visit: +remote: https://gitlab-instance.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch +``` -- When creating a merge request. -- Using [quick actions](../quick_actions.md#quick-actions-for-issues-merge-requests-and-epics). +Copy that link and paste it in your browser, and the [**New Merge Request page**](#new-merge-request-page) +will be displayed. -## Deleting the source branch +There is also a number of [flags you can add to commands when pushing through the command line](../push_options.md) to reduce the need for editing merge requests manually through the UI. -When creating a merge request, select the "Delete source branch when merge -request accepted" option and the source branch will be deleted when the merge -request is merged. To make this option enabled by default for all new merge -requests, enable it in the [project's settings](../settings/index.md#merge-request-settings). +If you didn't push your branch to GitLab through the command line +(for example, you used a Git CLI application to push your changes), +you can create a merge request through the GitLab UI by clicking +the [**Create Merge Request**](#create-merge-request-button) button. -This option is also visible in an existing merge request next to the merge -request button and can be selected/deselected before merging. It's only visible -to users with [Maintainer permissions](../../permissions.md) in the source project. +## New merge request from an issue -If the user viewing the merge request does not have the correct permissions to -delete the source branch and the source branch is set for deletion, the merge -request widget will show the "Deletes source branch" text. +You can also [create a new merge request directly from an issue](../repository/web_editor.md#create-a-new-branch-from-an-issue). -![Delete source branch status](img/remove_source_branch_status.png) +## New merge request from the Merge Requests page -## Create new merge requests by email +You can start creating a new merge request by clicking the +**New merge request** button on the **Merge Requests** page in a project. +Then choose the source project and branch that contain your changes, +and the target project and branch where you want to merge the changes into. +Click on **Compare branches and continue** to go to the +[**New Merge Request** page](#new-merge-request-page) and fill in the details. + +## New merge request by email **(CORE ONLY)** _This feature needs [incoming email](../../../administration/incoming_email.md) -to be configured by a GitLab administrator to be available for CE/EE users, and -it's available on GitLab.com._ +to be configured by a GitLab administrator to be available._ It isn't +available in GitLab.com. You can create a new merge request by sending an email to a user-specific email address. The address can be obtained on the merge requests page by clicking on @@ -131,7 +172,7 @@ this feature. If it's not enabled to your instance, you may ask your GitLab administrator to do so. This is a private email address, generated just for you. **Keep it to yourself** -as anyone who gets ahold of it can create issues or merge requests as if they were you. +as anyone who has it can create issues or merge requests as if they were you. You can add this address to your contact list for easy access. ![Create new merge requests by email](img/create_from_email.png) @@ -156,3 +197,7 @@ created from the repository's HEAD or the specified target branch to apply the patches. The target branch can be specified using the [`/target_branch` quick action](../quick_actions.md). If the source branch already exists, the patches will be applied on top of it. + +## Reviewing and managing Merge Requests + +Once you have submitted a merge request, it can be [reviewed and managed](reviewing_and_managing_merge_requests.md) through GitLab. diff --git a/doc/user/project/merge_requests/getting_started.md b/doc/user/project/merge_requests/getting_started.md new file mode 100644 index 00000000000..0ab8d31403e --- /dev/null +++ b/doc/user/project/merge_requests/getting_started.md @@ -0,0 +1,151 @@ +--- +type: index, reference +description: "Getting started with Merge Requests." +--- + +# Getting started with Merge Requests + +A Merge Request (**MR**) is the basis of GitLab as a code +collaboration and version control. + +When working in a Git-based platform, you can use branching +strategies to collaborate on code. + +A repository is composed by its _default branch_, which contains +the major version of the codebase, from which you create minor +branches, also called _feature branches_, to propose changes to +the codebase without introducing them directly into the major +version of the codebase. + +Branching is especially important when collaborating with others, +avoiding changes to be pushed directly to the default branch +without prior reviews, tests, and approvals. + +When you create a new feature branch, change the files, and push +it to GitLab, you have the option to create a **Merge Request**, +which is essentially a _request_ to merge one branch into another. + +The branch you added your changes into is called _source branch_ +while the branch you request to merge your changes into is +called _target branch_. + +The target branch can be the default or any other branch, depending +on the branching strategies you choose. + +In a merge request, beyond visualizing the differences between the +original content and your proposed changes, you can execute a +[significant number of tasks](#what-you-can-do-with-merge-requests) +before concluding your work and merging the merge request. + +You can watch our [GitLab Flow video](https://www.youtube.com/watch?v=InKNIvky2KE) for +a quick overview of working with merge requests. + +## How to create a merge request + +Learn the various ways to [create a merge request](creating_merge_requests.md). + +## What you can do with merge requests + +When you start a new merge request, you can immediately include the following +options, or add them later by clicking the **Edit** button on the merge +request's page at the top-right side: + +- [Assign](#assignee) the merge request to a colleague for review. With GitLab Starter and higher tiers, you can [assign it to more than one person at a time](#multiple-assignees-starter). +- Set a [milestone](../milestones/index.md) to track time-sensitive changes. +- Add [labels](../labels.md) to help contextualize and filter your merge requests over time. +- Require [approval](merge_request_approvals.md) from your team. **(STARTER)** +- [Close issues automatically](#merge-requests-to-close-issues) when they are merged. +- Enable the [delete source branch when merge request is accepted](#deleting-the-source-branch) option to keep your repository clean. +- Enable the [squash commits when merge request is accepted](squash_and_merge.md) option to combine all the commits into one before merging, thus keep a clean commit history in your repository. +- Set the merge request as a [Work In Progress (WIP)](work_in_progress_merge_requests.md) to avoid accidental merges before it is ready. + +Once you have created the merge request, you can also: + +- [Discuss](../../discussions/index.md) your implementation with your team in the merge request thread. +- [Perform inline code reviews](reviewing_and_managing_merge_requests.md#perform-inline-code-reviews). +- Add [merge request dependencies](merge_request_dependencies.md) to restrict it to be merged only when other merge requests have been merged. **(PREMIUM)** +- Preview continuous integration [pipelines on the merge request widget](reviewing_and_managing_merge_requests.md#pipeline-status-in-merge-requests-widgets). +- Preview how your changes look directly on your deployed application with [Review Apps](reviewing_and_managing_merge_requests.md#live-preview-with-review-apps). +- [Allow collaboration on merge requests across forks](allow_collaboration.md). +- Perform a [Review](../../discussions/index.md#merge-request-reviews-premium) in order to create multiple comments on a diff and publish them once you're ready. **(PREMIUM)** +- Add [code suggestions](../../discussions/index.md#suggest-changes) to change the content of merge requests directly into merge request threads, and easily apply them to the codebase directly from the UI. +- Add a time estimation and the time spent with that merge request with [Time Tracking](../time_tracking.md#time-tracking). + +Many of these can be set when pushing changes from the command line, +with [Git push options](../push_options.md). + +See also other [features associated to merge requests](reviewing_and_managing_merge_requests.md#associated-features). + +### Assignee + +Choose an assignee to designate someone as the person responsible +for the first [review of the merge request](reviewing_and_managing_merge_requests.md). +Open the drop down box to search for the user you wish to assign, +and the merge request will be added to their +[assigned merge request list](../../search/index.md#issues-and-merge-requests). + +#### Multiple assignees **(STARTER)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/2004) in [GitLab Starter 11.11](https://about.gitlab.com/pricing/). + +Multiple people often review merge requests at the same time. +GitLab allows you to have multiple assignees for merge requests +to indicate everyone that is reviewing or accountable for it. + +![multiple assignees for merge requests sidebar](img/multiple_assignees_for_merge_requests_sidebar.png) + +To assign multiple assignees to a merge request: + +1. From a merge request, expand the right sidebar and locate the **Assignees** section. +1. Click on **Edit** and from the dropdown menu, select as many users as you want + to assign the merge request to. + +Similarly, assignees are removed by deselecting them from the same +dropdown menu. + +It is also possible to manage multiple assignees: + +- When creating a merge request. +- Using [quick actions](../quick_actions.md#quick-actions-for-issues-merge-requests-and-epics). + +### Merge requests to close issues + +If the merge request is being created to resolve an issue, you can +add a note in the description which sets it to +[automatically close the issue](../issues/managing_issues.md#closing-issues-automatically) +when merged. + +If the issue is [confidential](../issues/confidential_issues.md), +you may want to use a different workflow for +[merge requests for confidential issues](../issues/confidential_issues.md#merge-requests-for-confidential-issues) +to prevent confidential information from being exposed. + +### Deleting the source branch + +When creating a merge request, select the +**Delete source branch when merge request accepted** option, and the source +branch is deleted when the merge request is merged. To make this option +enabled by default for all new merge requests, enable it in the +[project's settings](../settings/index.md#merge-request-settings). + +This option is also visible in an existing merge request next to +the merge request button and can be selected or deselected before merging. +It is only visible to users with [Maintainer permissions](../../permissions.md) +in the source project. + +If the user viewing the merge request does not have the correct +permissions to delete the source branch and the source branch +is set for deletion, the merge request widget displays the +**Deletes source branch** text. + +![Delete source branch status](img/remove_source_branch_status.png) + +## Recommendations and best practices for Merge Requests + +- When working locally in your branch, add multiple commits and only push when + you're done, so GitLab runs only one pipeline for all the commits pushed + at once. By doing so, you save pipeline minutes. +- Delete feature branches on merge or after merging them to keep your repository clean. +- Take one thing at a time and ship the smallest changes possible. By doing so, + you'll have faster reviews and your changes will be less prone to errors. +- Do not use capital letters nor special chars in branch names. diff --git a/doc/user/project/merge_requests/img/create_merge_request_button_v12_6.png b/doc/user/project/merge_requests/img/create_merge_request_button_v12_6.png Binary files differnew file mode 100644 index 00000000000..bcbee10e1b7 --- /dev/null +++ b/doc/user/project/merge_requests/img/create_merge_request_button_v12_6.png diff --git a/doc/user/project/merge_requests/img/dependencies_edit_inaccessible_v12_4.png b/doc/user/project/merge_requests/img/dependencies_edit_inaccessible_v12_4.png Binary files differindex 3699ffd16b4..5ced2fa812f 100644 --- a/doc/user/project/merge_requests/img/dependencies_edit_inaccessible_v12_4.png +++ b/doc/user/project/merge_requests/img/dependencies_edit_inaccessible_v12_4.png diff --git a/doc/user/project/merge_requests/img/dependencies_edit_v12_4.png b/doc/user/project/merge_requests/img/dependencies_edit_v12_4.png Binary files differindex beb452e80cf..4edf0648794 100644 --- a/doc/user/project/merge_requests/img/dependencies_edit_v12_4.png +++ b/doc/user/project/merge_requests/img/dependencies_edit_v12_4.png diff --git a/doc/user/project/merge_requests/img/dependencies_view_v12_2.png b/doc/user/project/merge_requests/img/dependencies_view_v12_2.png Binary files differindex e00231c839b..3dde15292c4 100644 --- a/doc/user/project/merge_requests/img/dependencies_view_v12_2.png +++ b/doc/user/project/merge_requests/img/dependencies_view_v12_2.png diff --git a/doc/user/project/merge_requests/img/incrementally_expand_merge_request_diffs_v12_2.png b/doc/user/project/merge_requests/img/incrementally_expand_merge_request_diffs_v12_2.png Binary files differindex ee94dbdea5c..e3a2ff7960c 100644 --- a/doc/user/project/merge_requests/img/incrementally_expand_merge_request_diffs_v12_2.png +++ b/doc/user/project/merge_requests/img/incrementally_expand_merge_request_diffs_v12_2.png diff --git a/doc/user/project/merge_requests/img/merge_request_diff_v12_2.png b/doc/user/project/merge_requests/img/merge_request_diff_v12_2.png Binary files differindex e56fbb9750f..7e23b7db309 100644 --- a/doc/user/project/merge_requests/img/merge_request_diff_v12_2.png +++ b/doc/user/project/merge_requests/img/merge_request_diff_v12_2.png diff --git a/doc/user/project/merge_requests/img/new_merge_request_page_v12_6.png b/doc/user/project/merge_requests/img/new_merge_request_page_v12_6.png Binary files differnew file mode 100644 index 00000000000..c0f2ba261cb --- /dev/null +++ b/doc/user/project/merge_requests/img/new_merge_request_page_v12_6.png diff --git a/doc/user/project/merge_requests/index.md b/doc/user/project/merge_requests/index.md index 203a2949243..0617e6bc74d 100644 --- a/doc/user/project/merge_requests/index.md +++ b/doc/user/project/merge_requests/index.md @@ -50,6 +50,8 @@ collaborating with that MR. MRs also contain navigation tabs from which you can see the discussion happening on the thread, the list of commits, the list of pipelines and jobs, the code changes and inline code reviews. +To get started, read the [introduction to merge requests](getting_started.md). + ## Merge request navigation tabs at the top > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/33813) in GitLab 12.6. This positioning is experimental. @@ -76,72 +78,11 @@ Feature.disable(:mr_tabs_position) ## Creating merge requests -While making changes to files in the `master` branch of a repository is possible, it is not -the common workflow. In most cases, a user will make changes in a [branch](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell#_git_branching), -then [create a merge request](creating_merge_requests.md) to request that the changes -be merged into another branch (often the `master` branch). - -It is then [reviewed](#reviewing-and-managing-merge-requests), possibly updated after -discussions and suggestions, and finally approved and merged into the target branch. -Creating and reviewing merge requests is one of the most fundamental parts of working -with GitLab. - -When [creating merge requests](creating_merge_requests.md), there are a number of features -to be aware of: - -| Feature | Description | -|-----------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Adding patches when creating a merge request via e-mail](creating_merge_requests.md#adding-patches-when-creating-a-merge-request-via-e-mail) | Add commits to a merge request created by e-mail, by adding patches as e-mail attachments. | -| [Allow collaboration on merge requests across forks](allow_collaboration.md) | Allows the maintainers of an upstream project to collaborate on a fork, to make fixes or rebase branches before merging, reducing the back and forth of accepting community contributions. | -| [Assignee](creating_merge_requests.md#assignee) | Add an assignee to indicate who is reviewing or accountable for it. | -| [Automatic issue closing](../../project/issues/managing_issues.md#closing-issues-automatically) | Set a merge request to close defined issues automatically as soon as it is merged. | -| [Create new merge requests by email](creating_merge_requests.md#create-new-merge-requests-by-email) | Create new merge requests by sending an email to a user-specific email address. | -| [Deleting the source branch](creating_merge_requests.md#deleting-the-source-branch) | Select the "Delete source branch when merge request accepted" option and the source branch will be deleted when the merge request is merged. | -| [Git push options](../push_options.md) | Use Git push options to create or update merge requests when pushing changes to GitLab with Git, without needing to use the GitLab interface. | -| [Labels](../../project/labels.md) | Organize your issues and merge requests consistently throughout the project. | -| [Merge request approvals](merge_request_approvals.md) **(STARTER)** | Set the number of necessary approvals and predefine a list of approvers that will need to approve every merge request in a project. | -| [Merge Request dependencies](merge_request_dependencies.md) **(PREMIUM)** | Specify that a merge request depends on other merge requests, enforcing a desired order of merging. | -| [Merge Requests for Confidential Issues](../issues/confidential_issues.md#merge-requests-for-confidential-issues) | Create merge requests to resolve confidential issues for preventing leakage or early release of sensitive data through regular merge requests. | -| [Milestones](../../project/milestones/index.md) | Track merge requests to achieve a broader goal in a certain period of time. | -| [Multiple assignees](creating_merge_requests.md#multiple-assignees-starter) **(STARTER)** | Have multiple assignees for merge requests to indicate everyone that is reviewing or accountable for it. | -| [Squash and merge](squash_and_merge.md) | Squash all changes present in a merge request into a single commit when merging, to allow for a neater commit history. | -| [Work In Progress merge requests](work_in_progress_merge_requests.md) | Prevent the merge request from being merged before it's ready | +Learn [how to create a merge request](creating_merge_requests.md). ## Reviewing and managing merge requests -Once a merge request has been [created](#creating-merge-requests) and submitted, there -are many powerful features that you can use during the review process to make sure only -the changes you want are merged into the repository. - -For managers and administrators, it is also important to be able to view and manage -all the merge requests in a group or project. When [reviewing or managing merge requests](reviewing_and_managing_merge_requests.md), -there are a number of features to be aware of: - -| Feature | Description | -|-------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Bulk editing merge requests](../../project/bulk_editing.md) | Update the attributes of multiple merge requests simultaneously. | -| [Cherry-pick changes](cherry_pick_changes.md) | Cherry-pick any commit in the UI by simply clicking the **Cherry-pick** button in a merged merge requests or a commit. | -| [Commenting on any file line in merge requests](reviewing_and_managing_merge_requests.md#commenting-on-any-file-line-in-merge-requests) | Make comments directly on the exact line of a file you want to talk about. | -| [Discuss changes in threads in merge requests reviews](../../discussions/index.md) | Keep track of the progress during a code review by making and resolving comments. | -| [Fast-forward merge requests](fast_forward_merge.md) | For a linear Git history and a way to accept merge requests without creating merge commits | -| [Find the merge request that introduced a change](versions.md) | When viewing the commit details page, GitLab will link to the merge request(s) containing that commit. | -| [Ignore whitespace changes in Merge Request diff view](reviewing_and_managing_merge_requests.md#ignore-whitespace-changes-in-Merge-Request-diff-view) | Hide whitespace changes from the diff view for a to focus on more important changes. | -| [Incrementally expand merge request diffs](reviewing_and_managing_merge_requests.md#incrementally-expand-merge-request-diffs) | View the content directly above or below a change, to better understand the context of that change. | -| [Live preview with Review Apps](reviewing_and_managing_merge_requests.md#live-preview-with-review-apps) | Live preview the changes when Review Apps are configured for your project | -| [Merge request diff file navigation](reviewing_and_managing_merge_requests.md#merge-request-diff-file-navigation) | Quickly jump to any changed file within the diff view. | -| [Merge requests versions](versions.md) | Select and compare the different versions of merge request diffs | -| [Merge when pipeline succeeds](merge_when_pipeline_succeeds.md) | Set a merge request that looks ready to merge to merge automatically when CI pipeline succeeds. | -| [Perform a Review](../../discussions/index.md#merge-request-reviews-premium) **(PREMIUM)** | Start a review in order to create multiple comments on a diff and publish them once you're ready. | -| [Pipeline status in merge requests](reviewing_and_managing_merge_requests.md#pipeline-status-in-merge-requests) | If using [GitLab CI/CD](../../../ci/README.md), see pre and post-merge pipelines information, and which deployments are in progress. | -| [Post-merge pipeline status](reviewing_and_managing_merge_requests.md#post-merge-pipeline-status) | When a merge request is merged, see the post-merge pipeline status of the branch the merge request was merged into. | -| [Resolve conflicts](resolve_conflicts.md) | GitLab can provide the option to resolve certain merge request conflicts in the GitLab UI. | -| [Revert changes](revert_changes.md) | Revert changes from any commit from within a merge request. | -| [Semi-linear history merge requests](reviewing_and_managing_merge_requests.md#semi-linear-history-merge-requests) | Enable semi-linear history merge requests as another security layer to guarantee the pipeline is passing in the target branch | -| [Suggest changes](../../discussions/index.md#suggest-changes) | Add suggestions to change the content of merge requests directly into merge request threads, and easily apply them to the codebase directly from the UI. | -| [Time Tracking](../time_tracking.md#time-tracking) | Add a time estimation and the time spent with that merge request. | -| [View changes between file versions](reviewing_and_managing_merge_requests.md#view-changes-between-file-versions) | View what will be changed when a merge request is merged. | -| [View group merge requests](reviewing_and_managing_merge_requests.md#view-merge-requests-for-all-projects-in-a-group) | List and view the merge requests within a group. | -| [View project merge requests](reviewing_and_managing_merge_requests.md#view-project-merge-requests) | List and view the merge requests within a project. | +See the features at your disposal to [review and manage merge requests](reviewing_and_managing_merge_requests.md). ## Testing and reports in merge requests diff --git a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md index 97c16a9794d..21c8b5c682b 100644 --- a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md +++ b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md @@ -13,7 +13,7 @@ which is then reviewed, and accepted (or rejected). View all the merge requests within a project by navigating to **Project > Merge Requests**. When you access your project's merge requests, GitLab will present them in a list, -and you can use the tabs available to quickly filter by open and closed. You can also [search and filter the results](../../search/index.md#issues-and-merge-requests-per-project). +and you can use the tabs available to quickly filter by open and closed. You can also [search and filter the results](../../search/index.md#filtering-issue-and-merge-request-lists). ![Project merge requests list view](img/project_merge_requests_list_view.png) @@ -21,7 +21,7 @@ and you can use the tabs available to quickly filter by open and closed. You can View merge requests in all projects in the group, including all projects of all descendant subgroups of the group. Navigate to **Group > Merge Requests** to view these merge requests. This view also has the open and closed merge requests tabs. -You can [search and filter the results](../../search/index.md#issues-and-merge-requests-per-group) from here. +You can [search and filter the results](../../search/index.md#filtering-issue-and-merge-request-lists) from here. ![Group Issues list view](img/group_merge_requests_list_view.png) @@ -85,7 +85,7 @@ specific commit page. You can append `?w=1` while on the diffs page of a merge request to ignore any whitespace changes. -## Commenting on any file line in merge requests +## Perform inline code reviews > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/13950) in GitLab 11.5. @@ -94,20 +94,7 @@ in a Merge Request. To do so, click the **...** button in the gutter of the Merg ![Comment on any diff file line](img/comment-on-any-diff-line.png) -## Live preview with Review Apps - -If you configured [Review Apps](https://about.gitlab.com/product/review-apps/) for your project, -you can preview the changes submitted to a feature-branch through a merge request -in a per-branch basis. No need to checkout the branch, install and preview locally; -all your changes will be available to preview by anyone with the Review Apps link. - -With GitLab's [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the -merge request widget takes you directly to the pages changed, making it easier and -faster to preview proposed modifications. - -[Read more about Review Apps](../../../ci/review_apps/index.md). - -## Pipeline status in merge requests +## Pipeline status in merge requests widgets If you've set up [GitLab CI/CD](../../../ci/README.md) in your project, you will be able to see: @@ -135,6 +122,37 @@ be disabled. If the pipeline fails to deploy, the deployment info will be hidden For more information, [read about pipelines](../../../ci/pipelines.md). +### Merge when pipeline succeeds (MWPS) + +Set a merge request that looks ready to merge to [merge automatically when CI pipeline succeeds](merge_when_pipeline_succeeds.md). + +### Live preview with Review Apps + +If you configured [Review Apps](https://about.gitlab.com/product/review-apps/) for your project, +you can preview the changes submitted to a feature-branch through a merge request +in a per-branch basis. No need to checkout the branch, install and preview locally; +all your changes will be available to preview by anyone with the Review Apps link. + +With GitLab's [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the +merge request widget takes you directly to the pages changed, making it easier and +faster to preview proposed modifications. + +[Read more about Review Apps](../../../ci/review_apps/index.md). + +## Associated features + +There is also a large number of features to associated to merge requests: + +| Feature | Description | +|-------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Bulk editing merge requests](../../project/bulk_editing.md) | Update the attributes of multiple merge requests simultaneously. | +| [Cherry-pick changes](cherry_pick_changes.md) | Cherry-pick any commit in the UI by simply clicking the **Cherry-pick** button in a merged merge requests or a commit. | +| [Fast-forward merge requests](fast_forward_merge.md) | For a linear Git history and a way to accept merge requests without creating merge commits | +| [Find the merge request that introduced a change](versions.md) | When viewing the commit details page, GitLab will link to the merge request(s) containing that commit. | +| [Merge requests versions](versions.md) | Select and compare the different versions of merge request diffs | +| [Resolve conflicts](resolve_conflicts.md) | GitLab can provide the option to resolve certain merge request conflicts in the GitLab UI. | +| [Revert changes](revert_changes.md) | Revert changes from any commit from within a merge request. | + ## Troubleshooting Sometimes things don't go as expected in a merge request, here are some diff --git a/doc/user/project/milestones/index.md b/doc/user/project/milestones/index.md index eacc1fd12dc..82a63b07d6b 100644 --- a/doc/user/project/milestones/index.md +++ b/doc/user/project/milestones/index.md @@ -20,7 +20,7 @@ Milestones can be used as Agile sprints so that you can track all issues and mer ## Milestones as releases -Similarily, milestones can be used as releases. To do so: +Similarly, milestones can be used as releases. To do so: 1. Set the milestone due date to represent the release date of your release and leave the milestone start date blank. 1. Set the milestone title to the version of your release, such as `Version 9.4`. diff --git a/doc/user/project/new_ci_build_permissions_model.md b/doc/user/project/new_ci_build_permissions_model.md index 5f3bb83df70..d1bb23396e4 100644 --- a/doc/user/project/new_ci_build_permissions_model.md +++ b/doc/user/project/new_ci_build_permissions_model.md @@ -48,7 +48,7 @@ It is important to note that we have a few types of users: via another project's job. - **External users**: CI jobs created by [external users](../permissions.md#external-users-core-only) will have - access only to projects to which user has at least reporter access. This + access only to projects to which the user has at least Reporter access. This rules out accessing all internal projects by default. This allows us to make the CI and permission system more trustworthy. @@ -114,7 +114,7 @@ docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com Using single token had multiple security implications: -- The token would be readable to anyone who had developer access to a project +- The token would be readable to anyone who had Developer access to a project that could run CI jobs, allowing the developer to register any specific Runner for that project. - The token would allow to access only the project's sources, forbidding from diff --git a/doc/user/project/operations/error_tracking.md b/doc/user/project/operations/error_tracking.md index 912d7fdbef5..447d294bef8 100644 --- a/doc/user/project/operations/error_tracking.md +++ b/doc/user/project/operations/error_tracking.md @@ -53,12 +53,31 @@ From error list, users can navigate to the error details page by clicking the ti This page has: - A link to the Sentry issue. +- A link to the GitLab commit if the Sentry [release id/version](https://docs.sentry.io/workflow/releases/?platform=javascript#configure-sdk) on the Sentry Issue's first release matches a commit SHA in your GitLab hosted project. - Other details about the issue, including a full stack trace. -If the error has not been linked to an existing GitLab issue, a 'Create Issue' button will be visible: +By default, a **Create issue** button is displayed. Once you have used it to create an issue, the button is hidden. -![Error Details without Issue Link](img/error_details_v12_6.png) +![Error Details without Issue Link](img/error_details_v12_7.png) -If a link does exist, it will be shown in the details and the 'Create Issue' button will be hidden: +If a link does exist, it will be shown in the details and the 'Create issue' button will change to a 'View issue' button: -![Error Details with Issue Link](img/error_details_with_issue_v12_6.png) +![Error Details with Issue Link](img/error_details_with_issue_v12_7.png) + +## Taking Action on errors + +You can take action on Sentry Errors from within the GitLab UI. + +### Ignoring errors + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/39665) in GitLab 12.7. + +From within the [Error Details](#error-details) page you can ignore a Sentry error by simply clicking the **Ignore** button near the top of the page. + +Ignoring an error will prevent it from appearing in the [Error Tracking List](#error-tracking-list), and will silence notifications that were set up within Sentry. + +### Resolving errors + +From within the [Error Details](#error-details) page you can resolve a Sentry error by simply clicking the **Resolve** button near the top of the page. + +Marking an error as resolved indicates that the error has stopped firing events. If another event occurs, the error reverts to unresolved. diff --git a/doc/user/project/operations/feature_flags.md b/doc/user/project/operations/feature_flags.md index 723f9d69995..4d372721d72 100644 --- a/doc/user/project/operations/feature_flags.md +++ b/doc/user/project/operations/feature_flags.md @@ -1,6 +1,6 @@ # Feature Flags **(PREMIUM)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/11845) in GitLab 11.4. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/7433) in GitLab 11.4. Feature flags allow you to ship a project in different flavors by dynamically toggling certain functionality. @@ -51,7 +51,10 @@ with ability to edit or remove them. To make a feature flag active or inactive, click the pencil icon to edit it, and toggle the status for each [spec](#define-environment-specs). -![Feature flags list](img/feature_flags_list.png) +The toggles next to each feature flag on the list page function as global shutoff switches. +If a toggle is off, that feature flag is disabled for every environment. + +![Feature flags list](img/feature_flags_list_v12_7.png) ## Define environment specs diff --git a/doc/user/project/operations/img/error_details_v12_5.png b/doc/user/project/operations/img/error_details_v12_5.png Binary files differindex 5e3e6300640..f4866141948 100644 --- a/doc/user/project/operations/img/error_details_v12_5.png +++ b/doc/user/project/operations/img/error_details_v12_5.png diff --git a/doc/user/project/operations/img/error_details_v12_6.png b/doc/user/project/operations/img/error_details_v12_6.png Binary files differindex b9152bd2c11..3194d8284d7 100644 --- a/doc/user/project/operations/img/error_details_v12_6.png +++ b/doc/user/project/operations/img/error_details_v12_6.png diff --git a/doc/user/project/operations/img/error_details_v12_7.png b/doc/user/project/operations/img/error_details_v12_7.png Binary files differnew file mode 100644 index 00000000000..1c7ace35e2a --- /dev/null +++ b/doc/user/project/operations/img/error_details_v12_7.png diff --git a/doc/user/project/operations/img/error_details_with_issue_v12_7.png b/doc/user/project/operations/img/error_details_with_issue_v12_7.png Binary files differnew file mode 100644 index 00000000000..aa846ee7220 --- /dev/null +++ b/doc/user/project/operations/img/error_details_with_issue_v12_7.png diff --git a/doc/user/project/operations/img/feature_flags_list.png b/doc/user/project/operations/img/feature_flags_list.png Binary files differdeleted file mode 100644 index f3e85b9ce44..00000000000 --- a/doc/user/project/operations/img/feature_flags_list.png +++ /dev/null diff --git a/doc/user/project/operations/img/feature_flags_list_v12_7.png b/doc/user/project/operations/img/feature_flags_list_v12_7.png Binary files differnew file mode 100644 index 00000000000..a28a844b46d --- /dev/null +++ b/doc/user/project/operations/img/feature_flags_list_v12_7.png diff --git a/doc/user/project/pages/custom_domains_ssl_tls_certification/index.md b/doc/user/project/pages/custom_domains_ssl_tls_certification/index.md index 2f16606c5a8..c427a5dcca8 100644 --- a/doc/user/project/pages/custom_domains_ssl_tls_certification/index.md +++ b/doc/user/project/pages/custom_domains_ssl_tls_certification/index.md @@ -134,7 +134,7 @@ If you're using CloudFlare, check `domain.com` to your GitLab Pages site. Use an `A` record instead. > - **Do not** add any special chars after the default Pages domain. E.g., don't point `subdomain.domain.com` to - or `namespace.gitlab.io/`. Some domain hosting providers may request a trailling dot (`namespace.gitlab.io.`), though. + or `namespace.gitlab.io/`. Some domain hosting providers may request a trailing dot (`namespace.gitlab.io.`), though. > - GitLab Pages IP on GitLab.com [was changed](https://about.gitlab.com/blog/2017/03/06/we-are-changing-the-ip-of-gitlab-pages-on-gitlab-com/) in 2017. > - GitLab Pages IP on GitLab.com [has changed](https://about.gitlab.com/blog/2018/07/19/gcp-move-update/#gitlab-pages-and-custom-domains) from `52.167.214.135` to `35.185.44.232` in 2018. diff --git a/doc/user/project/pages/getting_started/new_or_existing_website.md b/doc/user/project/pages/getting_started/new_or_existing_website.md index 62b5fa33117..49a330ea202 100644 --- a/doc/user/project/pages/getting_started/new_or_existing_website.md +++ b/doc/user/project/pages/getting_started/new_or_existing_website.md @@ -17,7 +17,7 @@ To do so, follow the steps below. [Pages domain names](../getting_started_part_one.md#gitlab-pages-default-domain-names). 1. Clone it to your local computer, add your website files to your project, add, commit and push to GitLab. - Alternativelly, you can run `git init` in your local directory, + Alternatively, you can run `git init` in your local directory, add the remote URL: `git remote add origin git@gitlab.com:namespace/project-name.git`, then add, commit, and push to GitLab. diff --git a/doc/user/project/pages/getting_started_part_four.md b/doc/user/project/pages/getting_started_part_four.md index 27bd9da8d18..263b20ea224 100644 --- a/doc/user/project/pages/getting_started_part_four.md +++ b/doc/user/project/pages/getting_started_part_four.md @@ -1,5 +1,5 @@ --- -last_updated: 2019-06-04 +last_updated: 2020-01-06 type: reference, howto --- @@ -158,7 +158,7 @@ first thing GitLab Runner will look for in your `.gitlab-ci.yml` is a your container to run that script: ```yaml -image: ruby:2.3 +image: ruby:2.7 pages: script: @@ -170,9 +170,9 @@ pages: ``` In this case, you're telling the Runner to pull this image, which -contains Ruby 2.3 as part of its file system. When you don't specify +contains Ruby 2.7 as part of its file system. When you don't specify this image in your configuration, the Runner will use a default -image, which is Ruby 2.1. +image, which is Ruby 2.6. If your SSG needs [NodeJS](https://nodejs.org/) to build, you'll need to specify which image you want to use, and this image should @@ -198,7 +198,7 @@ To do that, we need to add another line to our CI, telling the Runner to only perform that _job_ called `pages` on the `master` branch `only`: ```yaml -image: ruby:2.3 +image: ruby:2.6 pages: script: @@ -221,7 +221,7 @@ and deploy. To specify which stage your _job_ is running, simply add another line to your CI: ```yaml -image: ruby:2.3 +image: ruby:2.6 pages: stage: deploy @@ -244,7 +244,7 @@ let's add another task (_job_) to our CI, telling it to test every push to other branches, `except` the `master` branch: ```yaml -image: ruby:2.3 +image: ruby:2.6 pages: stage: deploy @@ -294,7 +294,7 @@ every single _job_. In our example, notice that we run We don't need to repeat it: ```yaml -image: ruby:2.3 +image: ruby:2.6 before_script: - bundle install @@ -329,7 +329,7 @@ cache Jekyll dependencies in a `vendor` directory when we run `bundle install`: ```yaml -image: ruby:2.3 +image: ruby:2.6 cache: paths: diff --git a/doc/user/project/pages/introduction.md b/doc/user/project/pages/introduction.md index 01e1909f6d6..37b5e77c062 100644 --- a/doc/user/project/pages/introduction.md +++ b/doc/user/project/pages/introduction.md @@ -1,6 +1,6 @@ --- type: reference -last_updated: 2018-06-04 +last_updated: 2020-01-06 --- # Exploring GitLab Pages @@ -156,7 +156,7 @@ Below is a copy of `.gitlab-ci.yml` where the most significant line is the last one, specifying to execute everything in the `pages` branch: ``` -image: ruby:2.1 +image: ruby:2.6 pages: script: diff --git a/doc/user/project/quick_actions.md b/doc/user/project/quick_actions.md index 97ae429a33f..a038dadd7e7 100644 --- a/doc/user/project/quick_actions.md +++ b/doc/user/project/quick_actions.md @@ -68,7 +68,8 @@ The following quick actions are applicable to descriptions, discussions and thre | `/remove_zoom` | ✓ | | | Remove Zoom meeting from this issue. ([Introduced in GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/merge_requests/16609)) | | `/target_branch <local branch name>` | | ✓ | | Set target branch | | `/wip` | | ✓ | | Toggle the Work In Progress status | -| `/approve` | | ✓ | | Approve the merge request | +| `/approve` | | ✓ | | Approve the merge request **(STARTER)** | +| `/submit_review` | | ✓ | | Submit a pending review. ([Introduced in GitLab 12.7](https://gitlab.com/gitlab-org/gitlab/issues/8041)) **(PREMIUM)** | | `/merge` | | ✓ | | Merge (when pipeline succeeds) | | `/child_epic <epic>` | | | ✓ | Add child epic to `<epic>`. The `<epic>` value should be in the format of `&epic`, `group&epic`, or a URL to an epic. ([Introduced in GitLab 12.0](https://gitlab.com/gitlab-org/gitlab/issues/7330)) **(ULTIMATE)** | | `/remove_child_epic <epic>` | | | ✓ | Remove child epic from `<epic>`. The `<epic>` value should be in the format of `&epic`, `group&epic`, or a URL to an epic. ([Introduced in GitLab 12.0](https://gitlab.com/gitlab-org/gitlab/issues/7330)) **(ULTIMATE)** | diff --git a/doc/user/project/releases/img/custom_notifications_dropdown_v12_5.png b/doc/user/project/releases/img/custom_notifications_dropdown_v12_5.png Binary files differnew file mode 100644 index 00000000000..879599a71f5 --- /dev/null +++ b/doc/user/project/releases/img/custom_notifications_dropdown_v12_5.png diff --git a/doc/user/project/releases/img/custom_notifications_new_release_v12_4.png b/doc/user/project/releases/img/custom_notifications_new_release_v12_4.png Binary files differdeleted file mode 100644 index 6b4231d5804..00000000000 --- a/doc/user/project/releases/img/custom_notifications_new_release_v12_4.png +++ /dev/null diff --git a/doc/user/project/releases/img/custom_notifications_new_release_v12_5.png b/doc/user/project/releases/img/custom_notifications_new_release_v12_5.png Binary files differnew file mode 100644 index 00000000000..d136aa710b2 --- /dev/null +++ b/doc/user/project/releases/img/custom_notifications_new_release_v12_5.png diff --git a/doc/user/project/releases/img/edit_release_page_v12_6.png b/doc/user/project/releases/img/edit_release_page_v12_6.png Binary files differindex 8b9c502a2ef..ae7641ac8a5 100644 --- a/doc/user/project/releases/img/edit_release_page_v12_6.png +++ b/doc/user/project/releases/img/edit_release_page_v12_6.png diff --git a/doc/user/project/releases/img/new_tag_12_5.png b/doc/user/project/releases/img/new_tag_12_5.png Binary files differindex 6137ad2ee56..9a6145d71c7 100644 --- a/doc/user/project/releases/img/new_tag_12_5.png +++ b/doc/user/project/releases/img/new_tag_12_5.png diff --git a/doc/user/project/releases/img/release_edit_button_v12_6.png b/doc/user/project/releases/img/release_edit_button_v12_6.png Binary files differindex f60b0ecb1be..8cc080621cf 100644 --- a/doc/user/project/releases/img/release_edit_button_v12_6.png +++ b/doc/user/project/releases/img/release_edit_button_v12_6.png diff --git a/doc/user/project/releases/img/tags_12_5.png b/doc/user/project/releases/img/tags_12_5.png Binary files differindex 4c032f96125..c9673a5232d 100644 --- a/doc/user/project/releases/img/tags_12_5.png +++ b/doc/user/project/releases/img/tags_12_5.png diff --git a/doc/user/project/releases/index.md b/doc/user/project/releases/index.md index 58e028c89be..c253210af46 100644 --- a/doc/user/project/releases/index.md +++ b/doc/user/project/releases/index.md @@ -6,7 +6,7 @@ type: reference, howto > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41766) in GitLab 11.7. -It's typical to create a [Git tag](../../../university/training/topics/tags.md) at +It is typical to create a [Git tag](../../../university/training/topics/tags.md) at the moment of release to introduce a checkpoint in your source code history, but in most cases your users will need compiled objects or other assets output by your CI system to use them, not just the raw source @@ -16,8 +16,12 @@ GitLab's **Releases** are a way to track deliverables in your project. Consider a snapshot in time of the source, build output, and other metadata or artifacts associated with a released version of your code. -At the moment, you can create Release entries via the [Releases API](../../../api/releases/index.md); -we recommend doing this as one of the last steps in your CI/CD release pipeline. +There are several ways to create a Release: + +- In the interface, when you create a new Git tag. +- In the interface, by adding a release note to an existing Git tag. +- Using the [Releases API](../../../api/releases/index.md): we recommend doing this as one of the last + steps in your CI/CD release pipeline. ## Getting started with Releases @@ -38,7 +42,7 @@ Release descriptions are unrelated. Description supports [Markdown](../../markdo You can currently add the following types of assets to each Release: -- [Source code](#source-code): state of the repo at the time of the Release +- [Source code](#source-code): state of the repository at the time of the Release - [Links](#links): to content such as built binaries or documentation GitLab will support more asset types in the future, including objects such @@ -117,11 +121,14 @@ of GitLab. You can be notified by email when a new Release is created for your project. -To subscribe to these notifications, navigate to your **Project**'s landing page, then click on the -bell icon. Choose **Custom** from the dropdown menu. The -following modal window will be then displayed, from which you can select **New release** to complete your subscription to new Releases notifications. +To subscribe to Release notifications: -![Custom notification - New release](img/custom_notifications_new_release_v12_4.png) +1. Navigate to your **Project**'s landing page. +1. Click the bell icon (**Notification setting**). +1. Select **Custom** from the dropdown menu. + ![Custom notification - Dropdown menu](img/custom_notifications_dropdown_v12_5.png) +1. Select **New release**. + ![Custom notification - New release](img/custom_notifications_new_release_v12_5.png) ## Add release notes to Git tags @@ -132,8 +139,9 @@ drag and drop files to it. Release notes are stored in GitLab's database. There are several ways to add release notes: - In the interface, when you create a new Git tag. -- In the interface, by adding a note to an existing Git tag. -- Using the GitLab API. +- In the interface, by adding a release note to an existing Git tag. +- Using the [Releases API](../../../api/releases/index.md): (we recommend doing this as one of the last + steps in your CI/CD release pipeline). To create a new tag, navigate to your project's **Repository > Tags** and click **New tag**. From there, you can fill the form with all the information @@ -154,11 +162,11 @@ parallel. This dataset will be a snapshot this new release (including linked milestones and issues) at moment of creation. Such collection of data will provide a chain of custody and facilitate processes like external audits, for example. -The gathered Evidence data is stored in the database upon creation of a new +The gathered evidence data is stored in the database upon creation of a new release as a JSON object. In GitLab 12.6, a link to -the Evidence data is provided for [each Release](#releases-list). +the evidence data is provided for [each Release](#releases-list). -Here's what this object can look like: +Here is what this object can look like: ```json { @@ -208,6 +216,22 @@ Here's what this object can look like: } ``` +### Enabling Release Evidence display **(CORE ONLY)** + +This feature comes with the `:release_evidence_collection` feature flag +disabled by default in GitLab self-managed instances. To turn it on, +ask a GitLab administrator with Rails console access to run the following +command: + +```ruby +Feature.enable(:release_evidence_collection) +``` + +NOTE: **Note:** +Please note that Release Evidence's data is collected regardless of this +feature flag, which only enables or disables the display of the data on the +Releases page. + <!-- ## Troubleshooting Include any troubleshooting steps that you can foresee. If you know beforehand what issues diff --git a/doc/user/project/repository/file_finder.md b/doc/user/project/repository/file_finder.md index 576001d4305..91e6d2912d1 100644 --- a/doc/user/project/repository/file_finder.md +++ b/doc/user/project/repository/file_finder.md @@ -37,7 +37,7 @@ the `app/controllers/admin/deploy_keys_controller.rb` file. Using fuzzy search, we start by typing letters that get us closer to the file. -**Protip:** To narrow down your search, include `/` in your search terms. +**Tip:** To narrow down your search, include `/` in your search terms. ![Find file button](img/file_finder_find_file.png) diff --git a/doc/user/project/repository/forking_workflow.md b/doc/user/project/repository/forking_workflow.md index 4cf0e458a53..dddabfce4b3 100644 --- a/doc/user/project/repository/forking_workflow.md +++ b/doc/user/project/repository/forking_workflow.md @@ -14,7 +14,7 @@ document more information about using branches to work together. Forking a project is in most cases a two-step process. -1. Click on the fork button located located in between the star and clone buttons on the project's home page. +1. Click on the fork button located in between the star and clone buttons on the project's home page. ![Fork button](img/forking_workflow_fork_button.png) @@ -41,6 +41,10 @@ CAUTION: **CAUTION:** From GitLab 12.6 onwards, if the [visibility of an upstream project is reduced](../../../public_access/public_access.md#reducing-visibility) in any way, the fork relationship with all its forks will be removed. +CAUTION: **Caution:** +[Repository mirroring](repository_mirroring.md) will help to keep your fork synced with the original repository. +Before approving a merge request you'll likely to be asked to sync before getting approval, hence automating it is recommend. + ## Merging upstream Once you are ready to send your code back to the main project, you need diff --git a/doc/user/project/repository/git_blame.md b/doc/user/project/repository/git_blame.md index 454b3f86df9..4b645e4c4bc 100644 --- a/doc/user/project/repository/git_blame.md +++ b/doc/user/project/repository/git_blame.md @@ -23,6 +23,11 @@ noted information: If you hover over a commit in the UI, you'll see a precise date and time for that commit. +![Blame previous commit](img/file_blame_previous_commit_v12_7.png "Blame previous commit") + +To see earlier revisions of a specific line, click **View blame prior to this change** +until you've found the changes you're interested in viewing. + ## Associated `git` command If you're running `git` from the command line, the equivalent command is diff --git a/doc/user/project/repository/img/file_blame_button_v12_6.png b/doc/user/project/repository/img/file_blame_button_v12_6.png Binary files differindex b5a18e6726f..e7aa0d1ea3f 100644 --- a/doc/user/project/repository/img/file_blame_button_v12_6.png +++ b/doc/user/project/repository/img/file_blame_button_v12_6.png diff --git a/doc/user/project/repository/img/file_blame_output_v12_6.png b/doc/user/project/repository/img/file_blame_output_v12_6.png Binary files differindex 4aca40353d5..c1186429917 100644 --- a/doc/user/project/repository/img/file_blame_output_v12_6.png +++ b/doc/user/project/repository/img/file_blame_output_v12_6.png diff --git a/doc/user/project/repository/img/file_blame_previous_commit_v12_7.png b/doc/user/project/repository/img/file_blame_previous_commit_v12_7.png Binary files differnew file mode 100644 index 00000000000..2da9e28c84f --- /dev/null +++ b/doc/user/project/repository/img/file_blame_previous_commit_v12_7.png diff --git a/doc/user/project/repository/img/file_history_button_v12_6.png b/doc/user/project/repository/img/file_history_button_v12_6.png Binary files differindex b5a18e6726f..e7aa0d1ea3f 100644 --- a/doc/user/project/repository/img/file_history_button_v12_6.png +++ b/doc/user/project/repository/img/file_history_button_v12_6.png diff --git a/doc/user/project/repository/img/file_history_output_v12_6.png b/doc/user/project/repository/img/file_history_output_v12_6.png Binary files differindex 9e9855203af..1a84f347a93 100644 --- a/doc/user/project/repository/img/file_history_output_v12_6.png +++ b/doc/user/project/repository/img/file_history_output_v12_6.png diff --git a/doc/user/project/repository/img/repository_mirroring_push_settings.png b/doc/user/project/repository/img/repository_mirroring_push_settings.png Binary files differindex 3c0eacaa2df..d055cc580c4 100644 --- a/doc/user/project/repository/img/repository_mirroring_push_settings.png +++ b/doc/user/project/repository/img/repository_mirroring_push_settings.png diff --git a/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png b/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png Binary files differindex f40cc187b46..1ef210240d4 100644 --- a/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png +++ b/doc/user/project/repository/img/web_editor_new_branch_from_issue_create_button_v12_6.png diff --git a/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png b/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png Binary files differindex d5a92546d40..02cadd5de4c 100644 --- a/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png +++ b/doc/user/project/repository/img/web_editor_new_branch_from_issue_v_12_6.png diff --git a/doc/user/project/repository/repository_mirroring.md b/doc/user/project/repository/repository_mirroring.md index 993c96d2ae4..6da745a8772 100644 --- a/doc/user/project/repository/repository_mirroring.md +++ b/doc/user/project/repository/repository_mirroring.md @@ -22,7 +22,7 @@ There are two kinds of repository mirroring supported by GitLab: When the mirror repository is updated, all new branches, tags, and commits will be visible in the project's activity feed. -Users with at least [developer access](../../permissions.md) to the project can also force an +Users with at least [Developer access](../../permissions.md) to the project can also force an immediate update, unless: - The mirror is already being updated. diff --git a/doc/user/project/service_desk.md b/doc/user/project/service_desk.md index fad4af7102a..e9fce474040 100644 --- a/doc/user/project/service_desk.md +++ b/doc/user/project/service_desk.md @@ -48,43 +48,65 @@ users will only see the thread through email. ## Configuring Service Desk -> **Note:** -Service Desk is enabled on GitLab.com. If you're a -[Silver subscriber](https://about.gitlab.com/pricing/#gitlab-com), -you can skip the step 1 below; you only need to enable it per project. - -1. [Set up incoming email](../../administration/incoming_email.md#set-it-up) for the GitLab instance. This must - support [email sub-addressing](../../administration/incoming_email.md#email-sub-addressing). -1. Navigate to your project's **Settings > General** and scroll down to the **Service Desk** - section. -1. If you have the correct access and a Premium license, - you will see an option to set up Service Desk: - - ![Activate Service Desk option](img/service_desk_disabled.png) - -1. Checking that box will enable Service Desk for the project, and show a - unique email address to email issues to the project. These issues will be - [confidential](issues/confidential_issues.md), so they will only be visible to project members. - - **Warning**: this email address can be used by anyone to create an issue on - this project, whether or not they have access to your GitLab instance. - We recommend **putting this behind an alias** so that it can be changed if - needed, and **[enabling Akismet](../../integration/akismet.md)** on your GitLab instance to add spam - checking to this service. Unblocked email spam would result in many spam +NOTE: **Note:** +Service Desk is enabled on GitLab.com. If you're a [Silver subscriber](https://about.gitlab.com/pricing/#gitlab-com), +you can skip step 1 below; you only need to enable it per project. + +If you have the correct access and a Premium license, you have the option to set up Service Desk. +Follow these steps to do so: + +1. [Set up incoming email](../../administration/incoming_email.md#set-it-up) for the GitLab instance. + This must support [email sub-addressing](../../administration/incoming_email.md#email-sub-addressing). +1. Navigate to your project's **Settings > General** and locate the **Service Desk** section. +1. Enable the **Activate Service Desk** toggle. This reveals a unique email address to email issues + to the project. These issues will be [confidential](issues/confidential_issues.md), so they will + only be visible to project members. Note that in GitLab 11.7, we updated the generated email + address's format. The older format is still supported, however, allowing existing aliases or + contacts to continue working. + + DANGER: **Danger:** + This email address can be used by anyone to create an issue on this project, whether or not they + have access to your GitLab instance. We recommend **putting this behind an alias** so it can be + changed if needed, and **[enabling Akismet](../../integration/akismet.md)** on your GitLab + instance to add spam checking to this service. Unblocked email spam would result in many spam issues being created, and may disrupt your GitLab service. + If you have [templates](description_templates.md) in your repository, you can optionally select + one from the selector menu to append it to all Service Desk issues. + ![Service Desk enabled](img/service_desk_enabled.png) - _In GitLab 11.7, we updated the format of the generated email address. - However the older format is still supported, allowing existing aliases - or contacts to continue working._ +Service Desk is now enabled for this project! You should be able to access it from your project +navigation's **Issues** menu. + +![Service Desk Navigation Item](img/service_desk_nav_item.png) + +### Using customized email templates + + > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/2460) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.7. + +When a user submits a new issue using Service Desk, or when a new note is created on a Service Desk issue, an email is sent to the author. + +The body of these email messages can customized by using templates. To create a new customized template, +create a new Markdown (`.md`) file inside the `.gitlab/service_desk_templates/` +directory in your repository. Commit and push to your default branch. + +#### Thank you email -1. If you have [templates](description_templates.md) in your repository, then you can optionally - select one of these templates from the dropdown to append it to all Service Desk issues. +The **Thank you email** is the email sent to a user after they submit an issue. +The file name of the template has to be `thank_you.md`. +You can use `%{ISSUE_ID}` placeholder which will be replaced by an issue iid in the email and +`%{ISSUE_PATH}` placeholder which will be replaced by project path and the issue iid. +As the service desk issues are created as confidential (only project members can see them) +the response email doesn't provide the issue link. -1. Service Desk is now enabled for this project! You should be able to access it from your project's navigation **Issue submenu**: +#### New note email - ![Service Desk Navigation Item](img/service_desk_nav_item.png) +The **New note email** is the email sent to a user when the issue they submitted has a new comment. +The file name of the template has to be `new_note.md`. +You can use `%{ISSUE_ID}` placeholder which will be replaced by an issue iid +in the email, `%{ISSUE_PATH}` placeholder which will be replaced by + project path and the issue iid and `%{NOTE_TEXT}` placeholder which will be replaced by the note text. ## Using Service Desk diff --git a/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png b/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png Binary files differdeleted file mode 100644 index cf7fdfe4cce..00000000000 --- a/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png +++ /dev/null diff --git a/doc/user/project/settings/import_export.md b/doc/user/project/settings/import_export.md index 9449ab6d10f..f5cfa256f5d 100644 --- a/doc/user/project/settings/import_export.md +++ b/doc/user/project/settings/import_export.md @@ -100,7 +100,7 @@ For more details on the specific data persisted in a project export, see the ![Email download link](img/import_export_mail_link.png) 1. Alternatively, you can come back to the project settings and download the - file from there, or generate a new export. Once the file available, the page + file from there, or generate a new export. Once the file is available, the page should show the **Download export** button: ![Download export](img/import_export_download_export.png) diff --git a/doc/user/project/settings/index.md b/doc/user/project/settings/index.md index 2c7a24da8f9..4e55f55dd28 100644 --- a/doc/user/project/settings/index.md +++ b/doc/user/project/settings/index.md @@ -22,31 +22,65 @@ The project description also partially supports [standard Markdown](../../markdo ### Sharing and permissions -Set up your project's access, [visibility](../../../public_access/public_access.md), and enable [Container Registry](../../packages/container_registry/index.md) for your projects: +For your repository, you can set up features such as public access, repository features, +documentation, access permissions, and more. To do so from your project, +go to **Settings** > **General**, and expand the **Visibility, project features, permissions** +section. -![projects sharing permissions](img/sharing_and_permissions_settings_v12_3.png) +You can now change the [Project visibility](../../../public_access/public_access.md). +If you set **Project Visibility** to public, you can limit access to some features +to **Only Project Members**. In addition, you can select the option to +[Allow users to request access](../members/index.md#project-membership-and-requesting-access). CAUTION: **Caution:** -[Reducing a project's visibility level](../../../public_access/public_access.md#reducing-visibility) -will remove the fork relationship between the project and any forked project. - -If Issues are disabled, or you can't access Issues because you're not a project member, then Labels and Milestones -links will be missing from the sidebar UI. - -You can still access them with direct links if you can access Merge Requests. This is deliberate, if you can see -Issues or Merge Requests, both of which use Labels and Milestones, then you shouldn't be denied access to Labels and Milestones pages. - -Project [Snippets](../../snippets.md) are enabled by default. +If you [reduce a project's visibility level](../../../public_access/public_access.md#reducing-visibility), +that action unlinks all forks of that project. + +Use the switches to enable or disable the following features: + +| Option | More access limit options | Description | +|:----------------------------------|:--------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Issues** | ✓ | Activates the GitLab issues tracker | +| **Repository** | ✓ | Enables [repository](../repository/) functionality | +| **Merge Requests** | ✓ | Enables [merge request](../merge_requests/) functionality; also see [Merge request settings](#merge-request-settings) | +| **Forks** | ✓ | Enables [forking](../index.md#fork-a-project) functionality | +| **Pipelines** | ✓ | Enables [CI/CD](../../../ci/README.md) functionality | +| **Container Registry** | | Activates a [registry](../../packages/container_registry/) for your docker images | +| **Git Large File Storage** | | Enables the use of [large files](../../../administration/lfs/manage_large_binaries_with_git_lfs.md#git-lfs) | +| **Packages** | | Supports configuration of a [package registry](../../../administration/packages/index.md#gitlab-package-registry-administration-premium-only) functionality | +| **Wiki** | ✓ | Enables a separate system for [documentation](../wiki/) | +| **Snippets** | ✓ | Enables [sharing of code and text](../../snippets.md) | +| **Pages** | ✓ | Allows you to [publish static websites](../pages/) | + +Some features depend on others: + +- If you disable the **Issues** option, GitLab also removes the following + features: + - **Issue Boards** + - [**Service Desk**](#service-desk-premium) **(PREMIUM)** + + NOTE: **Note:** + When the **Issues** option is disabled, you can still access **Milestones** + from merge requests. + +- Additionally, if you disable both **Issues** and **Merge Requests**, you will no + longer have access to: + - **Labels** + - **Milestones** + +- If you disable **Repository** functionality, GitLab also disables the following + features for your project: + + - **Merge Requests** + - **Pipelines** + - **Container Registry** + - **Git Large File Storage** + - **Packages** #### Disabling email notifications -You can disable all email notifications related to the project by selecting the -**Disable email notifications** checkbox. Only the project owner is allowed to change -this setting. - -### Issue settings - -Add an [issue description template](../description_templates.md#description-templates) to your project, so that every new issue will start with a custom template. +Project owners can disable all [email notifications](../../profile/notifications.md#gitlab-notification-emails) +related to the project by selecting the **Disable email notifications** checkbox. ### Merge request settings @@ -57,7 +91,8 @@ Set up your project's merge request settings: - Enable [merge request approvals](../merge_requests/merge_request_approvals.md). **(STARTER)** - Enable [merge only if pipeline succeeds](../merge_requests/merge_when_pipeline_succeeds.md). - Enable [merge only when all threads are resolved](../../discussions/index.md#only-allow-merge-requests-to-be-merged-if-all-threads-are-resolved). -- Enable [`delete source branch after merge` option by default](../merge_requests/creating_merge_requests.md#deleting-the-source-branch) +- Enable [`delete source branch after merge` option by default](../merge_requests/getting_started.md#deleting-the-source-branch) +- Configure [suggested changes commit messages](../../discussions/index.md#configure-the-commit-message-for-applied-suggestions) ![project's merge request settings](img/merge_requests_settings.png) diff --git a/doc/user/project/web_ide/img/commit_changes_v12_3.png b/doc/user/project/web_ide/img/commit_changes_v12_3.png Binary files differindex 0ee7da26d1a..e7dffbc7655 100644 --- a/doc/user/project/web_ide/img/commit_changes_v12_3.png +++ b/doc/user/project/web_ide/img/commit_changes_v12_3.png diff --git a/doc/user/project/web_ide/img/review_changes_v12_3.png b/doc/user/project/web_ide/img/review_changes_v12_3.png Binary files differdeleted file mode 100644 index cbc96e3dcd9..00000000000 --- a/doc/user/project/web_ide/img/review_changes_v12_3.png +++ /dev/null diff --git a/doc/user/project/web_ide/index.md b/doc/user/project/web_ide/index.md index ee96fca7fd1..8f2314bf31f 100644 --- a/doc/user/project/web_ide/index.md +++ b/doc/user/project/web_ide/index.md @@ -46,12 +46,16 @@ Single file editing is based on the [Ace Editor](https://ace.c9.io). ## Stage and commit changes After making your changes, click the **Commit** button in the bottom left to -review the list of changed files. Click on each file to review the changes and -click the tick icon to stage the file. +review the list of changed files. If you're using GitLab 12.6 or older versions, +click on each file to review the changes and tick the item to stage a file. -![Review changes](img/review_changes_v12_3.png) +From [GitLab 12.7 onwards](https://gitlab.com/gitlab-org/gitlab/issues/33441), +all your files will be automatically staged. You still have the option to unstage +changes in case you want to submit them in multiple smaller commits. To unstage +a change, simply click the **Unstage** button when a staged file is open, or click +the undo icon next to **Staged changes** to unstage all changes. -Once you have staged some changes, you can add a commit message, commit the +Once you have finalized your changes, you can add a commit message, commit the staged changes and directly create a merge request. In case you don't have write access to the selected branch, you will see a warning, but still be able to create a new branch and start a merge request. diff --git a/doc/user/project/wiki/index.md b/doc/user/project/wiki/index.md index 687e1850289..80f5823c095 100644 --- a/doc/user/project/wiki/index.md +++ b/doc/user/project/wiki/index.md @@ -38,7 +38,7 @@ automatically. For example, a title of `docs/my-page` will create a wiki page with a path `/wikis/docs/my-page`. Once you enter the page name, it's time to fill in its content. GitLab wikis -support Markdown, RDoc and AsciiDoc. For Markdown based pages, all the +support Markdown, RDoc, AsciiDoc and Org. For Markdown based pages, all the [Markdown features](../../markdown.md) are supported and for links there is some [wiki specific](../../markdown.md#wiki-specific-markdown) behavior. |