Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
9fe33f7199
commit
21fc10ad5a
|
|
@ -1,63 +1,9 @@
|
|||
---
|
||||
# Cop supports --auto-correct.
|
||||
# Cop supports --autocorrect.
|
||||
Rails/ContentTag:
|
||||
# Offense count: 163
|
||||
# Temporarily disabled due to too many offenses
|
||||
Enabled: false
|
||||
Details: grace period
|
||||
Exclude:
|
||||
- 'app/controllers/concerns/wiki_actions.rb'
|
||||
- 'app/helpers/appearances_helper.rb'
|
||||
- 'app/helpers/application_helper.rb'
|
||||
- 'app/helpers/avatars_helper.rb'
|
||||
- 'app/helpers/blob_helper.rb'
|
||||
- 'app/helpers/breadcrumbs_helper.rb'
|
||||
- 'app/helpers/button_helper.rb'
|
||||
- 'app/helpers/ci/pipelines_helper.rb'
|
||||
- 'app/helpers/ci/runners_helper.rb'
|
||||
- 'app/helpers/ci/status_helper.rb'
|
||||
- 'app/helpers/clusters_helper.rb'
|
||||
- 'app/helpers/commits_helper.rb'
|
||||
- 'app/helpers/diff_helper.rb'
|
||||
- 'app/helpers/dropdowns_helper.rb'
|
||||
- 'app/helpers/emails_helper.rb'
|
||||
- 'app/helpers/environment_helper.rb'
|
||||
- 'app/helpers/events_helper.rb'
|
||||
- 'app/helpers/groups_helper.rb'
|
||||
- 'app/helpers/hooks_helper.rb'
|
||||
- 'app/helpers/icons_helper.rb'
|
||||
- 'app/helpers/issuables_helper.rb'
|
||||
- 'app/helpers/issues_helper.rb'
|
||||
- 'app/helpers/labels_helper.rb'
|
||||
- 'app/helpers/listbox_helper.rb'
|
||||
- 'app/helpers/markup_helper.rb'
|
||||
- 'app/helpers/notes_helper.rb'
|
||||
- 'app/helpers/projects_helper.rb'
|
||||
- 'app/helpers/repository_languages_helper.rb'
|
||||
- 'app/helpers/search_helper.rb'
|
||||
- 'app/helpers/tab_helper.rb'
|
||||
- 'app/helpers/timeboxes_helper.rb'
|
||||
- 'app/helpers/todos_helper.rb'
|
||||
- 'app/helpers/users_helper.rb'
|
||||
- 'app/helpers/version_check_helper.rb'
|
||||
- 'app/helpers/wiki_helper.rb'
|
||||
- 'app/presenters/ci/pipeline_presenter.rb'
|
||||
- 'app/presenters/merge_request_presenter.rb'
|
||||
- 'app/presenters/project_presenter.rb'
|
||||
- 'app/serializers/analytics/cycle_analytics/stage_entity.rb'
|
||||
- 'app/serializers/entity_date_helper.rb'
|
||||
- 'app/services/system_notes/base_service.rb'
|
||||
- 'app/services/system_notes/commit_service.rb'
|
||||
- 'ee/app/helpers/ee/button_helper.rb'
|
||||
- 'ee/app/helpers/ee/geo_helper.rb'
|
||||
- 'ee/app/helpers/ee/groups_helper.rb'
|
||||
- 'ee/app/helpers/ee/issuables_helper.rb'
|
||||
- 'ee/app/helpers/ee/lock_helper.rb'
|
||||
- 'ee/app/helpers/ee/namespaces_helper.rb'
|
||||
- 'ee/app/helpers/ee/search_helper.rb'
|
||||
- 'ee/lib/gitlab/expiring_subscription_message.rb'
|
||||
- 'lib/banzai/filter/autolink_filter.rb'
|
||||
- 'lib/banzai/filter/gollum_tags_filter.rb'
|
||||
- 'lib/gitlab/emoji.rb'
|
||||
- 'lib/gitlab/form_builders/gitlab_ui_form_builder.rb'
|
||||
- 'app/helpers/page_layout_helper.rb'
|
||||
- 'lib/gitlab/middleware/go.rb'
|
||||
- 'spec/frontend/fixtures/tabs.rb'
|
||||
- 'spec/helpers/avatars_helper_spec.rb'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.0.3
|
||||
3.1.0
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ module Users
|
|||
namespace_storage_limit_banner_error_threshold: 58, # EE-only
|
||||
project_quality_summary_feedback: 59, # EE-only
|
||||
merge_request_settings_moved_callout: 60,
|
||||
new_top_level_group_alert: 61
|
||||
new_top_level_group_alert: 61,
|
||||
artifacts_management_page_feedback_banner: 62
|
||||
}
|
||||
|
||||
validates :feature_name,
|
||||
|
|
|
|||
|
|
@ -22369,6 +22369,7 @@ Name of the feature that the callout is for.
|
|||
| Value | Description |
|
||||
| ----- | ----------- |
|
||||
| <a id="usercalloutfeaturenameenumactive_user_count_threshold"></a>`ACTIVE_USER_COUNT_THRESHOLD` | Callout feature name for active_user_count_threshold. |
|
||||
| <a id="usercalloutfeaturenameenumartifacts_management_page_feedback_banner"></a>`ARTIFACTS_MANAGEMENT_PAGE_FEEDBACK_BANNER` | Callout feature name for artifacts_management_page_feedback_banner. |
|
||||
| <a id="usercalloutfeaturenameenumbuy_pipeline_minutes_notification_dot"></a>`BUY_PIPELINE_MINUTES_NOTIFICATION_DOT` | Callout feature name for buy_pipeline_minutes_notification_dot. |
|
||||
| <a id="usercalloutfeaturenameenumcanary_deployment"></a>`CANARY_DEPLOYMENT` | Callout feature name for canary_deployment. |
|
||||
| <a id="usercalloutfeaturenameenumci_deprecation_warning_for_types_keyword"></a>`CI_DEPRECATION_WARNING_FOR_TYPES_KEYWORD` | Callout feature name for ci_deprecation_warning_for_types_keyword. |
|
||||
|
|
|
|||
|
|
@ -641,8 +641,7 @@ Supported attributes:
|
|||
| `first_contribution` | boolean | Indicates if the merge request is the first contribution of the author. |
|
||||
| `first_deployed_to_production_at` | datetime | Timestamp of when the first deployment finished. |
|
||||
| `force_remove_source_branch` | boolean | Indicates if the project settings will lead to source branch deletion after merge. |
|
||||
| `has_conflicts` | boolean | Indicates if merge request has conflicts and cannot be merged. Dependent on the `merge_status` property. Returns
|
||||
`false` unless `merge_status` is `cannot_be_merged`. |
|
||||
| `has_conflicts` | boolean | Indicates if merge request has conflicts and cannot be merged. Dependent on the `merge_status` property. Returns `false` unless `merge_status` is `cannot_be_merged`. |
|
||||
| `head_pipeline` | object | Pipeline running on the branch HEAD of the merge request. Contains more complete information than `pipeline` and should be used instead of it. |
|
||||
| `id` | integer | ID of the merge request. |
|
||||
| `iid` | integer | Internal ID of the merge request. |
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@ it's reset to a pristine test after each test.
|
|||
inconsistent state, so that following tests might not know about certain columns.
|
||||
- [Example 2](https://gitlab.com/gitlab-org/gitlab/-/issues/368500): A test modifies data that is
|
||||
used by a following test.
|
||||
- [Example 3](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/103434#note_1172316521): A test for a database query passes in a fresh database, but in a
|
||||
CI/CD pipeline where the database is used to process previous test sequences, the test fails. This likely
|
||||
means that the query itself needs to be updated to work in a non-clean database.
|
||||
|
||||
### Ordering assertion
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ tips and tricks to get the most out of white-box testing.
|
|||
What are flaky tests, the different kind of flaky tests we encountered, and what
|
||||
we do about them.
|
||||
|
||||
## [GitLab pipelines](../pipelines.md)
|
||||
## [GitLab pipelines](../pipelines/index.md)
|
||||
|
||||
How GitLab test suite is run in the CI context: setup, caches, artifacts,
|
||||
parallelization, monitoring.
|
||||
|
|
|
|||
|
|
@ -25,58 +25,7 @@ client uses, see the [Composer API documentation](../../../api/packages/composer
|
|||
Composer v2.0 is recommended. Composer v1.0 is supported, but it has lower performance when working
|
||||
in groups with very large numbers of packages.
|
||||
|
||||
## Create a Composer package
|
||||
|
||||
If you do not have a Composer package, create one and check it in to
|
||||
a repository. This example shows a GitLab repository, but the repository
|
||||
can be any public or private repository.
|
||||
|
||||
WARNING:
|
||||
If you are using a GitLab repository, the project must have been created from
|
||||
a group's namespace, rather than a user's namespace. Composer packages
|
||||
[can't be published to projects created from a user's namespace](https://gitlab.com/gitlab-org/gitlab/-/issues/235467).
|
||||
|
||||
1. Create a directory called `my-composer-package` and change to that directory:
|
||||
|
||||
```shell
|
||||
mkdir my-composer-package && cd my-composer-package
|
||||
```
|
||||
|
||||
1. Run [`composer init`](https://getcomposer.org/doc/03-cli.md#init) and answer the prompts.
|
||||
|
||||
For namespace, enter your unique [namespace](../../../user/namespace/index.md), like your GitLab username or group name.
|
||||
|
||||
A file called `composer.json` is created:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "<namespace>/composer-test",
|
||||
"description": "Library XY",
|
||||
"type": "library",
|
||||
"license": "GPL-3.0-only",
|
||||
"authors": [
|
||||
{
|
||||
"name": "John Doe",
|
||||
"email": "john@example.com"
|
||||
}
|
||||
],
|
||||
"require": {}
|
||||
}
|
||||
```
|
||||
|
||||
1. Run Git commands to tag the changes and push them to your repository:
|
||||
|
||||
```shell
|
||||
git init
|
||||
git add composer.json
|
||||
git commit -m 'Composer package test'
|
||||
git tag v1.0.0
|
||||
git remote add origin git@gitlab.example.com:<namespace>/<project-name>.git
|
||||
git push --set-upstream origin main
|
||||
git push origin v1.0.0
|
||||
```
|
||||
|
||||
The package is now in your GitLab Package Registry.
|
||||
Learn how to [build a Composer package](../workflows/build_packages.md#composer).
|
||||
|
||||
## Publish a Composer package by using the API
|
||||
|
||||
|
|
@ -110,7 +59,7 @@ To publish the package with a personal access token:
|
|||
- `<personal-access-token>` is your personal access token.
|
||||
- `<project_id>` is your project ID.
|
||||
- `<tag>` is the Git tag name of the version you want to publish.
|
||||
To publish a branch, use `branch=<branch>` instead of `tag=<tag>`.
|
||||
To publish a branch, use `branch=<branch>` instead of `tag=<tag>`.
|
||||
|
||||
To publish the package with a deploy token:
|
||||
|
||||
|
|
@ -125,7 +74,7 @@ To publish the package with a deploy token:
|
|||
- `<deploy-token>` is your deploy token
|
||||
- `<project_id>` is your project ID.
|
||||
- `<tag>` is the Git tag name of the version you want to publish.
|
||||
To publish a branch, use `branch=<branch>` instead of `tag=<tag>`.
|
||||
To publish a branch, use `branch=<branch>` instead of `tag=<tag>`.
|
||||
|
||||
You can view the published package by going to **Packages and registries > Package Registry** and
|
||||
selecting the **Composer** tab.
|
||||
|
|
|
|||
|
|
@ -29,105 +29,7 @@ Package Registry.
|
|||
For documentation of the specific API endpoints that the Conan package manager
|
||||
client uses, see the [Conan API documentation](../../../api/packages/conan.md).
|
||||
|
||||
## Build a Conan package
|
||||
|
||||
This section explains how to install Conan and build a package for your C/C++
|
||||
project.
|
||||
|
||||
If you already use Conan and know how to build your own packages, go to the
|
||||
[next section](#add-the-package-registry-as-a-conan-remote).
|
||||
|
||||
### Install Conan
|
||||
|
||||
Download the Conan package manager to your local development environment by
|
||||
following the instructions at [conan.io](https://conan.io/downloads.html).
|
||||
|
||||
When installation is complete, verify you can use Conan in your terminal by
|
||||
running:
|
||||
|
||||
```shell
|
||||
conan --version
|
||||
```
|
||||
|
||||
The Conan version is printed in the output:
|
||||
|
||||
```plaintext
|
||||
Conan version 1.20.5
|
||||
```
|
||||
|
||||
### Install CMake
|
||||
|
||||
When you develop with C++ and Conan, you can select from many available
|
||||
compilers. This example uses the CMake build system generator.
|
||||
|
||||
To install CMake:
|
||||
|
||||
- For Mac, use [Homebrew](https://brew.sh/) and run `brew install cmake`.
|
||||
- For other operating systems, follow the instructions at [cmake.org](https://cmake.org/install/).
|
||||
|
||||
When installation is complete, verify you can use CMake in your terminal by
|
||||
running:
|
||||
|
||||
```shell
|
||||
cmake --version
|
||||
```
|
||||
|
||||
The CMake version is printed in the output.
|
||||
|
||||
### Create a project
|
||||
|
||||
To test the Package Registry, you need a C++ project. If you don't already have
|
||||
one, you can clone the Conan [hello world starter project](https://github.com/conan-io/hello).
|
||||
|
||||
### Build a package
|
||||
|
||||
To build a package:
|
||||
|
||||
1. Open a terminal and navigate to your project's root folder.
|
||||
1. Generate a new recipe by running `conan new` with a package name and version:
|
||||
|
||||
```shell
|
||||
conan new Hello/0.1 -t
|
||||
```
|
||||
|
||||
1. Create a package for the recipe by running `conan create` with the Conan user
|
||||
and channel:
|
||||
|
||||
```shell
|
||||
conan create . mycompany/beta
|
||||
```
|
||||
|
||||
NOTE:
|
||||
If you use an [instance remote](#add-a-remote-for-your-instance), you must
|
||||
follow a specific [naming convention](#package-recipe-naming-convention-for-instance-remotes).
|
||||
|
||||
A package with the recipe `Hello/0.1@mycompany/beta` is created.
|
||||
|
||||
For more details about creating and managing Conan packages, see the
|
||||
[Conan documentation](https://docs.conan.io/en/latest/creating_packages.html).
|
||||
|
||||
#### Package without a username and a channel
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/345055) in GitLab 14.6.
|
||||
|
||||
Even though they are [recommended](https://docs.conan.io/en/latest/reference/conanfile/attributes.html#user-channel)
|
||||
to distinguish your package from a similarly named existing package,
|
||||
the username and channel are not mandatory fields for a Conan package.
|
||||
|
||||
You can create a package without a username and channel by removing them from
|
||||
the `create` command:
|
||||
|
||||
```shell
|
||||
conan create .
|
||||
```
|
||||
|
||||
The username _and_ the channel must be blank. If only one of these fields is
|
||||
blank, the request is rejected.
|
||||
|
||||
NOTE:
|
||||
Empty usernames and channels can only be used if you use a [project remote](#add-a-remote-for-your-project).
|
||||
If you use an [instance remote](#add-a-remote-for-your-instance), the username
|
||||
and the channel must be set.
|
||||
Learn how to [build a Conan package](../workflows/build_packages.md#conan).
|
||||
|
||||
## Add the Package Registry as a Conan remote
|
||||
|
||||
|
|
@ -193,12 +95,12 @@ recipe `user` must be the plus sign (`+`) separated project path.
|
|||
|
||||
Example recipe names:
|
||||
|
||||
| Project | Package | Supported |
|
||||
| ---------------------------------- | ----------------------------------------------- | --------- |
|
||||
| `foo/bar` | `my-package/1.0.0@foo+bar/stable` | Yes |
|
||||
| `foo/bar-baz/buz` | `my-package/1.0.0@foo+bar-baz+buz/stable` | Yes |
|
||||
| `gitlab-org/gitlab-ce` | `my-package/1.0.0@gitlab-org+gitlab-ce/stable` | Yes |
|
||||
| `gitlab-org/gitlab-ce` | `my-package/1.0.0@foo/stable` | No |
|
||||
| Project | Package | Supported |
|
||||
| ---------------------- | ---------------------------------------------- | --------- |
|
||||
| `foo/bar` | `my-package/1.0.0@foo+bar/stable` | Yes |
|
||||
| `foo/bar-baz/buz` | `my-package/1.0.0@foo+bar-baz+buz/stable` | Yes |
|
||||
| `gitlab-org/gitlab-ce` | `my-package/1.0.0@gitlab-org+gitlab-ce/stable` | Yes |
|
||||
| `gitlab-org/gitlab-ce` | `my-package/1.0.0@foo/stable` | No |
|
||||
|
||||
[Project remotes](#add-a-remote-for-your-project) have a more flexible naming
|
||||
convention.
|
||||
|
|
|
|||
|
|
@ -14,177 +14,7 @@ Then, install the packages whenever you need to use them as a dependency.
|
|||
For documentation of the specific API endpoints that the Maven package manager
|
||||
client uses, see the [Maven API documentation](../../../api/packages/maven.md).
|
||||
|
||||
## Build a Maven package
|
||||
|
||||
This section explains how to install Maven and build a package.
|
||||
|
||||
If you already use Maven and know how to build your own packages, go to the
|
||||
[next section](#authenticate-to-the-package-registry-with-maven).
|
||||
|
||||
Maven repositories work well with Gradle, too. To set up a Gradle project, see [get started with Gradle](#build-a-java-project-with-gradle).
|
||||
|
||||
### Install Maven
|
||||
|
||||
The required minimum versions are:
|
||||
|
||||
- Java 11.0.5+
|
||||
- Maven 3.6+
|
||||
|
||||
Follow the instructions at [maven.apache.org](https://maven.apache.org/install.html)
|
||||
to download and install Maven for your local development environment. After
|
||||
installation is complete, verify you can use Maven in your terminal by running:
|
||||
|
||||
```shell
|
||||
mvn --version
|
||||
```
|
||||
|
||||
The output should be similar to:
|
||||
|
||||
```shell
|
||||
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T20:00:29+01:00)
|
||||
Maven home: /Users/<your_user>/apache-maven-3.6.1
|
||||
Java version: 12.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
|
||||
Default locale: en_GB, platform encoding: UTF-8
|
||||
OS name: "mac os x", version: "10.15.2", arch: "x86_64", family: "mac"
|
||||
```
|
||||
|
||||
### Create a project
|
||||
|
||||
Follow these steps to create a Maven project that can be
|
||||
published to the GitLab Package Registry.
|
||||
|
||||
1. Open your terminal and create a directory to store the project.
|
||||
1. From the new directory, run this Maven command to initialize a new package:
|
||||
|
||||
```shell
|
||||
mvn archetype:generate -DgroupId=com.mycompany.mydepartment -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
|
||||
```
|
||||
|
||||
The arguments are:
|
||||
|
||||
- `DgroupId`: A unique string that identifies your package. Follow
|
||||
the [Maven naming conventions](https://maven.apache.org/guides/mini/guide-naming-conventions.html).
|
||||
- `DartifactId`: The name of the `JAR`, appended to the end of the `DgroupId`.
|
||||
- `DarchetypeArtifactId`: The archetype used to create the initial structure of
|
||||
the project.
|
||||
- `DinteractiveMode`: Create the project using batch mode (optional).
|
||||
|
||||
This message indicates that the project was set up successfully:
|
||||
|
||||
```shell
|
||||
...
|
||||
[INFO] ------------------------------------------------------------------------
|
||||
[INFO] BUILD SUCCESS
|
||||
[INFO] ------------------------------------------------------------------------
|
||||
[INFO] Total time: 3.429 s
|
||||
[INFO] Finished at: 2020-01-28T11:47:04Z
|
||||
[INFO] ------------------------------------------------------------------------
|
||||
```
|
||||
|
||||
In the folder where you ran the command, a new directory should be displayed.
|
||||
The directory name should match the `DartifactId` parameter, which in this case,
|
||||
is `my-project`.
|
||||
|
||||
## Build a Java project with Gradle
|
||||
|
||||
This section explains how to install Gradle and initialize a Java project.
|
||||
|
||||
If you already use Gradle and know how to build your own packages, go to the
|
||||
[next section](#authenticate-to-the-package-registry-with-maven).
|
||||
|
||||
### Install Gradle
|
||||
|
||||
If you want to create a new Gradle project, you must install Gradle. Follow
|
||||
instructions at [gradle.org](https://gradle.org/install/) to download and install
|
||||
Gradle for your local development environment.
|
||||
|
||||
In your terminal, verify you can use Gradle by running:
|
||||
|
||||
```shell
|
||||
gradle -version
|
||||
```
|
||||
|
||||
To use an existing Gradle project, in the project directory,
|
||||
on Linux execute `gradlew`, or on Windows execute `gradlew.bat`.
|
||||
|
||||
The output should be similar to:
|
||||
|
||||
```plaintext
|
||||
------------------------------------------------------------
|
||||
Gradle 6.0.1
|
||||
------------------------------------------------------------
|
||||
|
||||
Build time: 2019-11-18 20:25:01 UTC
|
||||
Revision: fad121066a68c4701acd362daf4287a7c309a0f5
|
||||
|
||||
Kotlin: 1.3.50
|
||||
Groovy: 2.5.8
|
||||
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
|
||||
JVM: 11.0.5 (Oracle Corporation 11.0.5+10)
|
||||
OS: Windows 10 10.0 amd64
|
||||
```
|
||||
|
||||
### Create a Java project
|
||||
|
||||
Follow these steps to create a Maven project that can be
|
||||
published to the GitLab Package Registry.
|
||||
|
||||
1. Open your terminal and create a directory to store the project.
|
||||
1. From this new directory, run this Maven command to initialize a new package:
|
||||
|
||||
```shell
|
||||
gradle init
|
||||
```
|
||||
|
||||
The output should be:
|
||||
|
||||
```plaintext
|
||||
Select type of project to generate:
|
||||
1: basic
|
||||
2: application
|
||||
3: library
|
||||
4: Gradle plugin
|
||||
Enter selection (default: basic) [1..4]
|
||||
```
|
||||
|
||||
1. Enter `3` to create a new Library project. The output should be:
|
||||
|
||||
```plaintext
|
||||
Select implementation language:
|
||||
1: C++
|
||||
2: Groovy
|
||||
3: Java
|
||||
4: Kotlin
|
||||
5: Scala
|
||||
6: Swift
|
||||
```
|
||||
|
||||
1. Enter `3` to create a new Java Library project. The output should be:
|
||||
|
||||
```plaintext
|
||||
Select build script DSL:
|
||||
1: Groovy
|
||||
2: Kotlin
|
||||
Enter selection (default: Groovy) [1..2]
|
||||
```
|
||||
|
||||
1. Enter `1` to create a new Java Library project that is described in Groovy DSL, or `2` to create one that is described in Kotlin DSL. The output should be:
|
||||
|
||||
```plaintext
|
||||
Select test framework:
|
||||
1: JUnit 4
|
||||
2: TestNG
|
||||
3: Spock
|
||||
4: JUnit Jupiter
|
||||
```
|
||||
|
||||
1. Enter `1` to initialize the project with JUnit 4 testing libraries. The output should be:
|
||||
|
||||
```plaintext
|
||||
Project name (default: test):
|
||||
```
|
||||
|
||||
1. Enter a project name or press <kbd>Enter</kbd> to use the directory name as project name.
|
||||
Learn how to build a [Maven](../workflows/build_packages.md#maven) or [Gradle](../workflows/build_packages.md#gradle) package.
|
||||
|
||||
## Authenticate to the Package Registry with Maven
|
||||
|
||||
|
|
@ -561,11 +391,11 @@ for download.
|
|||
**Only packages that have the same path as the project** are exposed by
|
||||
the instance-level endpoint.
|
||||
|
||||
| Project | Package | Instance-level endpoint available |
|
||||
| ------- | ------- | --------------------------------- |
|
||||
| `foo/bar` | `foo/bar/1.0-SNAPSHOT` | Yes |
|
||||
| `gitlab-org/gitlab` | `foo/bar/1.0-SNAPSHOT` | No |
|
||||
| `gitlab-org/gitlab` | `gitlab-org/gitlab/1.0-SNAPSHOT` | Yes |
|
||||
| Project | Package | Instance-level endpoint available |
|
||||
| ------------------- | -------------------------------- | --------------------------------- |
|
||||
| `foo/bar` | `foo/bar/1.0-SNAPSHOT` | Yes |
|
||||
| `gitlab-org/gitlab` | `foo/bar/1.0-SNAPSHOT` | No |
|
||||
| `gitlab-org/gitlab` | `gitlab-org/gitlab/1.0-SNAPSHOT` | Yes |
|
||||
|
||||
This example shows how relevant `repository` section of your `pom.xml`.
|
||||
You still need a project-specific URL in the `distributionManagement` section.
|
||||
|
|
@ -838,7 +668,7 @@ dependencies {
|
|||
|
||||
### Request forwarding to Maven Central
|
||||
|
||||
> [Introduced](<https://gitlab.com/gitlab-org/gitlab/-/issues/362657>) behind a [feature flag](../../feature_flags.md), disabled by default in GitLab 15.4
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/362657) behind a [feature flag](../../feature_flags.md), disabled by default in GitLab 15.4
|
||||
|
||||
FLAG:
|
||||
On self-managed GitLab, by default this feature is not available. To make it available, ask an administrator to [enable the feature flag](../../../administration/feature_flags.md) named `maven_central_request_forwarding`.
|
||||
|
|
@ -1053,20 +883,20 @@ that you can use when performing tasks with GitLab CI/CD.
|
|||
|
||||
- Specify where to find the `pom.xml` file (`-f,--file`):
|
||||
|
||||
```yaml
|
||||
package:
|
||||
script:
|
||||
- 'mvn --no-transfer-progress -f helloworld/pom.xml package'
|
||||
```
|
||||
```yaml
|
||||
package:
|
||||
script:
|
||||
- 'mvn --no-transfer-progress -f helloworld/pom.xml package'
|
||||
```
|
||||
|
||||
- Specify where to find the user settings (`-s,--settings`) instead of
|
||||
[the default location](https://maven.apache.org/settings.html). There's also a `-gs,--global-settings` option:
|
||||
|
||||
```yaml
|
||||
package:
|
||||
script:
|
||||
- 'mvn -s settings/ci.xml package'
|
||||
```
|
||||
```yaml
|
||||
package:
|
||||
script:
|
||||
- 'mvn -s settings/ci.xml package'
|
||||
```
|
||||
|
||||
### Verify your Maven settings
|
||||
|
||||
|
|
|
|||
|
|
@ -20,72 +20,7 @@ WARNING:
|
|||
Never hardcode GitLab tokens (or any tokens) directly in `.npmrc` files or any other files that can
|
||||
be committed to a repository.
|
||||
|
||||
## Build an npm package
|
||||
|
||||
This section covers how to install npm or Yarn and build a package for your
|
||||
JavaScript project.
|
||||
|
||||
If you already use npm and know how to build your own packages, go to
|
||||
the [next section](#authenticate-to-the-package-registry).
|
||||
|
||||
### Install npm
|
||||
|
||||
Install Node.js and npm in your local development environment by following
|
||||
the instructions at [npmjs.com](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/).
|
||||
|
||||
When installation is complete, verify you can use npm in your terminal by
|
||||
running:
|
||||
|
||||
```shell
|
||||
npm --version
|
||||
```
|
||||
|
||||
The npm version is shown in the output:
|
||||
|
||||
```plaintext
|
||||
6.10.3
|
||||
```
|
||||
|
||||
### Install Yarn
|
||||
|
||||
As an alternative to npm, you can install Yarn in your local environment by following the
|
||||
instructions at [classic.yarnpkg.com](https://classic.yarnpkg.com/en/docs/install).
|
||||
|
||||
When installation is complete, verify you can use Yarn in your terminal by
|
||||
running:
|
||||
|
||||
```shell
|
||||
yarn --version
|
||||
```
|
||||
|
||||
The Yarn version is shown in the output:
|
||||
|
||||
```plaintext
|
||||
1.19.1
|
||||
```
|
||||
|
||||
### Create a project
|
||||
|
||||
To create a project:
|
||||
|
||||
1. Create an empty directory.
|
||||
1. Go to the directory and initialize an empty package by running:
|
||||
|
||||
```shell
|
||||
npm init
|
||||
```
|
||||
|
||||
Or if you're using Yarn:
|
||||
|
||||
```shell
|
||||
yarn init
|
||||
```
|
||||
|
||||
1. Enter responses to the questions. Ensure the **package name** follows
|
||||
the [naming convention](#package-naming-convention) and is scoped to the
|
||||
project or group where the registry exists.
|
||||
|
||||
A `package.json` file is created.
|
||||
Learn how to build an [npm](../workflows/build_packages.md#npm) or [yarn](../workflows/build_packages.md#yarn) package.
|
||||
|
||||
## Use the GitLab endpoint for npm packages
|
||||
|
||||
|
|
@ -244,15 +179,15 @@ In this case, the `@scope` needs to be `@registries-group` and not `@source-code
|
|||
For example, if your project is `https://gitlab.example.com/my-org/engineering-group/team-amazing/analytics`,
|
||||
the root namespace is `my-org`. When you publish a package, it must have `my-org` as the scope.
|
||||
|
||||
| Project | Package | Supported |
|
||||
| ---------------------- | ----------------------- | --------- |
|
||||
| `my-org/bar` | `@my-org/bar` | Yes |
|
||||
| `my-org/bar/baz` | `@my-org/baz` | Yes |
|
||||
| `My-Org/Bar/baz` | `@my-org/Baz` | Yes |
|
||||
| `My-Org/Bar/baz` | `@My-Org/Baz` | Yes |
|
||||
| `my-org/bar/buz` | `@my-org/anything` | Yes |
|
||||
| `gitlab-org/gitlab` | `@gitlab-org/gitlab` | Yes |
|
||||
| `gitlab-org/gitlab` | `@foo/bar` | No |
|
||||
| Project | Package | Supported |
|
||||
| ------------------- | -------------------- | --------- |
|
||||
| `my-org/bar` | `@my-org/bar` | Yes |
|
||||
| `my-org/bar/baz` | `@my-org/baz` | Yes |
|
||||
| `My-Org/Bar/baz` | `@my-org/Baz` | Yes |
|
||||
| `My-Org/Bar/baz` | `@My-Org/Baz` | Yes |
|
||||
| `my-org/bar/buz` | `@my-org/anything` | Yes |
|
||||
| `gitlab-org/gitlab` | `@gitlab-org/gitlab` | Yes |
|
||||
| `gitlab-org/gitlab` | `@foo/bar` | No |
|
||||
|
||||
In GitLab, this regex validates all package names from all package managers:
|
||||
|
||||
|
|
@ -290,7 +225,9 @@ You can also define `"publishConfig"` for your project in `package.json`. For ex
|
|||
|
||||
```json
|
||||
{
|
||||
"publishConfig": { "@foo:registry":" https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/" }
|
||||
"publishConfig": {
|
||||
"@foo:registry": " https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -342,13 +279,13 @@ To publish and install with the project-level npm endpoint, set the following co
|
|||
```yaml
|
||||
npmScopes:
|
||||
foo:
|
||||
npmRegistryServer: "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/"
|
||||
npmPublishRegistry: "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/"
|
||||
npmRegistryServer: 'https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/'
|
||||
npmPublishRegistry: 'https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/'
|
||||
|
||||
npmRegistries:
|
||||
//gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/:
|
||||
npmAlwaysAuth: true
|
||||
npmAuthToken: "<your_token>"
|
||||
npmAuthToken: '<your_token>'
|
||||
```
|
||||
|
||||
For the instance-level npm endpoint, use this Yarn 2 configuration in `.yarnrc.yml`:
|
||||
|
|
@ -356,12 +293,12 @@ For the instance-level npm endpoint, use this Yarn 2 configuration in `.yarnrc.y
|
|||
```yaml
|
||||
npmScopes:
|
||||
foo:
|
||||
npmRegistryServer: "https://gitlab.example.com/api/v4/packages/npm/"
|
||||
npmRegistryServer: 'https://gitlab.example.com/api/v4/packages/npm/'
|
||||
|
||||
npmRegistries:
|
||||
//gitlab.example.com/api/v4/packages/npm/:
|
||||
npmAlwaysAuth: true
|
||||
npmAuthToken: "<your_token>"
|
||||
npmAuthToken: '<your_token>'
|
||||
```
|
||||
|
||||
In this configuration:
|
||||
|
|
@ -561,7 +498,7 @@ should look like:
|
|||
{
|
||||
"name": "@foo/my-package",
|
||||
"version": "1.0.0",
|
||||
"description": "Example package for GitLab npm registry",
|
||||
"description": "Example package for GitLab npm registry"
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -22,47 +22,7 @@ The Package Registry works with:
|
|||
For documentation of the specific API endpoints that these
|
||||
clients use, see the [NuGet API documentation](../../../api/packages/nuget.md).
|
||||
|
||||
## Install NuGet
|
||||
|
||||
The required minimum versions are:
|
||||
|
||||
- [NuGet CLI 5.1 or later](https://www.nuget.org/downloads). If you have
|
||||
[Visual Studio](https://visualstudio.microsoft.com/vs/), the NuGet CLI is
|
||||
probably already installed.
|
||||
- Alternatively, you can use [.NET SDK 3.0 or later](https://dotnet.microsoft.com/download/dotnet/3.0),
|
||||
which installs the NuGet CLI.
|
||||
- NuGet protocol version 3 or later.
|
||||
|
||||
Verify that the [NuGet CLI](https://www.nuget.org/) is installed by running:
|
||||
|
||||
```shell
|
||||
nuget help
|
||||
```
|
||||
|
||||
The output should be similar to:
|
||||
|
||||
```plaintext
|
||||
NuGet Version: 5.1.0.6013
|
||||
usage: NuGet <command> [args] [options]
|
||||
Type 'NuGet help <command>' for help on a specific command.
|
||||
|
||||
Available commands:
|
||||
|
||||
[output truncated]
|
||||
```
|
||||
|
||||
### Install NuGet on macOS
|
||||
|
||||
For macOS, you can use [Mono](https://www.mono-project.com/) to run the
|
||||
NuGet CLI.
|
||||
|
||||
1. If you use Homebrew, to install Mono, run `brew install mono`.
|
||||
1. Download the Windows C# binary `nuget.exe` from the [NuGet CLI page](https://www.nuget.org/downloads).
|
||||
1. Run this command:
|
||||
|
||||
```shell
|
||||
mono nuget.exe
|
||||
```
|
||||
Learn how to [install NuGet](../workflows/build_packages.md#nuget).
|
||||
|
||||
## Use the GitLab endpoint for NuGet Packages
|
||||
|
||||
|
|
@ -162,6 +122,7 @@ To use the [project-level](#use-the-gitlab-endpoint-for-nuget-packages) NuGet en
|
|||
1. In the **NuGet** section, select **Sources** to view a list of all your NuGet sources.
|
||||
1. Select **Add**.
|
||||
1. Complete the following fields:
|
||||
|
||||
- **Name**: Name for the source.
|
||||
- **Location**: `https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json`,
|
||||
where `<your_project_id>` is your project ID, and `gitlab.example.com` is
|
||||
|
|
@ -191,6 +152,7 @@ To use the [group-level](#use-the-gitlab-endpoint-for-nuget-packages) NuGet endp
|
|||
1. In the **NuGet** section, select **Sources** to view a list of all your NuGet sources.
|
||||
1. Select **Add**.
|
||||
1. Complete the following fields:
|
||||
|
||||
- **Name**: Name for the source.
|
||||
- **Location**: `https://gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/nuget/index.json`,
|
||||
where `<your_group_id>` is your group ID, and `gitlab.example.com` is
|
||||
|
|
|
|||
|
|
@ -20,148 +20,7 @@ The Package Registry works with:
|
|||
For documentation of the specific API endpoints that the `pip` and `twine`
|
||||
clients use, see the [PyPI API documentation](../../../api/packages/pypi.md).
|
||||
|
||||
## Build a PyPI package
|
||||
|
||||
This section explains how to create a PyPI package.
|
||||
|
||||
If you already use PyPI and know how to build your own packages, go to the
|
||||
[next section](#authenticate-with-the-package-registry).
|
||||
|
||||
### Install pip and twine
|
||||
|
||||
Install a recent version of [pip](https://pypi.org/project/pip/) and
|
||||
[twine](https://pypi.org/project/twine/).
|
||||
|
||||
### Create a project
|
||||
|
||||
Create a test project.
|
||||
|
||||
1. Open your terminal.
|
||||
1. Create a directory called `MyPyPiPackage`, and then go to that directory:
|
||||
|
||||
```shell
|
||||
mkdir MyPyPiPackage && cd MyPyPiPackage
|
||||
```
|
||||
|
||||
1. Create another directory and go to it:
|
||||
|
||||
```shell
|
||||
mkdir mypypipackage && cd mypypipackage
|
||||
```
|
||||
|
||||
1. Create the required files in this directory:
|
||||
|
||||
```shell
|
||||
touch __init__.py
|
||||
touch greet.py
|
||||
```
|
||||
|
||||
1. Open the `greet.py` file, and then add:
|
||||
|
||||
```python
|
||||
def SayHello():
|
||||
print("Hello from MyPyPiPackage")
|
||||
return
|
||||
```
|
||||
|
||||
1. Open the `__init__.py` file, and then add:
|
||||
|
||||
```python
|
||||
from .greet import SayHello
|
||||
```
|
||||
|
||||
1. To test the code, in your `MyPyPiPackage` directory, start the Python prompt.
|
||||
|
||||
```shell
|
||||
python
|
||||
```
|
||||
|
||||
1. Run this command:
|
||||
|
||||
```python
|
||||
>>> from mypypipackage import SayHello
|
||||
>>> SayHello()
|
||||
```
|
||||
|
||||
A message indicates that the project was set up successfully:
|
||||
|
||||
```plaintext
|
||||
Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)
|
||||
[Clang 6.0 (clang-600.0.57)] on darwin
|
||||
Type "help", "copyright", "credits" or "license" for more information.
|
||||
>>> from mypypipackage import SayHello
|
||||
>>> SayHello()
|
||||
Hello from MyPyPiPackage
|
||||
```
|
||||
|
||||
### Create a package
|
||||
|
||||
After you create a project, you can create a package.
|
||||
|
||||
1. In your terminal, go to the `MyPyPiPackage` directory.
|
||||
1. Create a `pyproject.toml` file:
|
||||
|
||||
```shell
|
||||
touch pyproject.toml
|
||||
```
|
||||
|
||||
This file contains all the information about the package. For more information
|
||||
about this file, see [creating `pyproject.toml`](https://packaging.python.org/en/latest/tutorials/packaging-projects/#creating-pyproject-toml).
|
||||
Because GitLab identifies packages based on
|
||||
[Python normalized names (PEP-503)](https://www.python.org/dev/peps/pep-0503/#normalized-names),
|
||||
ensure your package name meets these requirements. See the [installation section](#authenticate-with-a-ci-job-token)
|
||||
for details.
|
||||
|
||||
1. Open the `pyproject.toml` file, and then add basic information:
|
||||
|
||||
```toml
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "mypypipackage"
|
||||
version = "0.0.1"
|
||||
authors = [
|
||||
{ name="Example Author", email="author@example.com" },
|
||||
]
|
||||
description = "A small example package"
|
||||
requires-python = ">=3.7"
|
||||
classifiers = [
|
||||
"Programming Language :: Python :: 3",
|
||||
"Operating System :: OS Independent",
|
||||
]
|
||||
|
||||
[tool.setuptools.packages]
|
||||
find = {}
|
||||
```
|
||||
|
||||
1. Save the file.
|
||||
1. Install the package build library:
|
||||
|
||||
```shell
|
||||
pip install build
|
||||
```
|
||||
|
||||
1. Build the package:
|
||||
|
||||
```shell
|
||||
python -m build
|
||||
```
|
||||
|
||||
The output should be visible in a newly-created `dist` folder:
|
||||
|
||||
```shell
|
||||
ls dist
|
||||
```
|
||||
|
||||
The output should appear similar to the following:
|
||||
|
||||
```plaintext
|
||||
mypypipackage-0.0.1-py3-none-any.whl mypypipackage-0.0.1.tar.gz
|
||||
```
|
||||
|
||||
The package is now ready to be published to the Package Registry.
|
||||
Learn how to [build a PyPI package](../workflows/build_packages.md#pypi).
|
||||
|
||||
## Authenticate with the Package Registry
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require 'fast_spec_helper'
|
||||
require_relative '../../scripts/failed_tests'
|
||||
|
||||
RSpec.describe FailedTests do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require 'fast_spec_helper'
|
||||
require_relative '../../scripts/pipeline_test_report_builder'
|
||||
|
||||
RSpec.describe PipelineTestReportBuilder do
|
||||
|
|
|
|||
|
|
@ -9451,16 +9451,6 @@
|
|||
- './spec/routing/projects/security/configuration_controller_routing_spec.rb'
|
||||
- './spec/routing/routing_spec.rb'
|
||||
- './spec/routing/uploads_routing_spec.rb'
|
||||
- './spec/scripts/changed-feature-flags_spec.rb'
|
||||
- './spec/scripts/determine-qa-tests_spec.rb'
|
||||
- './spec/scripts/failed_tests_spec.rb'
|
||||
- './spec/scripts/lib/glfm/parse_examples_spec.rb'
|
||||
- './spec/scripts/lib/glfm/shared_spec.rb'
|
||||
- './spec/scripts/lib/glfm/update_example_snapshots_spec.rb'
|
||||
- './spec/scripts/lib/glfm/update_specification_spec.rb'
|
||||
- './spec/scripts/pipeline_test_report_builder_spec.rb'
|
||||
- './spec/scripts/setup/find_jh_branch_spec.rb'
|
||||
- './spec/scripts/trigger-build_spec.rb'
|
||||
- './spec/serializers/accessibility_error_entity_spec.rb'
|
||||
- './spec/serializers/accessibility_reports_comparer_entity_spec.rb'
|
||||
- './spec/serializers/accessibility_reports_comparer_serializer_spec.rb'
|
||||
|
|
|
|||
Loading…
Reference in New Issue