Commit d5aad336 authored by Achilleas Pipinellis's avatar Achilleas Pipinellis

Copyedit the maven packages repo docs

parent e02e7855
# GitLab private Maven repository administration # GitLab private Maven repository administration
> **Notes:** > **Notes:**
> - [Introduced][ee-5811] in GitLab 11.3. - [Introduced][ee-5811] in GitLab 11.3.
> - This document is about the admin guide. Learn how to use GitLab Maven - This document is about the admin guide. Learn how to use GitLab Maven
> repository from [user documentation](../user/project/maven_packages.md). repository from [user documentation](../user/project/maven_packages.md).
When enabled, every project in GitLab will have its own space to store Maven packages. When enabled, every project in GitLab will have its own space to store
[Maven](https://maven.apache.org/) packages.
## Enable the Maven repository ## Enabling the Maven repository
NOTE: **Note:**
Once enabled, newly created projects will have the Packages feature enabled by
default. Existing projects will need to
[explicitly enabled it](../user/project/maven_packages.md#enabling-the-packages-repository).
**Omnibus GitLab installations** **Omnibus GitLab installations**
...@@ -23,21 +29,15 @@ When enabled, every project in GitLab will have its own space to store Maven pac ...@@ -23,21 +29,15 @@ When enabled, every project in GitLab will have its own space to store Maven pac
If you have installed GitLab from source: If you have installed GitLab from source:
1. After the installation is complete, you will have to configure the `packages` 1. After the installation is complete, you will have to configure the `packages`
section in `gitlab.yml` in order to enable it. section in `config/gitlab.yml`. Set to `true` to enable it:
The contents of `gitlab.yml` are:
```
packages:
enabled: true
```
where:
| Parameter | Description | ```yaml
| --------- | ----------- | packages:
| `enabled` | `true` or `false`. Enables the packages repository in GitLab. By default this is `false`. | enabled: true
```
1. [Restart GitLab] for the changes to take effect.
[reconfigure gitlab]: restart_gitlab.md#omnibus-gitlab-reconfigure "How to reconfigure Omnibus GitLab" [reconfigure gitlab]: restart_gitlab.md#omnibus-gitlab-reconfigure "How to reconfigure Omnibus GitLab"
[restart gitlab]: restart_gitlab.md#omnibus-gitlab-reconfigure "How to reconfigure Omnibus GitLab"
[ee-5811]: https://gitlab.com/gitlab-org/gitlab-ee/issues/5811 [ee-5811]: https://gitlab.com/gitlab-org/gitlab-ee/issues/5811
# GitLab Maven Packages repository # GitLab Maven Packages repository **[PREMIUM]**
## Configure project to use GitLab Maven Repository URL > Introduced in [GitLab Premium](https://about.gitlab.com/pricing/) 11.3.
To download packages from GitLab, you need `repository` section in your `pom.xml`. With the GitLab [Maven](https://maven.apache.org) Packages repository, every
project can have its own space to store its Maven artifacts.
## Enabling the Packages repository
NOTE: **Note:**
This option is available only if your GitLab administrator has
[enabled the Packages repository](../../administration/maven_packages.md).
In order to use the GitLab Maven Packages repository, you must enable the
general Packages repository. To enable (or disable) it:
1. Navigate to your project's **Settings > General > Permissions**.
1. Find the "Packages" feature and enable it.
1. Click on **Save changes** for the changes to take effect.
You should then be able to see the **Packages** section on the left sidebar.
Next, you must configure your project to authorize with the Maven repository.
## Authorizing with the Maven repository
If a project is private or you want to upload Maven artifacts to GitLab,
credentials will need to be provided for authorization:
1. Create a new [personal access token](../profile/personal_access_tokens.md)
with the `api` scope.
1. Add a corresponding section to your
[`settings.xml`](https://maven.apache.org/settings.html) file:
```xml
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Private-Token</name>
<value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
```
You should now be able to upload Maven artifacts to your project.
## Configuring your project to use the GitLab Maven repository URL
To download packages from GitLab, you need a `repository` section in your
`pom.xml` file:
```xml ```xml
<repositories> <repositories>
...@@ -13,10 +65,15 @@ To download packages from GitLab, you need `repository` section in your `pom.xml ...@@ -13,10 +65,15 @@ To download packages from GitLab, you need `repository` section in your `pom.xml
</repositories> </repositories>
``` ```
To upload packages to GitLab, you need a `distributionManagement` section in your `pom.xml`. Similarly, to upload packages to GitLab, you need a `distributionManagement`
section in your `pom.xml` file:
```xml ```xml
<distributionManagement> <distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url>
</repository>
<snapshotRepository> <snapshotRepository>
<id>gitlab-maven</id> <id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url>
...@@ -24,74 +81,61 @@ To upload packages to GitLab, you need a `distributionManagement` section in you ...@@ -24,74 +81,61 @@ To upload packages to GitLab, you need a `distributionManagement` section in you
</distributionManagement> </distributionManagement>
``` ```
In both examples, replace `PROJECT_ID` with your project ID. The `id` must be the same with what you
If you have a private GitLab installation, replace `gitlab.com` with your domain name. [defined in `settings.xml`](#authorizing-with-the-maven-repository).
## Configure repository access In both examples, replace `PROJECT_ID` with your project ID which can be found
on the home page of your project.
If a project is private, credentials will need to be provided for authorization.
The preferred way to do this, is by using a [personal access tokens][pat]. If you have a private GitLab installation, replace `gitlab.com` with your
You can add a corresponding section to your `settings.xml` file: domain name.
## Creating maven packages with GitLab CI/CD
```xml
<settings> Once you have your repository configured to use the GitLab Maven Packages repository,
<servers> you can configure GitLab CI/CD to build new packages automatically. The example below
<server> shows how to create a new package each time the `master` branch is updated:
<id>gitlab-maven</id>
<configuration> 1. Create a `ci_settings.xml` file that will serve as Maven's `settings.xml` file.
<httpHeaders> Add the server section with the same id you defined in your `pom.xml` file.
<property> For example, in our case it's `gitlab-maven`:
<name>Private-Token</name>
<value>REPLACE_WITH_YOUR_PRIVATE_TOKEN</value> ```xml
</property> <settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</httpHeaders> xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
</configuration> <servers>
</server> <server>
</servers> <id>gitlab-maven</id>
</settings> <configuration>
``` <httpHeaders>
<property>
## Create maven packages with GitLab CI <name>Job-Token</name>
<value>CI_JOB_TOKEN</value>
Once you have your repository configured to use GitLab Maven Packages repository, </property>
you can configure GitLab CI to build new packages automatically. The example below </httpHeaders>
shows you how to create a new package each time the master branch is updated. </configuration>
</server>
1\. Create a `ci_settings.xml` file specially for GitLab CI and put it into your repository. </servers>
Add server section there with same id as you used for GitLab repository in your `pom.xml` file. </settings>
For example, in our case its `gitlab-maven`. ```
```xml 1. Add a `deploy` job to your `.gitlab-ci.yml` file:
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> ```yaml
<servers> deploy:
<server> image: maven:3.3.9-jdk-8
<id>gitlab-maven</id> script:
<configuration> - 'cp ci_settings.xml /root/.m2/settings.xml'
<httpHeaders> - 'sed -i "s/CI_JOB_TOKEN/${CI_JOB_TOKEN}/g" /root/.m2/settings.xml'
<property> - 'mvn deploy'
<name>Job-Token</name> only:
<value>CI_JOB_TOKEN</value> - master
</property> ```
</httpHeaders>
</configuration> 1. Push those files to your repository.
</server>
</servers> The next time the `deploy` job runs, it will copy `ci_settings.xml` to the
</settings> user's home location (in this case the user is `root` since it runs in a
``` Docker container), and `sed` will replace the placeholder `CI_JOB_TOKEN`
value with the contents of the actual [`CI_JOB_TOKEN`
2\. Add `deploy` section to your `.gitlab-ci.yml` file. environment variable](../../ci/variables/README.md#predefined-variables-environment-variables).
```
deploy:
script:
- 'cp ci_settings.xml /root/.m2/settings.xml'
- 'sed -i "s/CI_JOB_TOKEN/${CI_JOB_TOKEN}/g" /root/.m2/settings.xml'
- 'mvn deploy'
only:
- master
image: maven:3.3.9-jdk-8
```
[pat]: ../profile/personal_access_tokens.md
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment