diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb
index d1a919fc01a..5ad382d8670 100644
--- a/app/models/application_setting_implementation.rb
+++ b/app/models/application_setting_implementation.rb
@@ -361,18 +361,33 @@ module ApplicationSettingImplementation
def separate_whitelists(string_array)
string_array.reduce([[], []]) do |(ip_whitelist, domain_whitelist), string|
- ip_obj = Gitlab::Utils.string_to_ip_object(string)
+ address, port = parse_addr_and_port(string)
+
+ ip_obj = Gitlab::Utils.string_to_ip_object(address)
if ip_obj
- ip_whitelist << ip_obj
+ ip_whitelist << Gitlab::UrlBlockers::IpWhitelistEntry.new(ip_obj, port: port)
else
- domain_whitelist << string
+ domain_whitelist << Gitlab::UrlBlockers::DomainWhitelistEntry.new(address, port: port)
end
[ip_whitelist, domain_whitelist]
end
end
+ def parse_addr_and_port(str)
+ case str
+ when /\A\[(?
.* )\]:(? \d+ )\z/x # string like "[::1]:80"
+ address, port = $~[:address], $~[:port]
+ when /\A(? [^:]+ ):(? \d+ )\z/x # string like "127.0.0.1:80"
+ address, port = $~[:address], $~[:port]
+ else # string with no port number
+ address, port = str, nil
+ end
+
+ [address, port&.to_i]
+ end
+
def array_to_string(arr)
arr&.join("\n")
end
diff --git a/app/uploaders/upload_type_check.rb b/app/uploaders/upload_type_check.rb
deleted file mode 100644
index 2837b001660..00000000000
--- a/app/uploaders/upload_type_check.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-# frozen_string_literal: true
-
-# Ensure that uploaded files are what they say they are for security and
-# handling purposes. The checks are not 100% reliable so we err on the side of
-# caution and allow by default, and deny when we're confident of a fail state.
-#
-# Include this concern, then call `check_upload_type` to check all
-# uploads. Attach a `mime_type` or `extensions` parameter to only check
-# specific upload types. Both parameters will be normalized to a MIME type and
-# checked against the inferred MIME type of the upload content and filename
-# extension.
-#
-# class YourUploader
-# include UploadTypeCheck::Concern
-# check_upload_type mime_types: ['image/png', /image\/jpe?g/]
-#
-# # or...
-#
-# check_upload_type extensions: ['png', 'jpg', 'jpeg']
-# end
-#
-# The mime_types parameter can accept `NilClass`, `String`, `Regexp`,
-# `Array[String, Regexp]`. This matches the CarrierWave `extension_whitelist`
-# and `content_type_whitelist` family of behavior.
-#
-# The extensions parameter can accept `NilClass`, `String`, `Array[String]`.
-module UploadTypeCheck
- module Concern
- extend ActiveSupport::Concern
-
- class_methods do
- def check_upload_type(mime_types: nil, extensions: nil)
- define_method :check_upload_type_callback do |file|
- magic_file = MagicFile.new(file.to_file)
-
- # Map file extensions back to mime types.
- if extensions
- mime_types = Array(mime_types) +
- Array(extensions).map { |e| MimeMagic::EXTENSIONS[e] }
- end
-
- if mime_types.nil? || magic_file.matches_mime_types?(mime_types)
- check_content_matches_extension!(magic_file)
- end
- end
- before :cache, :check_upload_type_callback
- end
- end
-
- def check_content_matches_extension!(magic_file)
- return if magic_file.ambiguous_type?
-
- if magic_file.magic_type != magic_file.ext_type
- raise CarrierWave::IntegrityError, 'Content type does not match file extension'
- end
- end
- end
-
- # Convenience class to wrap MagicMime objects.
- class MagicFile
- attr_reader :file
-
- def initialize(file)
- @file = file
- end
-
- def magic_type
- @magic_type ||= MimeMagic.by_magic(file)
- end
-
- def ext_type
- @ext_type ||= MimeMagic.by_path(file.path)
- end
-
- def magic_type_type
- magic_type&.type
- end
-
- def ext_type_type
- ext_type&.type
- end
-
- def matches_mime_types?(mime_types)
- Array(mime_types).any? do |mt|
- magic_type_type =~ /\A#{mt}\z/ || ext_type_type =~ /\A#{mt}\z/
- end
- end
-
- # - Both types unknown or text/plain.
- # - Ambiguous magic type with text extension. Plain text file.
- # - Text magic type with ambiguous extension. TeX file missing extension.
- def ambiguous_type?
- (ext_type.to_s.blank? && magic_type.to_s.blank?) ||
- (magic_type.to_s.blank? && ext_type_type == 'text/plain') ||
- (ext_type.to_s.blank? && magic_type_type == 'text/plain')
- end
- end
-end
diff --git a/changelogs/unreleased/199220-snippet-search.yml b/changelogs/unreleased/199220-snippet-search.yml
index d9ba1c6a626..d0b17fd3135 100644
--- a/changelogs/unreleased/199220-snippet-search.yml
+++ b/changelogs/unreleased/199220-snippet-search.yml
@@ -1,5 +1,5 @@
---
-title: Include snippet description as part of snippet title search (when Elasticsearch is not enabled)
+title: Include snippet description as part of snippet title search (basic search).
merge_request: 25961
author:
type: added
diff --git a/changelogs/unreleased/rc-whitelist_ports.yml b/changelogs/unreleased/rc-whitelist_ports.yml
new file mode 100644
index 00000000000..d3e3bdc1b7a
--- /dev/null
+++ b/changelogs/unreleased/rc-whitelist_ports.yml
@@ -0,0 +1,5 @@
+---
+title: Add ability to whitelist ports
+merge_request: 27025
+author:
+type: added
diff --git a/doc/administration/gitaly/img/praefect_architecture_v12_9.png b/doc/administration/gitaly/img/praefect_architecture_v12_9.png
index 3937789094c..b68e495cb17 100644
Binary files a/doc/administration/gitaly/img/praefect_architecture_v12_9.png and b/doc/administration/gitaly/img/praefect_architecture_v12_9.png differ
diff --git a/doc/administration/operations/unicorn.md b/doc/administration/operations/unicorn.md
index 561cd7ac1ce..bab20a76546 100644
--- a/doc/administration/operations/unicorn.md
+++ b/doc/administration/operations/unicorn.md
@@ -65,7 +65,7 @@ maximum memory threshold (in bytes) for the Unicorn worker killer by
setting the following values `/etc/gitlab/gitlab.rb`:
- For GitLab **12.7** and newer:
-
+
```ruby
unicorn['worker_memory_limit_min'] = "1024 * 1 << 20"
unicorn['worker_memory_limit_max'] = "1280 * 1 << 20"
diff --git a/doc/administration/packages/index.md b/doc/administration/packages/index.md
index a12aec3c7b3..40867fc15b6 100644
--- a/doc/administration/packages/index.md
+++ b/doc/administration/packages/index.md
@@ -118,10 +118,10 @@ upload packages:
#'path_style' => false # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
}
```
-
+
NOTE: **Note:**
Some build tools, like Gradle, must make `HEAD` requests to Amazon S3 to pull a dependency’s metadata. The `gitlab_rails['packages_object_store_proxy_download']` property must be set to `true`. Without this setting, GitLab won't act as a proxy to the Amazon S3 service, and will instead return the signed URL. This will cause a `HTTP 403 Forbidden` response, since Amazon S3 expects a signed URL.
-
+
1. Save the file and [reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure)
for the changes to take effect.
diff --git a/doc/administration/troubleshooting/gdb-stuck-ruby.txt b/doc/administration/troubleshooting/gdb-stuck-ruby.txt
index 13d5dfcffa4..de8d704f9e3 100644
--- a/doc/administration/troubleshooting/gdb-stuck-ruby.txt
+++ b/doc/administration/troubleshooting/gdb-stuck-ruby.txt
@@ -1,6 +1,6 @@
# Here's the script I'll use to demonstrate - it just loops forever:
-$ cat test.rb
+$ cat test.rb
#!/usr/bin/env ruby
loop do
@@ -75,7 +75,7 @@ Thread 1 (Thread 0xb74d76c0 (LWP 1343)):
at eval.c:5778
#5 rb_call0 (klass=3075304600, recv=3075299660, id=9393, oid=9393, argc=1, argv=0xbf85f490, body=0xb74c85a8, flags=2)
at eval.c:5928
-#6 0x0805e35d in rb_call (klass=3075304600, recv=3075299660, mid=9393, argc=1, argv=0xbf85f490, scope=1,
+#6 0x0805e35d in rb_call (klass=3075304600, recv=3075299660, mid=9393, argc=1, argv=0xbf85f490, scope=1,
self=) at eval.c:6176
#7 0x080651ec in rb_eval (self=3075299660, n=0xb74c4e1c) at eval.c:3521
#8 0x0805c31c in rb_yield_0 (val=6, self=3075299660, klass=, flags=0, avalue=0) at eval.c:5095
@@ -139,4 +139,4 @@ A debugging session is active.
Quit anyway? (y or n) y
Detaching from program: /opt/vagrant_ruby/bin/ruby, process 1343
-$
+$
diff --git a/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png b/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png
index a553dc182ce..e86ad7572e8 100644
Binary files a/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png and b/doc/administration/troubleshooting/img/AzureAD-basic_SAML.png differ
diff --git a/doc/administration/troubleshooting/img/AzureAD-claims.png b/doc/administration/troubleshooting/img/AzureAD-claims.png
index ef594390ce0..aab92288704 100644
Binary files a/doc/administration/troubleshooting/img/AzureAD-claims.png and b/doc/administration/troubleshooting/img/AzureAD-claims.png differ
diff --git a/doc/administration/troubleshooting/img/OneLogin-SSOsettings.png b/doc/administration/troubleshooting/img/OneLogin-SSOsettings.png
index 72737b9a017..58f936d8567 100644
Binary files a/doc/administration/troubleshooting/img/OneLogin-SSOsettings.png and b/doc/administration/troubleshooting/img/OneLogin-SSOsettings.png differ
diff --git a/doc/administration/troubleshooting/img/OneLogin-app_details.png b/doc/administration/troubleshooting/img/OneLogin-app_details.png
index 3e36a001d1b..77618960897 100644
Binary files a/doc/administration/troubleshooting/img/OneLogin-app_details.png and b/doc/administration/troubleshooting/img/OneLogin-app_details.png differ
diff --git a/doc/administration/troubleshooting/img/OneLogin-encryption.png b/doc/administration/troubleshooting/img/OneLogin-encryption.png
index a1b90873a5a..2b811409bd0 100644
Binary files a/doc/administration/troubleshooting/img/OneLogin-encryption.png and b/doc/administration/troubleshooting/img/OneLogin-encryption.png differ
diff --git a/doc/administration/troubleshooting/img/OneLogin-parameters.png b/doc/administration/troubleshooting/img/OneLogin-parameters.png
index c9ff4f8f018..a2fa734152c 100644
Binary files a/doc/administration/troubleshooting/img/OneLogin-parameters.png and b/doc/administration/troubleshooting/img/OneLogin-parameters.png differ
diff --git a/doc/administration/troubleshooting/img/OneLogin-userAdd.png b/doc/administration/troubleshooting/img/OneLogin-userAdd.png
index c7187fe5dd6..54c1ecd2e68 100644
Binary files a/doc/administration/troubleshooting/img/OneLogin-userAdd.png and b/doc/administration/troubleshooting/img/OneLogin-userAdd.png differ
diff --git a/doc/administration/troubleshooting/kubernetes_cheat_sheet.md b/doc/administration/troubleshooting/kubernetes_cheat_sheet.md
index 38c0661da06..ec59705ca99 100644
--- a/doc/administration/troubleshooting/kubernetes_cheat_sheet.md
+++ b/doc/administration/troubleshooting/kubernetes_cheat_sheet.md
@@ -77,11 +77,11 @@ and they will assist you with any issues you are having.
```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 config that can be used to test a Kubernetes Helm chart can be found
@@ -167,7 +167,7 @@ and they will assist you with any issues you are having.
```shell
kubectl exec -it -- /srv/gitlab/bin/rails dbconsole -p
```
-
+
- How to get info about Helm installation status:
```shell
diff --git a/doc/ci/environments/img/incremental_rollouts_play_v12_7.png b/doc/ci/environments/img/incremental_rollouts_play_v12_7.png
index 314c4a07af0..9d3ca258b08 100644
Binary files a/doc/ci/environments/img/incremental_rollouts_play_v12_7.png and b/doc/ci/environments/img/incremental_rollouts_play_v12_7.png differ
diff --git a/doc/ci/environments/img/timed_rollout_v12_7.png b/doc/ci/environments/img/timed_rollout_v12_7.png
index 6b83bfc574e..94f5d50020f 100644
Binary files a/doc/ci/environments/img/timed_rollout_v12_7.png and b/doc/ci/environments/img/timed_rollout_v12_7.png differ
diff --git a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/select_template_v12_6.png b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/select_template_v12_6.png
index 97887db4486..c8c5e152a13 100644
Binary files a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/select_template_v12_6.png and b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/select_template_v12_6.png differ
diff --git a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/set_up_ci_v12_6.png b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/set_up_ci_v12_6.png
index 85fb58d4458..fafabb27bac 100644
Binary files a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/set_up_ci_v12_6.png and b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/img/set_up_ci_v12_6.png differ
diff --git a/doc/ci/img/environment_auto_stop_v12_8.png b/doc/ci/img/environment_auto_stop_v12_8.png
index 3a3c54ab62d..f098938ef04 100644
Binary files a/doc/ci/img/environment_auto_stop_v12_8.png and b/doc/ci/img/environment_auto_stop_v12_8.png differ
diff --git a/doc/ci/img/environments_deployment_cluster_v12_8.png b/doc/ci/img/environments_deployment_cluster_v12_8.png
index dfda1deb649..7fa6d3515a8 100644
Binary files a/doc/ci/img/environments_deployment_cluster_v12_8.png and b/doc/ci/img/environments_deployment_cluster_v12_8.png differ
diff --git a/doc/ci/img/parent_pipeline_graph_expanded_v12_6.png b/doc/ci/img/parent_pipeline_graph_expanded_v12_6.png
index 5c493109a54..db18cc201fc 100644
Binary files a/doc/ci/img/parent_pipeline_graph_expanded_v12_6.png and b/doc/ci/img/parent_pipeline_graph_expanded_v12_6.png differ
diff --git a/doc/ci/pipelines/img/collapsible_log_v12_6.png b/doc/ci/pipelines/img/collapsible_log_v12_6.png
index 24b2c83f7c1..a1e9aeb244a 100644
Binary files a/doc/ci/pipelines/img/collapsible_log_v12_6.png and b/doc/ci/pipelines/img/collapsible_log_v12_6.png differ
diff --git a/doc/ci/pipelines/img/pipelines_duration_chart.png b/doc/ci/pipelines/img/pipelines_duration_chart.png
index 0be7539ba0a..12ec262dadb 100644
Binary files a/doc/ci/pipelines/img/pipelines_duration_chart.png and b/doc/ci/pipelines/img/pipelines_duration_chart.png differ
diff --git a/doc/ci/pipelines/img/pipelines_success_chart.png b/doc/ci/pipelines/img/pipelines_success_chart.png
index 10602b75eeb..f44dc25ff1c 100644
Binary files a/doc/ci/pipelines/img/pipelines_success_chart.png and b/doc/ci/pipelines/img/pipelines_success_chart.png differ
diff --git a/doc/ci/review_apps/img/enable_review_app_v12_8.png b/doc/ci/review_apps/img/enable_review_app_v12_8.png
index 364fe402787..7d40f49725f 100644
Binary files a/doc/ci/review_apps/img/enable_review_app_v12_8.png and b/doc/ci/review_apps/img/enable_review_app_v12_8.png differ
diff --git a/doc/development/event_tracking/frontend.md b/doc/development/event_tracking/frontend.md
index 42c82a745db..fcd394500ec 100644
--- a/doc/development/event_tracking/frontend.md
+++ b/doc/development/event_tracking/frontend.md
@@ -149,12 +149,12 @@ import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper';
describe('my component', () => {
let trackingSpy;
-
+
beforeEach(() => {
const vm = mountComponent(MyComponent);
trackingSpy = mockTracking('_category_', vm.$el, spyOn);
});
-
+
it('tracks an event when toggled', () => {
triggerEvent('a.toggle');
diff --git a/doc/development/img/reference_architecture.png b/doc/development/img/reference_architecture.png
index 1414200d076..107135b626e 100644
Binary files a/doc/development/img/reference_architecture.png and b/doc/development/img/reference_architecture.png differ
diff --git a/doc/development/import_export.md b/doc/development/import_export.md
index 252a57ce857..68f7b78337d 100644
--- a/doc/development/import_export.md
+++ b/doc/development/import_export.md
@@ -195,17 +195,17 @@ module Gitlab
The [current version history](../user/project/settings/import_export.md) also displays the equivalent GitLab version
and it is useful for knowing which versions won't be compatible between them.
-| Exporting GitLab version | Importing GitLab version |
-| -------------------------- | -------------------------- |
-| 11.7 to current | 11.7 to current |
-| 11.1 to 11.6 | 11.1 to 11.6 |
-| 10.8 to 11.0 | 10.8 to 11.0 |
-| 10.4 to 10.7 | 10.4 to 10.7 |
-| ... | ... |
-| 8.10.3 to 8.11 | 8.10.3 to 8.11 |
-| 8.10.0 to 8.10.2 | 8.10.0 to 8.10.2 |
-| 8.9.5 to 8.9.11 | 8.9.5 to 8.9.11 |
-| 8.9.0 to 8.9.4 | 8.9.0 to 8.9.4 |
+| Exporting GitLab version | Importing GitLab version |
+| -------------------------- | -------------------------- |
+| 11.7 to current | 11.7 to current |
+| 11.1 to 11.6 | 11.1 to 11.6 |
+| 10.8 to 11.0 | 10.8 to 11.0 |
+| 10.4 to 10.7 | 10.4 to 10.7 |
+| ... | ... |
+| 8.10.3 to 8.11 | 8.10.3 to 8.11 |
+| 8.10.0 to 8.10.2 | 8.10.0 to 8.10.2 |
+| 8.9.5 to 8.9.11 | 8.9.5 to 8.9.11 |
+| 8.9.0 to 8.9.4 | 8.9.0 to 8.9.4 |
### When to bump the version up
diff --git a/doc/development/integrations/secure.md b/doc/development/integrations/secure.md
index 74e16751b31..5792ce303e1 100644
--- a/doc/development/integrations/secure.md
+++ b/doc/development/integrations/secure.md
@@ -278,7 +278,7 @@ and where the `message` repeats the `location` field:
It takes around 50k characters to block for 2 seconds making this a low severity issue."
}
```
-
+
The `description` might explain how the vulnerability works or give context about the exploit.
It should not repeat the other fields of the vulnerability object.
In particular, the `description` should not repeat the `location` (what is affected)
diff --git a/doc/development/reference_processing.md b/doc/development/reference_processing.md
index c6c629f3314..ef1f2f5269c 100644
--- a/doc/development/reference_processing.md
+++ b/doc/development/reference_processing.md
@@ -43,7 +43,7 @@ Subclasses of `AbstractReferenceFilter` generally do not override `#call`; inste
a minimum implementation of `AbstractReferenceFilter` should define:
- `.reference_type`: The type of domain object.
-
+
This is usually a keyword, and is used to set the `data-reference-type` attribute
on the generated link, and is an important part of the interaction with the
corresponding `ReferenceParser` (see below).
diff --git a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
index abc7c88b4f2..4f0e506a964 100644
--- a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
+++ b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
@@ -6,8 +6,10 @@ This is a partial list of the [RSpec metadata](https://relishapp.com/rspec/rspec
| Tag | Description |
-|-|-|
-| `:elasticsearch` | The test requires an Elasticsearch service. It is used by the [instance-level scenario](https://gitlab.com/gitlab-org/gitlab-qa#definitions) [`Test::Integration::Elasticsearch`](https://gitlab.com/gitlab-org/gitlab/-/blob/72b62b51bdf513e2936301cb6c7c91ec27c35b4d/qa/qa/ee/scenario/test/integration/elasticsearch.rb) to include only tests that require Elasticsearch. |
-| `:orchestrated` | The GitLab instance under test may be [configured by `gitlab-qa`](https://gitlab.com/gitlab-org/gitlab-qa/-/blob/master/docs/what_tests_can_be_run.md#orchestrated-tests) to be different to the default GitLab configuration, or `gitlab-qa` may launch additional services in separate docker containers, or both. Tests tagged with `:orchestrated` are excluded when testing environments where we can't dynamically modify GitLab's configuration (for example, Staging). |
-| `:quarantine` | The test has been [quarantined](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests), will run in a separate job that only includes quarantined tests, and is allowed to fail. The test will be skipped in its regular job so that if it fails it will not hold up the pipeline. |
+|-----|-------------|
+| `:elasticsearch` | The test requires an Elasticsearch service. It is used by the [instance-level scenario](https://gitlab.com/gitlab-org/gitlab-qa#definitions) [`Test::Integration::Elasticsearch`](https://gitlab.com/gitlab-org/gitlab/-/blob/72b62b51bdf513e2936301cb6c7c91ec27c35b4d/qa/qa/ee/scenario/test/integration/elasticsearch.rb) to include only tests that require Elasticsearch. |
+| `:kubernetes` | The test includes a GitLab instance that is configured to be run behind an SSH tunnel, allowing a TLS-accessible GitLab. This test will also include provisioning of at least one Kubernetes cluster to test against. *This tag is often be paired with `:orchestrated`.* |
+| `:orchestrated` | The GitLab instance under test may be [configured by `gitlab-qa`](https://gitlab.com/gitlab-org/gitlab-qa/-/blob/master/docs/what_tests_can_be_run.md#orchestrated-tests) to be different to the default GitLab configuration, or `gitlab-qa` may launch additional services in separate docker containers, or both. Tests tagged with `:orchestrated` are excluded when testing environments where we can't dynamically modify GitLab's configuration (for example, Staging). |
+| `:quarantine` | The test has been [quarantined](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests), will run in a separate job that only includes quarantined tests, and is allowed to fail. The test will be skipped in its regular job so that if it fails it will not hold up the pipeline. |
+| `:reliable` | The test has been [promoted to a reliable test](https://about.gitlab.com/handbook/engineering/quality/guidelines/reliable-tests/#promoting-an-existing-test-to-reliable) meaning it passes consistently in all pipelines, including merge requests. |
| `:requires_admin` | The test requires an admin account. Tests with the tag are excluded when run against Canary and Production environments. |
diff --git a/doc/install/aws/img/aws_ha_architecture_diagram.png b/doc/install/aws/img/aws_ha_architecture_diagram.png
index 4011150a358..2064b0f49ae 100644
Binary files a/doc/install/aws/img/aws_ha_architecture_diagram.png and b/doc/install/aws/img/aws_ha_architecture_diagram.png differ
diff --git a/doc/install/aws/index.md b/doc/install/aws/index.md
index c05d8b4b0da..061030765a3 100644
--- a/doc/install/aws/index.md
+++ b/doc/install/aws/index.md
@@ -543,7 +543,7 @@ If everything looks good, you should be able to reach GitLab in your browser.
### Setting up Gitaly
-CAUTION: **Caution:** In this architecture, having a single Gitaly server creates a single point of failure. This limitation will be removed once [Gitaly HA](https://gitlab.com/groups/gitlab-org/-/epics/842) is released.
+CAUTION: **Caution:** In this architecture, having a single Gitaly server creates a single point of failure. This limitation will be removed once [Gitaly HA](https://gitlab.com/groups/gitlab-org/-/epics/842) is released.
Gitaly is a service that provides high-level RPC access to Git repositories.
It should be enabled and configured on a separate EC2 instance in one of the
diff --git a/doc/integration/elasticsearch.md b/doc/integration/elasticsearch.md
index c2f4fff0ce3..e7667ea8080 100644
--- a/doc/integration/elasticsearch.md
+++ b/doc/integration/elasticsearch.md
@@ -54,7 +54,7 @@ The way you install the Go indexer depends on your version of GitLab:
### GitLab Omnibus
-Since GitLab 11.8 the Go indexer is included in GitLab Omnibus.
+Since GitLab 11.8 the Go indexer is included in GitLab Omnibus.
The former Ruby-based indexer was removed in [GitLab 12.3](https://gitlab.com/gitlab-org/gitlab/issues/6481).
### From source
diff --git a/doc/integration/img/jira_dev_panel_jira_setup_1-1.png b/doc/integration/img/jira_dev_panel_jira_setup_1-1.png
index e3c6c01c153..cef903ac9b4 100644
Binary files a/doc/integration/img/jira_dev_panel_jira_setup_1-1.png and b/doc/integration/img/jira_dev_panel_jira_setup_1-1.png differ
diff --git a/doc/integration/img/jira_dev_panel_setup_com_1.png b/doc/integration/img/jira_dev_panel_setup_com_1.png
index 906e4aa16cb..18f0d5da043 100644
Binary files a/doc/integration/img/jira_dev_panel_setup_com_1.png and b/doc/integration/img/jira_dev_panel_setup_com_1.png differ
diff --git a/doc/integration/img/jira_dev_panel_setup_com_2.png b/doc/integration/img/jira_dev_panel_setup_com_2.png
index 002a9140968..31dc13e1271 100644
Binary files a/doc/integration/img/jira_dev_panel_setup_com_2.png and b/doc/integration/img/jira_dev_panel_setup_com_2.png differ
diff --git a/doc/integration/img/jira_dev_panel_setup_com_3.png b/doc/integration/img/jira_dev_panel_setup_com_3.png
index c4e748c38cf..eb3c573a4bb 100644
Binary files a/doc/integration/img/jira_dev_panel_setup_com_3.png and b/doc/integration/img/jira_dev_panel_setup_com_3.png differ
diff --git a/doc/legal/corporate_contributor_license_agreement.md b/doc/legal/corporate_contributor_license_agreement.md
index c8782a2cfc2..018c4b575b5 100644
--- a/doc/legal/corporate_contributor_license_agreement.md
+++ b/doc/legal/corporate_contributor_license_agreement.md
@@ -21,7 +21,7 @@ You accept and agree to the following terms and conditions for Your present and
- **Contributions:**
You represent that each of Your Contributions is Your original creation.
-
+
Should You wish to submit work that is not Your original creation, You may submit it to GitLab B.V. separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: (named here)".
You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/doc/security/webhooks.md b/doc/security/webhooks.md
index 7313cffdd13..bd05cbff05e 100644
--- a/doc/security/webhooks.md
+++ b/doc/security/webhooks.md
@@ -71,16 +71,24 @@ use IDNA encoding.
The whitelist can hold a maximum of 1000 entries. Each entry can be a maximum of
255 characters.
+You can whitelist a particular port by specifying it in the whitelist entry.
+For example `127.0.0.1:8080` will only allow connections to port 8080 on `127.0.0.1`.
+If no port is mentioned, all ports on that IP/domain are whitelisted. An IP range
+will whitelist all ports on all IPs in that range.
+
Example:
```text
example.com;gitlab.example.com
127.0.0.1,1:0:0:0:0:0:0:1
127.0.0.0/8 1:0:0:0:0:0:0:0/124
+[1:0:0:0:0:0:0:1]:8080
+127.0.0.1:8080
+example.com:8080
```
NOTE: **Note:**
-Wildcards (`*.example.com`) and ports (`127.0.0.1:3000`) are not currently supported.
+Wildcards (`*.example.com`) are not currently supported.