summaryrefslogtreecommitdiff
path: root/doc/user/packages
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-10-20 08:43:02 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-10-20 08:43:02 +0000
commitd9ab72d6080f594d0b3cae15f14b3ef2c6c638cb (patch)
tree2341ef426af70ad1e289c38036737e04b0aa5007 /doc/user/packages
parentd6e514dd13db8947884cd58fe2a9c2a063400a9b (diff)
downloadgitlab-ce-d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb.tar.gz
Add latest changes from gitlab-org/gitlab@14-4-stable-eev14.4.0-rc42
Diffstat (limited to 'doc/user/packages')
-rw-r--r--doc/user/packages/composer_repository/index.md8
-rw-r--r--doc/user/packages/conan_repository/index.md7
-rw-r--r--doc/user/packages/container_registry/index.md19
-rw-r--r--doc/user/packages/debian_repository/index.md5
-rw-r--r--doc/user/packages/dependency_proxy/index.md63
-rw-r--r--doc/user/packages/go_proxy/index.md6
-rw-r--r--doc/user/packages/helm_repository/index.md23
-rw-r--r--doc/user/packages/index.md39
-rw-r--r--doc/user/packages/npm_registry/index.md22
-rw-r--r--doc/user/packages/nuget_repository/index.md8
-rw-r--r--doc/user/packages/rubygems_registry/index.md5
11 files changed, 154 insertions, 51 deletions
diff --git a/doc/user/packages/composer_repository/index.md b/doc/user/packages/composer_repository/index.md
index 2787aefdeca..6e3af45df17 100644
--- a/doc/user/packages/composer_repository/index.md
+++ b/doc/user/packages/composer_repository/index.md
@@ -10,6 +10,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/221259) to GitLab Free in 13.3.
> - Support for Composer 2.0 [added](https://gitlab.com/gitlab-org/gitlab/-/issues/259840) in GitLab Free 13.10.
+WARNING:
+The Composer package registry for GitLab is under development and isn't ready for production use due to
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/6817) details the remaining
+work and timelines to make it production ready.
+
Publish [Composer](https://getcomposer.org/) packages in your project's Package Registry.
Then, install the packages whenever you need to use them as a dependency.
@@ -120,6 +125,7 @@ You can publish a Composer package to the Package Registry as part of your CI/CD
deploy:
stage: deploy
script:
+ - apk add curl
- 'curl --header "Job-Token: $CI_JOB_TOKEN" --data tag=<tag> "${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/composer"'
```
@@ -132,7 +138,7 @@ To view the published package, go to **Packages & Registries > Package Registry*
A more detailed Composer CI/CD file is also available as a `.gitlab-ci.yml` template:
1. On the left sidebar, select **Project information**.
-1. Above the file list, click **Set up CI/CD**. If this button is not available, select **CI/CD Configuration** and then **Edit**.
+1. Above the file list, select **Set up CI/CD**. If this button is not available, select **CI/CD Configuration** and then **Edit**.
1. From the **Apply a template** list, select **Composer**.
WARNING:
diff --git a/doc/user/packages/conan_repository/index.md b/doc/user/packages/conan_repository/index.md
index dc08baaf731..33c48478921 100644
--- a/doc/user/packages/conan_repository/index.md
+++ b/doc/user/packages/conan_repository/index.md
@@ -9,6 +9,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/8248) in GitLab Premium 12.6.
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/221259) to GitLab Free in 13.3.
+WARNING:
+The Conan package registry for GitLab is under development and isn't ready for production use due to
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/6816) details the remaining
+work and timelines to make it production ready.
+
Publish Conan packages in your project's Package Registry. Then install the
packages whenever you need to use them as a dependency.
@@ -358,7 +363,7 @@ There are two ways to remove a Conan package from the GitLab Package Registry.
- From the GitLab user interface:
Go to your project's **Packages & Registries > Package Registry**. Remove the
- package by clicking the red trash icon.
+ package by selecting **Remove repository** (**{remove}**).
## Search for Conan packages in the Package Registry
diff --git a/doc/user/packages/container_registry/index.md b/doc/user/packages/container_registry/index.md
index 1db2165cd5d..c39552c1edb 100644
--- a/doc/user/packages/container_registry/index.md
+++ b/doc/user/packages/container_registry/index.md
@@ -648,7 +648,11 @@ For self-managed instances, those settings can be updated in the [Rails console]
ApplicationSetting.last.update(container_registry_expiration_policies_worker_capacity: 3)
```
-Alternatively, once the limits are [enabled](#enable-or-disable-cleanup-policy-limits), they are available in the [admin area](../../admin_area/index.md) **Settings > CI/CD > Container Registry**.
+Alternatively, once the limits are [enabled](#enable-or-disable-cleanup-policy-limits),
+they are available in the [administrator area](../../admin_area/index.md):
+
+1. On the top bar, select **Menu > Admin**.
+1. Go to **Settings > CI/CD > Container Registry**.
#### Enable or disable cleanup policy limits
@@ -714,15 +718,6 @@ Check the regex patterns to ensure they are valid.
GitLab uses [RE2 syntax](https://github.com/google/re2/wiki/Syntax) for regular expressions in the cleanup policy. You can test them with the [regex101 regex tester](https://regex101.com/).
View some common [regex pattern examples](#regex-pattern-examples).
-## Use the Container Registry to store Helm Charts
-
-With the launch of [Helm v3](https://helm.sh/docs/topics/registries/),
-you can use the Container Registry to store Helm Charts. However, due to the way metadata is passed
-and stored by Docker, it is not possible for GitLab to parse this data and meet performance standards.
-[This epic](https://gitlab.com/groups/gitlab-org/-/epics/2313) updates the architecture of the Container Registry to support Helm Charts.
-
-[Read more about the above challenges](https://gitlab.com/gitlab-org/gitlab/-/issues/38047#note_298842890).
-
## Limitations
- Moving or renaming existing Container Registry repositories is not supported
@@ -911,10 +906,10 @@ these steps:
while read -r LINE || [[ -n $LINE ]]; do echo ${LINE}; curl --request DELETE --header 'PRIVATE-TOKEN: <PAT>' "https://gitlab.example.com/api/v4/projects/<Project_id>/registry/repositories/<container_repo_id>/tags/${LINE}"; sleep 0.1; echo; done < list_o_tags.out > delete.logs
```
-### Troubleshoot as a GitLab server admin
+### Troubleshoot as a GitLab server administrator
Troubleshooting the GitLab Container Registry, most of the times, requires
-administrator access to the GitLab server.
+you to log in to GitLab server with the Administrator role.
[Read how to troubleshoot the Container Registry](../../../administration/packages/container_registry.md#troubleshooting).
diff --git a/doc/user/packages/debian_repository/index.md b/doc/user/packages/debian_repository/index.md
index 29641380753..36d85d94161 100644
--- a/doc/user/packages/debian_repository/index.md
+++ b/doc/user/packages/debian_repository/index.md
@@ -12,7 +12,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
WARNING:
The Debian package registry for GitLab is under development and isn't ready for production use due to
-limited functionality.
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/6057) details the remaining
+work and timelines to make it production ready.
Publish Debian packages in your project's Package Registry. Then install the
packages whenever you need to use them as a dependency.
@@ -138,7 +139,7 @@ To install a package:
1. Configure the repository:
- If you are using a private project, add your [credentials](#authenticate-to-the-package-registry) to your apt config:
+ If you are using a private project, add your [credentials](#authenticate-to-the-package-registry) to your apt configuration:
```shell
echo 'machine gitlab.example.com login <username> password <your_access_token>' \
diff --git a/doc/user/packages/dependency_proxy/index.md b/doc/user/packages/dependency_proxy/index.md
index ad25ec7edbf..5d482a15460 100644
--- a/doc/user/packages/dependency_proxy/index.md
+++ b/doc/user/packages/dependency_proxy/index.md
@@ -33,6 +33,14 @@ The following images and packages are supported.
For a list of planned additions, view the
[direction page](https://about.gitlab.com/direction/package/#dependency-proxy).
+## Enable or disable the Dependency Proxy for a group
+
+To enable or disable the Dependency Proxy for a group:
+
+1. Go to your group's **Settings > Packages & Registries**.
+1. Expand the **Dependency Proxy** section.
+1. To enable the proxy, turn on **Enable Proxy**. To disable it, turn the toggle off.
+
## View the Dependency Proxy
To view the Dependency Proxy:
@@ -66,7 +74,7 @@ has disrupted your existing Dependency Proxy usage.
Because the Dependency Proxy is storing Docker images in a space associated with your group,
you must authenticate against the Dependency Proxy.
-Follow the [instructions for using images from a private registry](../../../ci/docker/using_docker_images.md#define-an-image-from-a-private-container-registry),
+Follow the [instructions for using images from a private registry](../../../ci/docker/using_docker_images.md#access-an-image-from-a-private-container-registry),
but instead of using `registry.example.com:5000`, use your GitLab domain with no port `gitlab.example.com`.
For example, to manually log in:
@@ -171,8 +179,53 @@ from the GitLab server.
Blobs are kept forever on the GitLab server, and there is no hard limit on how much data can be
stored.
+### Using the API to clear the cache
+
To reclaim disk space used by image blobs that are no longer needed, use
-the [Dependency Proxy API](../../../api/dependency_proxy.md).
+the [Dependency Proxy API](../../../api/dependency_proxy.md) to clear the entire
+cache.
+
+If you clear the cache, the next time a pipeline runs it must pull an image or tag from Docker Hub.
+
+### Cleanup policies
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/294187) in GitLab Free 14.4.
+
+The cleanup policy is a scheduled job you can use to clear cached images that are no longer used,
+freeing up additional storage space. The policies use time-to-live (TTL) logic:
+
+- The number of days is configured.
+- All cached dependency proxy files that have not been pulled in that many days are deleted.
+
+Use the [GraphQL API](../../../api/graphql/reference/index.md#mutationupdatedependencyproxyimagettlgrouppolicy)
+to enable and configure cleanup policies:
+
+```graphql
+mutation {
+ updateDependencyProxyImageTtlGroupPolicy(input:
+ {
+ groupPath: "<your-full-group-path>",
+ enabled: true,
+ ttl: 90
+ }
+ ) {
+ dependencyProxyImageTtlPolicy {
+ enabled
+ ttl
+ }
+ errors
+ }
+}
+```
+
+See the [Getting started with GraphQL](../../../api/graphql/getting_started.md)
+guide to learn how to make GraphQL queries. Support for enabling and configuring cleanup policies in
+the UI is tracked in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/340777).
+
+When the policy is initially enabled, the default TTL setting is 90 days. Once enabled, stale
+dependency proxy files are queued for deletion each day. Deletion may not occur right away due to
+processing time. If the image is pulled after the cached files are marked as expired, the expired
+files are ignored and new files are downloaded and cached from the external registry.
## Docker Hub rate limits and the Dependency Proxy
@@ -227,7 +280,7 @@ script:
```shell
# Note, you must have jq installed to run this command
-TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq --raw-output .token) && curl --head --header "Authorization: Bearer $TOKEN" "https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest" 2>&1 | grep RateLimit
+TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq --raw-output .token) && curl --head --header "Authorization: Bearer $TOKEN" "https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest" 2>&1 | grep --ignore-case RateLimit
...
```
@@ -256,10 +309,6 @@ hub_docker_quota_check:
TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq --raw-output .token) && curl --head --header "Authorization: Bearer $TOKEN" "https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest" 2>&1
```
-## Use the NPM Dependency Proxy for NPM packages
-
-For information on this, see [Dependency Proxy](../npm_registry/#dependency-proxy).
-
## Troubleshooting
### Dependency Proxy Connection Failure
diff --git a/doc/user/packages/go_proxy/index.md b/doc/user/packages/go_proxy/index.md
index 0c04c4a23d0..f17910cd46d 100644
--- a/doc/user/packages/go_proxy/index.md
+++ b/doc/user/packages/go_proxy/index.md
@@ -9,10 +9,14 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27376) in GitLab Premium 13.1.
> - It's deployed behind a feature flag, disabled by default.
> - It's disabled for GitLab.com.
-> - It's not recommended for production use.
> - To use it in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-the-go-proxy).
> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/221259) to GitLab Free in 13.3.
+WARNING:
+The Go package registry for GitLab is under development and isn't ready for production use due to
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/3043) details the remaining
+work and timelines to make it production ready.
+
With the Go proxy for GitLab, every project in GitLab can be fetched with the
[Go proxy protocol](https://proxy.golang.org/).
diff --git a/doc/user/packages/helm_repository/index.md b/doc/user/packages/helm_repository/index.md
index 2d984d76b97..c88fba83dc7 100644
--- a/doc/user/packages/helm_repository/index.md
+++ b/doc/user/packages/helm_repository/index.md
@@ -8,6 +8,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18997) in GitLab 14.1.
+WARNING:
+The Helm chart registry for GitLab is under development and isn't ready for production use due to
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/6366) details the remaining
+work and timelines to make it production ready.
+
Publish Helm packages in your project's Package Registry. Then install the
packages whenever you need to use them as a dependency.
@@ -31,6 +36,10 @@ To authenticate to the Helm repository, you need either:
## Publish a package
+WARNING:
+The `helm-push` command is broken in Helm 3.7. For more information, see the [open issue](https://github.com/chartmuseum/helm-push/issues/109)
+in the Chart Museum project.
+
NOTE:
You can publish Helm charts with duplicate names or versions. If duplicates exist, GitLab always
returns the chart with the latest version.
@@ -105,7 +114,7 @@ helm install my-release project-1/mychart
- `<project_id>`: the project ID (like `42`).
- `<channel>`: the name of the channel (like `stable`).
-If the repo has previously been added, you may need to run:
+If the repository has previously been added, you may need to run:
```shell
helm repo update
@@ -123,3 +132,15 @@ Check the [Sidekiq log](../../../administration/logs.md#sidekiqlog)
for any related errors. If you see `Validation failed: Version is invalid`, it means that the
version in your `Chart.yaml` file does not follow [Helm Chart versioning specifications](https://helm.sh/docs/topics/charts/#charts-and-versioning).
To fix the error, use the correct version syntax and upload the chart again.
+
+### `helm push` results in an error
+
+The `helm push` plugin is not yet supported in Helm 3.7. If you try to push a chart using
+`helm push`, it produces the following error:
+
+```plaintext
+Error: this feature has been marked as experimental and is not enabled by default. Please set HELM_EXPERIMENTAL_OCI=1 in your environment to use this feature
+```
+
+To continue to use the plugin, you can push an image using [curl](#use-cicd-to-publish-a-helm-package)
+or downgrade your version of Helm.
diff --git a/doc/user/packages/index.md b/doc/user/packages/index.md
index 9158b5cc674..a8f1b1998ae 100644
--- a/doc/user/packages/index.md
+++ b/doc/user/packages/index.md
@@ -10,20 +10,31 @@ The GitLab [Package Registry](package_registry/index.md) acts as a private or pu
for a variety of common package managers. You can publish and share
packages, which can be easily consumed as a dependency in downstream projects.
+WARNING:
+Not all package manager formats are ready for production use. To view each format's status, see the
+table's **Status** column.
+
The Package Registry supports the following formats:
-| Package type | GitLab version |
-| ------------ | -------------- |
-| [Composer](composer_repository/index.md) | 13.2+ |
-| [Conan](conan_repository/index.md) | 12.6+ |
-| [Go](go_proxy/index.md) | 13.1+ |
-| [Helm](helm_repository/index.md) | 14.1+ |
-| [Maven](maven_repository/index.md) | 11.3+ |
-| [npm](npm_registry/index.md) | 11.7+ |
-| [NuGet](nuget_repository/index.md) | 12.8+ |
-| [PyPI](pypi_repository/index.md) | 12.10+ |
-| [Generic packages](generic_packages/index.md) | 13.5+ |
-| [Ruby gems](rubygems_registry/index.md) | 13.10+ |
+| Package type | GitLab version | Status |
+| ------------ | -------------- |------- |
+| [Maven](maven_repository/index.md) | 11.3+ | Stable |
+| [npm](npm_registry/index.md) | 11.7+ | Stable |
+| [NuGet](nuget_repository/index.md) | 12.8+ | Stable |
+| [PyPI](pypi_repository/index.md) | 12.10+ | Stable |
+| [Generic packages](generic_packages/index.md) | 13.5+ | Stable |
+| [Composer](composer_repository/index.md) | 13.2+ | [Beta](https://gitlab.com/groups/gitlab-org/-/epics/6817) |
+| [Conan](conan_repository/index.md) | 12.6+ | [Beta](https://gitlab.com/groups/gitlab-org/-/epics/6816) |
+| [Helm](helm_repository/index.md) | 14.1+ | [Beta](https://gitlab.com/groups/gitlab-org/-/epics/6366) |
+| [Debian](debian_repository/index.md) | 14.2+ | [Alpha](https://gitlab.com/groups/gitlab-org/-/epics/6057) |
+| [Go](go_proxy/index.md) | 13.1+ | [Alpha](https://gitlab.com/groups/gitlab-org/-/epics/3043) |
+| [Ruby gems](rubygems_registry/index.md) | 13.10+ | [Alpha](https://gitlab.com/groups/gitlab-org/-/epics/3200) |
+
+Status:
+
+- Alpha: behind a feature flag and not officially supported.
+- Beta: several known issues that may prevent expected use.
+- Stable: ready for production use.
You can also use the [API](../../api/packages.md) to administer the Package Registry.
@@ -40,12 +51,12 @@ guides you through the process.
| CocoaPods | [#36890](https://gitlab.com/gitlab-org/gitlab/-/issues/36890) |
| Conda | [#36891](https://gitlab.com/gitlab-org/gitlab/-/issues/36891) |
| CRAN | [#36892](https://gitlab.com/gitlab-org/gitlab/-/issues/36892) |
-| Debian | [Draft: Merge Request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50438) |
| Opkg | [#36894](https://gitlab.com/gitlab-org/gitlab/-/issues/36894) |
| P2 | [#36895](https://gitlab.com/gitlab-org/gitlab/-/issues/36895) |
| Puppet | [#36897](https://gitlab.com/gitlab-org/gitlab/-/issues/36897) |
-| RPM | [#5932](https://gitlab.com/gitlab-org/gitlab/-/issues/5932) |
+| RPM | [#5932](https://gitlab.com/groups/gitlab-org/-/epics/5128) |
| SBT | [#36898](https://gitlab.com/gitlab-org/gitlab/-/issues/36898) |
+| Swift | [#12233](https://gitlab.com/gitlab-org/gitlab/-/issues/12233) |
| Vagrant | [#36899](https://gitlab.com/gitlab-org/gitlab/-/issues/36899) |
<!-- vale gitlab.Spelling = YES -->
diff --git a/doc/user/packages/npm_registry/index.md b/doc/user/packages/npm_registry/index.md
index fe7e6a0ea46..b07ae72e273 100644
--- a/doc/user/packages/npm_registry/index.md
+++ b/doc/user/packages/npm_registry/index.md
@@ -370,13 +370,26 @@ in a JavaScript project. You can install a package from the scope of a project o
If multiple packages have the same name and version, when you install a package, the most recently-published package is retrieved.
-1. Set the URL for scoped packages by running:
+1. Set the URL for scoped packages.
+
+ For [instance-level endpoints](#use-the-gitlab-endpoint-for-npm-packages) run:
```shell
npm config set @foo:registry https://gitlab.example.com/api/v4/packages/npm/
```
- Replace `@foo` with your scope.
+ - Replace `@foo` with your scope.
+ - Replace `gitlab.example.com` with your domain name.
+
+ For [project-level endpoints](#use-the-gitlab-endpoint-for-npm-packages) run:
+
+ ```shell
+ npm config set @foo:registry https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/
+ ```
+
+ - Replace `@foo` with your scope.
+ - Replace `gitlab.example.com` with your domain name.
+ - Replace `<your_project_id>` with your project ID, found on the project's home page.
1. Ensure [authentication](#authenticate-to-the-package-registry) is configured.
@@ -601,8 +614,3 @@ The GitLab npm repository supports the following commands for the npm CLI (`npm`
- `npm view`: Show package metadata.
- `yarn add`: Install an npm package.
- `yarn update`: Update your dependencies.
-
-## Dependency Proxy
-
-The NPM Dependency Proxy for NPM packages isn't available. For more information, see
-[this epic](https://gitlab.com/groups/gitlab-org/-/epics/3608).
diff --git a/doc/user/packages/nuget_repository/index.md b/doc/user/packages/nuget_repository/index.md
index 40e8b74c2b6..2af6dc60078 100644
--- a/doc/user/packages/nuget_repository/index.md
+++ b/doc/user/packages/nuget_repository/index.md
@@ -77,6 +77,8 @@ To use the GitLab endpoint for NuGet Packages, choose an option:
Some features such as [publishing](#publish-a-nuget-package) a package are only available on the project-level endpoint.
+When asking for versions of a given NuGet package name, the GitLab Package Registry returns a maximum of 300 most recent versions.
+
WARNING:
Because of how NuGet handles credentials, the Package Registry rejects anonymous requests on the group-level endpoint.
To work around this limitation, set up [authentication](#add-the-package-registry-as-a-source-for-nuget-packages).
@@ -352,12 +354,12 @@ the existing package is overwritten.
## Install packages
-To install a NuGet package from the Package Registry, you must first
-[add a project-level or group-level endpoint](#add-the-package-registry-as-a-source-for-nuget-packages).
-
If multiple packages have the same name and version, when you install
a package, the most recently-published package is retrieved.
+To install a NuGet package from the Package Registry, you must first
+[add a project-level or group-level endpoint](#add-the-package-registry-as-a-source-for-nuget-packages).
+
### Install a package with the NuGet CLI
WARNING:
diff --git a/doc/user/packages/rubygems_registry/index.md b/doc/user/packages/rubygems_registry/index.md
index 2a0fea6e0ef..e31bd8bd0bf 100644
--- a/doc/user/packages/rubygems_registry/index.md
+++ b/doc/user/packages/rubygems_registry/index.md
@@ -9,8 +9,9 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/803) in [GitLab Free](https://about.gitlab.com/pricing/) 13.10.
WARNING:
-The Ruby gems registry for GitLab is under development and isn't ready for production use due to
-limited functionality.
+The Ruby gems package registry for GitLab is under development and isn't ready for production use due to
+limited functionality. This [epic](https://gitlab.com/groups/gitlab-org/-/epics/3200) details the remaining
+work and timelines to make it production ready.
You can publish Ruby gems in your project's Package Registry, then install the packages when you
need to use them as a dependency. Although you can push gems to the registry, you cannot install