diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-06 00:09:36 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-06 00:09:36 +0000 |
commit | 5d86ca3d06924e9c0b99be18237ae1e3a805329d (patch) | |
tree | c268623929277caf28de5aa34c77d5efdee82f71 | |
parent | 5875e92ecfd43a6b5379bdc30c79eba6981d3bf8 (diff) | |
download | gitlab-ce-5d86ca3d06924e9c0b99be18237ae1e3a805329d.tar.gz |
Add latest changes from gitlab-org/gitlab@master
24 files changed, 108 insertions, 406 deletions
diff --git a/app/assets/javascripts/notes/components/noteable_note.vue b/app/assets/javascripts/notes/components/noteable_note.vue index 0ba5465411d..095ab5ddb0f 100644 --- a/app/assets/javascripts/notes/components/noteable_note.vue +++ b/app/assets/javascripts/notes/components/noteable_note.vue @@ -259,7 +259,7 @@ export default { }); const confirmed = await confirmAction(msg, { primaryBtnVariant: 'danger', - primaryBtnText: this.note.confidential ? __('Delete Internal Note') : __('Delete Comment'), + primaryBtnText: this.note.confidential ? __('Delete internal note') : __('Delete comment'), }); if (confirmed) { diff --git a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue index 5471cda0cc5..0127df730b8 100644 --- a/app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue +++ b/app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/dropdown_contents.vue @@ -193,7 +193,7 @@ export default { <gl-dropdown ref="dropdown" :text="buttonText" - class="gl-w-full gl-mt-2" + class="gl-w-full" data-testid="labels-select-dropdown-contents" data-qa-selector="labels_dropdown_content" @hide="handleDropdownHide" diff --git a/app/assets/javascripts/vue_shared/components/user_popover/user_popover.vue b/app/assets/javascripts/vue_shared/components/user_popover/user_popover.vue index 768cd005727..a0d8ca117a4 100644 --- a/app/assets/javascripts/vue_shared/components/user_popover/user_popover.vue +++ b/app/assets/javascripts/vue_shared/components/user_popover/user_popover.vue @@ -7,13 +7,13 @@ import { GlSafeHtmlDirective, GlSprintf, GlButton, + GlAvatarLabeled, } from '@gitlab/ui'; import { __ } from '~/locale'; -import UserNameWithStatus from '~/sidebar/components/assignees/user_name_with_status.vue'; import { glEmojiTag } from '~/emoji'; import createFlash from '~/flash'; import { followUser, unfollowUser } from '~/rest_api'; -import UserAvatarImage from '../user_avatar/user_avatar_image.vue'; +import { isUserBusy } from '~/set_status_modal/utils'; import { USER_POPOVER_DELAY } from './constants'; const MAX_SKELETON_LINES = 4; @@ -22,15 +22,17 @@ export default { name: 'UserPopover', maxSkeletonLines: MAX_SKELETON_LINES, USER_POPOVER_DELAY, + i18n: { + busy: __('Busy'), + }, components: { GlIcon, GlLink, GlPopover, GlSkeletonLoader, - UserAvatarImage, - UserNameWithStatus, GlSprintf, GlButton, + GlAvatarLabeled, }, directives: { SafeHtml: GlSafeHtmlDirective, @@ -95,6 +97,15 @@ export default { toggleFollowButtonVariant() { return this.user?.isFollowed ? 'default' : 'confirm'; }, + hasPronouns() { + return Boolean(this.user?.pronouns?.trim()); + }, + isBusy() { + return isUserBusy(this.availabilityStatus); + }, + username() { + return `@${this.user?.username}`; + }, }, methods: { async toggleFollow() { @@ -149,43 +160,46 @@ export default { :placement="placement" boundary="viewport" triggers="hover focus manual" + data-testid="user-popover" > - <div class="gl-py-3 gl-line-height-normal gl-display-flex" data-testid="user-popover"> - <div class="gl-mr-4 gl-flex-shrink-0"> - <user-avatar-image :img-src="user.avatarUrl" :size="64" css-classes="gl-m-0!" /> + <div class="gl-mb-3"> + <div v-if="userIsLoading" class="gl-w-20"> + <gl-skeleton-loader :width="160" :height="64"> + <rect x="70" y="19" rx="3" ry="3" width="88" height="9" /> + <rect x="70" y="36" rx="3" ry="3" width="64" height="8" /> + <circle cx="32" cy="32" r="32" /> + </gl-skeleton-loader> </div> - <div class="gl-w-full gl-word-break-word gl-display-flex gl-align-items-center"> - <template v-if="userIsLoading"> - <gl-skeleton-loader - :lines="$options.maxSkeletonLines" - preserve-aspect-ratio="none" - equal-width-lines - :height="52" - /> - </template> - <template v-else> - <div> - <h5 class="gl-m-0"> - <user-name-with-status - :name="user.name" - :availability="availabilityStatus" - :pronouns="user.pronouns" - /> - </h5> - <span class="gl-text-gray-500">@{{ user.username }}</span> - <div v-if="shouldRenderToggleFollowButton" class="gl-mt-3"> - <gl-button - :variant="toggleFollowButtonVariant" - :loading="toggleFollowLoading" - size="small" - data-testid="toggle-follow-button" - @click="toggleFollow" - >{{ toggleFollowButtonText }}</gl-button - > - </div> - </div> + <gl-avatar-labeled + v-else + :size="64" + :src="user.avatarUrl" + :label="user.name" + :sub-label="username" + > + <gl-button + v-if="shouldRenderToggleFollowButton" + class="gl-mt-3 gl-align-self-start" + :variant="toggleFollowButtonVariant" + :loading="toggleFollowLoading" + size="small" + data-testid="toggle-follow-button" + @click="toggleFollow" + >{{ toggleFollowButtonText }}</gl-button + > + + <template #meta> + <span + v-if="hasPronouns" + class="gl-text-gray-500 gl-font-sm gl-font-weight-normal gl-p-1" + data-testid="user-popover-pronouns" + >({{ user.pronouns }})</span + > + <span v-if="isBusy" class="gl-text-gray-500 gl-font-sm gl-font-weight-normal gl-p-1" + >({{ $options.i18n.busy }})</span + > </template> - </div> + </gl-avatar-labeled> </div> <div class="gl-mt-2 gl-w-full gl-word-break-word"> <template v-if="userIsLoading"> diff --git a/app/services/auto_merge/base_service.rb b/app/services/auto_merge/base_service.rb index 2a32f0c74ac..9e49bd86ec0 100644 --- a/app/services/auto_merge/base_service.rb +++ b/app/services/auto_merge/base_service.rb @@ -63,21 +63,6 @@ module AutoMerge end end - ## - # NOTE: This method is to be removed when `disallow_to_create_merge_request_pipelines_in_target_project` - # feature flag is removed. - def self.can_add_to_merge_train?(merge_request) - if ::Feature.enabled?(:ci_disallow_to_create_merge_request_pipelines_in_target_project, merge_request.target_project) - merge_request.for_same_project? - else - true - end - end - - def can_add_to_merge_train?(merge_request) - self.class.can_add_to_merge_train?(merge_request) - end - private # Overridden in child classes diff --git a/app/services/merge_requests/create_pipeline_service.rb b/app/services/merge_requests/create_pipeline_service.rb index 37c734613e7..c6a91a3b61e 100644 --- a/app/services/merge_requests/create_pipeline_service.rb +++ b/app/services/merge_requests/create_pipeline_service.rb @@ -50,12 +50,8 @@ module MergeRequests end def can_create_pipeline_in_target_project?(merge_request) - if ::Feature.enabled?(:ci_disallow_to_create_merge_request_pipelines_in_target_project, merge_request.target_project) - merge_request.for_same_project? - else - can?(current_user, :create_pipeline, merge_request.target_project) && - can_update_source_branch_in_target_project?(merge_request) - end + can?(current_user, :create_pipeline, merge_request.target_project) && + can_update_source_branch_in_target_project?(merge_request) end def can_update_source_branch_in_target_project?(merge_request) diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index a2180dc68a6..5cea000c980 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -9,7 +9,7 @@ %br = _('After a successful password update you will be redirected to login screen.') - = form_errors(@user) + = form_errors(@user, pajamas_alert: true) - unless @user.password_automatically_set? .form-group.row diff --git a/config/feature_flags/development/ci_disallow_to_create_merge_request_pipelines_in_target_project.yml b/config/feature_flags/development/ci_disallow_to_create_merge_request_pipelines_in_target_project.yml deleted file mode 100644 index 3962af65540..00000000000 --- a/config/feature_flags/development/ci_disallow_to_create_merge_request_pipelines_in_target_project.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: ci_disallow_to_create_merge_request_pipelines_in_target_project -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40724 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/235119 -milestone: '13.4' -type: development -group: group::release -default_enabled: false diff --git a/doc/administration/auth/index.md b/doc/administration/auth/index.md index ad8d78fdfd6..559fe2cb2fe 100644 --- a/doc/administration/auth/index.md +++ b/doc/administration/auth/index.md @@ -25,13 +25,15 @@ UltraAuth has removed their software which supports OmniAuth integration. We hav The external authentication and authorization providers may support the following capabilities. For more information, see the links shown on this page for each external provider. -| Capability | SaaS | Self-Managed | +| Capability | SaaS | Self-managed | |-------------------------------------------------|-----------------------------------------|------------------------------------| -| **User Provisioning** | SCIM<br>Just-In-Time (JIT) Provisioning | LDAP Sync | +| **User Provisioning** | SCIM<br>SAML <sup>1</sup> | LDAP <sup>1</sup><br>SAML <sup>1</sup><br>[OmniAuth Providers](../../integration/omniauth.md#supported-providers) <sup>1</sup> | | **User Detail Updating** (not group management) | Not Available | LDAP Sync | -| **Authentication** | SAML at top-level group (1 provider) | LDAP (multiple providers)<br>Generic OAuth2<br>SAML (only 1 permitted per unique provider)<br>Kerberos<br>JWT<br>Smartcard<br>OmniAuth Providers (only 1 permitted per unique provider) | +| **Authentication** | SAML at top-level group (1 provider) | LDAP (multiple providers)<br>Generic OAuth2<br>SAML (only 1 permitted per unique provider)<br>Kerberos<br>JWT<br>Smartcard<br>[OmniAuth Providers](../../integration/omniauth.md#supported-providers) (only 1 permitted per unique provider) | | **Provider-to-GitLab Role Sync** | SAML Group Sync | LDAP Group Sync<br>SAML Group Sync ([GitLab 15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/285150) and later) | -| **User Removal** | SCIM (remove user from top-level group) | LDAP (Blocking User from Instance) | +| **User Removal** | SCIM (remove user from top-level group) | LDAP (remove user from groups and block from the instance) | + +1. Using Just-In-Time (JIT) provisioning, user accounts are created when the user first signs in. ## Change apps or configuration diff --git a/doc/administration/geo/secondary_proxy/index.md b/doc/administration/geo/secondary_proxy/index.md index 9a1aab8c238..e8c290e197b 100644 --- a/doc/administration/geo/secondary_proxy/index.md +++ b/doc/administration/geo/secondary_proxy/index.md @@ -124,7 +124,7 @@ sudo gitlab-rails runner "Feature.disable(:geo_secondary_proxy_separate_urls)" ``` In Kubernetes, you can run the same command in the toolbox pod. Refer to the -[Kubernetes cheat sheet](../../troubleshooting/kubernetes_cheat_sheet.md#gitlab-specific-kubernetes-information) +[Kubernetes cheat sheet](https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html#gitlab-specific-kubernetes-information) for details. ## Limitations diff --git a/doc/administration/index.md b/doc/administration/index.md index 6b2910a2d62..c1fcb6f6298 100644 --- a/doc/administration/index.md +++ b/doc/administration/index.md @@ -231,7 +231,7 @@ who are aware of the risks. - [Diagnostics tools](troubleshooting/diagnostics_tools.md) - [Linux commands](troubleshooting/linux_cheat_sheet.md) -- [Troubleshooting Kubernetes](troubleshooting/kubernetes_cheat_sheet.md) +- [Troubleshooting Kubernetes](https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html) - [Troubleshooting PostgreSQL](troubleshooting/postgresql.md) - [Guide to test environments](troubleshooting/test_environments.md) (for Support Engineers) - [GitLab Rails console commands](troubleshooting/gitlab_rails_cheat_sheet.md) (for Support Engineers) diff --git a/doc/administration/operations/rails_console.md b/doc/administration/operations/rails_console.md index 8778b2a8a36..d6500bc25ae 100644 --- a/doc/administration/operations/rails_console.md +++ b/doc/administration/operations/rails_console.md @@ -39,7 +39,7 @@ sudo -u git -H bundle exec rails console -e production **For Kubernetes deployments** -The console is in the toolbox pod. Refer to our [Kubernetes cheat sheet](../troubleshooting/kubernetes_cheat_sheet.md#gitlab-specific-kubernetes-information) for details. +The console is in the toolbox pod. Refer to our [Kubernetes cheat sheet](https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html#gitlab-specific-kubernetes-information) for details. To exit the console, type: `quit`. diff --git a/doc/administration/troubleshooting/index.md b/doc/administration/troubleshooting/index.md index 12f86cfa78c..495c2870ca6 100644 --- a/doc/administration/troubleshooting/index.md +++ b/doc/administration/troubleshooting/index.md @@ -17,7 +17,7 @@ installation. - [Sidekiq](sidekiq.md) - [GitLab Rails console cheat sheet](gitlab_rails_cheat_sheet.md) - [Group SAML and SCIM troubleshooting](group_saml_scim.md) **(PREMIUM SAAS)** -- [Kubernetes cheat sheet](kubernetes_cheat_sheet.md) +- [Kubernetes cheat sheet](https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html) - [Linux cheat sheet](linux_cheat_sheet.md) - [Parsing GitLab logs with `jq`](log_parsing.md) - [Diagnostics tools](diagnostics_tools.md) diff --git a/doc/administration/troubleshooting/kubernetes_cheat_sheet.md b/doc/administration/troubleshooting/kubernetes_cheat_sheet.md index 0c93d1ab3ee..15ec8d5940b 100644 --- a/doc/administration/troubleshooting/kubernetes_cheat_sheet.md +++ b/doc/administration/troubleshooting/kubernetes_cheat_sheet.md @@ -1,295 +1,11 @@ --- -stage: Systems -group: Distribution -info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments -type: reference +redirect_to: 'https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html' +remove_date: '2022-10-05' --- -# Kubernetes, GitLab, and you **(FREE SELF)** +This document was moved to [another location](https://docs.gitlab.com/charts/troubleshooting/kubernetes_cheat_sheet.html). -This is a list of useful information regarding Kubernetes that the GitLab Support -Team sometimes uses while troubleshooting. GitLab is making this public, so that anyone -can make use of the Support team's collected knowledge - -WARNING: -These commands **can alter or break** your Kubernetes components so use these at your own risk. - -If you are on a [paid tier](https://about.gitlab.com/pricing/) and are not sure how -to use these commands, it is best to [contact Support](https://about.gitlab.com/support/) -and they will assist you with any issues you are having. - -## Generic Kubernetes commands - -- How to authorize to your GCP project (can be especially useful if you have projects - under different GCP accounts): - - ```shell - gcloud auth login - ``` - -- How to access Kubernetes dashboard: - - ```shell - # for minikube: - minikube dashboard —url - # for non-local installations if access via Kubectl is configured: - kubectl proxy - ``` - -- How to SSH to a Kubernetes node and enter the container as root - <https://github.com/kubernetes/kubernetes/issues/30656>: - - - For GCP, you may find the node name and run `gcloud compute ssh node-name`. - - List containers using `docker ps`. - - Enter container using `docker exec --user root -ti container-id bash`. - -- How to copy a file from local machine to a pod: - - ```shell - kubectl cp file-name pod-name:./destination-path - ``` - -- What to do with pods in `CrashLoopBackoff` status: - - - Check logs via Kubernetes dashboard. - - Check logs via Kubectl: - - ```shell - kubectl logs <webservice pod> -c dependencies - ``` - -- How to tail all Kubernetes cluster events in real time: - - ```shell - kubectl get events -w --all-namespaces - ``` - -- How to get logs of the previously terminated pod instance: - - ```shell - kubectl logs <pod-name> --previous - ``` - - No logs are kept in the containers/pods themselves. Everything is written to `stdout`. - This is the principle of Kubernetes, read [Twelve-factor app](https://12factor.net/) - for details. - -- How to get cron jobs configured on a cluster - - ```shell - kubectl get cronjobs - ``` - - When one configures [cron-based backups](https://docs.gitlab.com/charts/backup-restore/backup.html#cron-based-backup), - you will be able to see the new schedule here. Some details about the schedules can be found - in [Running Automated Tasks with a CronJob](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#creating-a-cron-job) - -## GitLab-specific Kubernetes information - -- Minimal configuration that can be used to [test a Kubernetes Helm chart](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/620). - -- Tailing logs of a separate pod. An example for a `webservice` pod: - - ```shell - kubectl logs gitlab-webservice-54fbf6698b-hpckq -c webservice - ``` - -- Tail and follow all pods that share a label (in this case, `webservice`): - - ```shell - # all containers in the webservice pods - kubectl logs -f -l app=webservice --all-containers=true --max-log-requests=50 - - # only the webservice containers in all webservice pods - kubectl logs -f -l app=webservice -c webservice --max-log-requests=50 - ``` - -- One can stream logs from all containers at once, similar to the Omnibus - command `gitlab-ctl tail`: - - ```shell - kubectl logs -f -l release=gitlab --all-containers=true --max-log-requests=100 - ``` - -- Check all events in the `gitlab` namespace (the namespace name can be different if you - specified a different one when deploying the Helm chart): - - ```shell - kubectl get events -w --namespace=gitlab - ``` - -- Most of the useful GitLab tools (console, Rake tasks, etc) are found in the toolbox - pod. You may enter it and run commands inside or run them from the outside. - - NOTE: - The `task-runner` pod was renamed to `toolbox` in GitLab 14.2 (charts 5.2). - - ```shell - # find the pod - kubectl --namespace gitlab get pods -lapp=toolbox - - # enter it - kubectl exec -it <toolbox-pod-name> -- bash - - # open rails console - # rails console can be also called from other GitLab pods - /srv/gitlab/bin/rails console - - # source-style commands should also work - cd /srv/gitlab && bundle exec rake gitlab:check RAILS_ENV=production - - # run GitLab check. The output can be confusing and invalid because of the specific structure of GitLab installed via helm chart - /usr/local/bin/gitlab-rake gitlab:check - - # open console without entering pod - kubectl exec -it <toolbox-pod-name> -- /srv/gitlab/bin/rails console - - # check the status of DB migrations - kubectl exec -it <toolbox-pod-name> -- /usr/local/bin/gitlab-rake db:migrate:status - ``` - - You can also use `gitlab-rake`, instead of `/usr/local/bin/gitlab-rake`. - -- Troubleshooting **Infrastructure > Kubernetes clusters** integration: - - - Check the output of `kubectl get events -w --all-namespaces`. - - Check the logs of pods within `gitlab-managed-apps` namespace. - - On the side of GitLab check Sidekiq log and Kubernetes log. When GitLab is installed - via Helm Chart, `kubernetes.log` can be found inside the Sidekiq pod. - -- How to get your initial administrator password <https://docs.gitlab.com/charts/installation/deployment.html#initial-login>: - - ```shell - # find the name of the secret containing the password - kubectl get secrets | grep initial-root - # decode it - kubectl get secret <secret-name> -ojsonpath={.data.password} | base64 --decode ; echo - ``` - -- How to connect to a GitLab PostgreSQL database. - - NOTE: - The `task-runner` pod was renamed to `toolbox` in GitLab 14.2 (charts 5.2). - - In GitLab 14.2 (chart 5.2) and later: - - ```shell - kubectl exec -it <toolbox-pod-name> -- /srv/gitlab/bin/rails dbconsole --include-password --database main - ``` - - In GitLab 14.1 (chart 5.1) and earlier: - - ```shell - kubectl exec -it <task-runner-pod-name> -- /srv/gitlab/bin/rails dbconsole --include-password - ``` - -- How to get information about Helm installation status: - - ```shell - helm status name-of-installation - ``` - -- How to update GitLab installed using Helm Chart: - - ```shell - helm repo upgrade - - # get current values and redirect them to yaml file (analogue of gitlab.rb values) - helm get values <release name> > gitlab.yaml - - # run upgrade itself - helm upgrade <release name> <chart path> -f gitlab.yaml - ``` - - After <https://gitlab.com/gitlab-org/charts/gitlab/-/issues/780> is fixed, it should - be possible to use [Updating GitLab using the Helm Chart](https://docs.gitlab.com/charts/index.html#updating-gitlab-using-the-helm-chart) - for upgrades. - -- How to apply changes to GitLab configuration: - - - Modify the `gitlab.yaml` file. - - Run the following command to apply changes: - - ```shell - helm upgrade <release name> <chart path> -f gitlab.yaml - ``` - -- How to get the manifest for a release. It can be useful because it contains the information about -all Kubernetes resources and dependent charts: - - ```shell - helm get manifest <release name> - ``` - -## Installation of minimal GitLab configuration via minikube on macOS - -This section is based on [Developing for Kubernetes with minikube](https://docs.gitlab.com/charts/development/minikube/index.html) -and [Helm](https://docs.gitlab.com/charts/installation/tools.html#helm). Refer -to those documents for details. - -- Install Kubectl via Homebrew: - - ```shell - brew install kubernetes-cli - ``` - -- Install minikube via Homebrew: - - ```shell - brew cask install minikube - ``` - -- Start minikube and configure it. If minikube cannot start, try running `minikube delete && minikube start` - and repeat the steps: - - ```shell - minikube start --cpus 3 --memory 8192 # minimum amount for GitLab to work - minikube addons enable ingress - ``` - -- Install Helm via Homebrew and initialize it: - - ```shell - brew install helm - ``` - -- Copy the [minikube minimum values YAML file](https://gitlab.com/gitlab-org/charts/gitlab/raw/master/examples/values-minikube-minimum.yaml) - to your workstation: - - ```shell - curl --output values.yaml "https://gitlab.com/gitlab-org/charts/gitlab/raw/master/examples/values-minikube-minimum.yaml" - ``` - -- Find the IP address in the output of `minikube ip` and update the YAML file with - this IP address. - -- Install the GitLab Helm Chart: - - ```shell - helm repo add gitlab https://charts.gitlab.io - helm install gitlab -f <path-to-yaml-file> gitlab/gitlab - ``` - - If you want to modify some GitLab settings, you can use the above-mentioned configuration - as a base and create your own YAML file. - -- Monitor the installation progress via `helm status gitlab` and `minikube dashboard`. - The installation could take up to 20-30 minutes depending on the amount of resources - on your workstation. - -- When all the pods show either a `Running` or `Completed` status, get the GitLab password as - described in [Initial login](https://docs.gitlab.com/charts/installation/deployment.html#initial-login), - and log in to GitLab via the UI. It will be accessible via `https://gitlab.domain` - where `domain` is the value provided in the YAML file. - -<!-- ## Troubleshooting - -Include any troubleshooting steps that you can foresee. If you know beforehand what issues -one might have when setting this up, or when something is changed, or on upgrading, it's -important to describe those, too. Think of things that may go wrong and include them here. -This is important to minimize requests for support, and to avoid doc comments with -questions that you know someone might ask. - -Each scenario can be a third-level heading, e.g. `### Getting error message X`. -If you have none to add when creating a doc, leave this section in place -but commented out to help encourage others to add to it in the future. --> +<!-- This redirect file can be deleted after 2022-10-05. --> +<!-- Redirects that point to other docs in the same project expire in three months. --> +<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. --> +<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> diff --git a/doc/user/compliance/license_compliance/index.md b/doc/user/compliance/license_compliance/index.md index 659c0326728..38168a8f62e 100644 --- a/doc/user/compliance/license_compliance/index.md +++ b/doc/user/compliance/license_compliance/index.md @@ -35,8 +35,7 @@ compliance report is shown properly. The results are saved as a [License Compliance report artifact](../../../ci/yaml/artifacts_reports.md#artifactsreportslicense_scanning) -that you can later download and analyze. Due to implementation limitations, we -always take the latest License Compliance artifact available. +that you can later download and analyze. WARNING: License Compliance Scanning does not support run-time installation of compilers and interpreters. diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 91df755949a..89b8dea03ca 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -724,6 +724,9 @@ msgstr "" msgid "%{labelStart}Crash State:%{labelEnd} %{stacktrace_snippet}" msgstr "" +msgid "%{labelStart}Crash Type:%{labelEnd} %{crash_type}" +msgstr "" + msgid "%{labelStart}Evidence:%{labelEnd} %{evidence}" msgstr "" @@ -12244,9 +12247,6 @@ msgstr "" msgid "Delete File" msgstr "" -msgid "Delete Internal Note" -msgstr "" - msgid "Delete Key" msgstr "" @@ -12292,6 +12292,9 @@ msgstr "" msgid "Delete image repository" msgstr "" +msgid "Delete internal note" +msgstr "" + msgid "Delete label" msgstr "" diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb index 9c4fb9a426b..fafaea8ac68 100644 --- a/spec/features/merge_request/batch_comments_spec.rb +++ b/spec/features/merge_request/batch_comments_spec.rb @@ -51,7 +51,7 @@ RSpec.describe 'Merge request > Batch comments', :js do find('.js-note-delete').click page.within('.modal') do - click_button('Delete Comment', match: :first) + click_button('Delete comment', match: :first) end wait_for_requests diff --git a/spec/features/merge_request/user_comments_on_diff_spec.rb b/spec/features/merge_request/user_comments_on_diff_spec.rb index 06b29969775..f21929e5275 100644 --- a/spec/features/merge_request/user_comments_on_diff_spec.rb +++ b/spec/features/merge_request/user_comments_on_diff_spec.rb @@ -253,7 +253,7 @@ RSpec.describe 'User comments on a diff', :js do end page.within('.modal') do - click_button('Delete Comment', match: :first) + click_button('Delete comment', match: :first) end page.within('.merge-request-tabs') do diff --git a/spec/features/merge_request/user_posts_diff_notes_spec.rb b/spec/features/merge_request/user_posts_diff_notes_spec.rb index 8a310aba77b..d461170c990 100644 --- a/spec/features/merge_request/user_posts_diff_notes_spec.rb +++ b/spec/features/merge_request/user_posts_diff_notes_spec.rb @@ -103,7 +103,7 @@ RSpec.describe 'Merge request > User posts diff notes', :js do it 'allows commenting' do should_allow_commenting(find_by_scrolling('[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_10_9"]')) - accept_gl_confirm(button_text: 'Delete Comment') do + accept_gl_confirm(button_text: 'Delete comment') do first('button.more-actions-toggle').click first('.js-note-delete').click end diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb index 0e9ff98c3e1..8225fcbfd89 100644 --- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb +++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb @@ -124,7 +124,7 @@ RSpec.describe 'Merge request > User sees avatars on diff notes', :js do it 'removes avatar when note is deleted' do open_more_actions_dropdown(note) - accept_gl_confirm(button_text: 'Delete Comment') do + accept_gl_confirm(button_text: 'Delete comment') do find(".note-row-#{note.id} .js-note-delete").click end diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb index 9696b1ff551..16b1de0393f 100644 --- a/spec/features/merge_request/user_sees_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_spec.rb @@ -123,10 +123,6 @@ RSpec.describe 'Merge request > User sees pipelines', :js do context 'when actor is a developer in parent project' do let(:actor) { developer_in_parent } - before do - stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) - end - it 'creates a pipeline in the parent project when user proceeds with the warning' do visit project_merge_request_path(parent_project, merge_request) diff --git a/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js b/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js index a54f3450633..9550368eefc 100644 --- a/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js +++ b/spec/frontend/vue_shared/components/user_popover/user_popover_spec.js @@ -2,7 +2,6 @@ import { GlSkeletonLoader, GlIcon } from '@gitlab/ui'; import { loadHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import { AVAILABILITY_STATUS } from '~/set_status_modal/utils'; -import UserNameWithStatus from '~/sidebar/components/assignees/user_name_with_status.vue'; import UserPopover from '~/vue_shared/components/user_popover/user_popover.vue'; import axios from '~/lib/utils/axios_utils'; import createFlash from '~/flash'; @@ -48,7 +47,6 @@ describe('User Popover Component', () => { const findUserStatus = () => wrapper.findByTestId('user-popover-status'); const findTarget = () => document.querySelector('.js-user-link'); - const findUserName = () => wrapper.find(UserNameWithStatus); const findSecurityBotDocsLink = () => wrapper.findByTestId('user-popover-bot-docs-link'); const findUserLocalTime = () => wrapper.findByTestId('user-popover-local-time'); const findToggleFollowButton = () => wrapper.findByTestId('toggle-follow-button'); @@ -245,9 +243,7 @@ describe('User Popover Component', () => { createWrapper({ user }); - expect(findUserName().exists()).toBe(true); - expect(wrapper.text()).toContain(user.name); - expect(wrapper.text()).toContain('(Busy)'); + expect(wrapper.findByText('(Busy)').exists()).toBe(true); }); it('should hide the busy status for any other status', () => { @@ -258,13 +254,32 @@ describe('User Popover Component', () => { createWrapper({ user }); - expect(wrapper.text()).not.toContain('(Busy)'); + expect(wrapper.findByText('(Busy)').exists()).toBe(false); }); - it('passes `pronouns` prop to `UserNameWithStatus` component', () => { + it('shows pronouns when user has them set', () => { createWrapper(); - expect(findUserName().props('pronouns')).toBe('they/them'); + expect(wrapper.findByText('(they/them)').exists()).toBe(true); + }); + + describe.each` + pronouns + ${undefined} + ${null} + ${''} + ${' '} + `('when pronouns are set to $pronouns', ({ pronouns }) => { + it('does not render pronouns', () => { + const user = { + ...DEFAULT_PROPS.user, + pronouns, + }; + + createWrapper({ user }); + + expect(wrapper.findByTestId('user-popover-pronouns').exists()).toBe(false); + }); }); }); diff --git a/spec/services/merge_requests/create_pipeline_service_spec.rb b/spec/services/merge_requests/create_pipeline_service_spec.rb index 08ad05b54da..03a37ea59a3 100644 --- a/spec/services/merge_requests/create_pipeline_service_spec.rb +++ b/spec/services/merge_requests/create_pipeline_service_spec.rb @@ -13,7 +13,6 @@ RSpec.describe MergeRequests::CreatePipelineService do let(:params) { {} } before do - stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) project.add_developer(user) end @@ -92,16 +91,6 @@ RSpec.describe MergeRequests::CreatePipelineService do end end end - - context 'when ci_disallow_to_create_merge_request_pipelines_in_target_project feature flag is enabled' do - before do - stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: true) - end - - it 'creates a pipeline in the source project' do - expect(response.payload.project).to eq(source_project) - end - end end context 'when actor has permission to create pipelines in forked project' do diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb index c0c56a72192..9c9bcb79990 100644 --- a/spec/services/merge_requests/create_service_spec.rb +++ b/spec/services/merge_requests/create_service_spec.rb @@ -212,7 +212,6 @@ RSpec.describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do end before do - stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) target_project.add_developer(user2) target_project.add_maintainer(user) end diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb index 0dcda7e6ae5..4b7dd84474a 100644 --- a/spec/services/merge_requests/refresh_service_spec.rb +++ b/spec/services/merge_requests/refresh_service_spec.rb @@ -286,10 +286,6 @@ RSpec.describe MergeRequests::RefreshService do context 'when service runs on forked project' do let(:project) { @fork_project } - before do - stub_feature_flags(ci_disallow_to_create_merge_request_pipelines_in_target_project: false) - end - it 'creates detached merge request pipeline for fork merge request' do expect { subject } .to change { @fork_merge_request.pipelines_for_merge_request.count }.by(1) |