- Published on
GitLabでのMavenの運用方法
- Authors
- Name
- Kikusan
Refs
公式のマニュアルはこちら
https://docs.gitlab.com/ee/user/packages/maven_repository/index.html
Gitlab CI/CD における Mvn Deploy でパッケージをgitlabに登録する方法
デプロイするには以下に設定が必要。
- settings.xmlと同じように、プロジェクト直下
ci_settings.xml
にgitlabの認証情報(CI_JOB_TOKEN)を記載する。
認証情報なので、個人用のアクセストークン、プロジェクトorグループのデプロイトークンでも恐らくできる。
ci用にmaven設定ファイルを作成しているだけなので、他に設定がなければci_settingsの名前はsettingsでもかまわない。
<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">
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Job-Token</name>
<value>${env.CI_JOB_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
- pom.xmlに配置先を記載する。
$はCI中の環境変数を参照してくれる。
<repositories>
<repository>
<id>gitlab-maven</id>
<url>${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
</repository>
<snapshotRepository>
<id>gitlab-maven</id>
<url>${CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
</snapshotRepository>
</distributionManagement>
- .gitlab-ci.ymlにdeployコマンドを記載する。
deployのパラメータで先ほど作成したci_settings.xml
をsettingsファイルとして指定する。
deploy:
image: maven:3.6-jdk-11
script:
- 'mvn deploy -s ci_settings.xml'
only:
- main
ciが走り出したらgitlab-ci.ymlが読み込まれ、deployコマンドでci_settings.xmlにより認証され、pom.xmlに記載のデプロイ先(パッケージレジストリ)に格納される。
Gitlabのパッケージレジストリにあるリポジトリを別プロジェクトから依存関係に追加する方法
- 認証情報をsettings.xmlに記載する。
個人用のアクセストークンか、プロジェクトorグループのデプロイトークンがいい。CI_JOB_TOKENでもgitlab上ではできるが、ローカルでは依存関係をダウンロードしてこれない。
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Deploy-Token</name> <!-- アクセストークンならPrivate-Token -->
<value>[自分で作成したトークン(Use this token as a password. Save it. This password can not be recovered. と書いてあるやつ)]</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
<!-- 依存関係 -->
<dependencies>
<dependency>
<groupId>your.own.group</groupId>
<artifactId>artifactId</artifactId>
<version>0.0.0</version>
</dependency>
</dependencies>
<!-- プロジェクトレベルのMavenエンドポイント -->
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/[YOUR OWN PROJECTID]/packages/maven</url>
</repository>
</repositories>
mvn install
を実行する