Published on

GitLabでのMavenの運用方法

Authors
  • avatar
    Name
    Kikusan
    Twitter

Refs

公式のマニュアルはこちら
https://docs.gitlab.com/ee/user/packages/maven_repository/index.html

Gitlab CI/CD における Mvn Deploy でパッケージをgitlabに登録する方法

リンク: https://docs.gitlab.com/ee/user/packages/maven_repository/index.html#create-maven-packages-with-gitlab-cicd

デプロイするには以下に設定が必要。

  1. 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>
  1. 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>
  1. .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のパッケージレジストリにあるリポジトリを別プロジェクトから依存関係に追加する方法

リンク: https://docs.gitlab.com/ee/user/packages/maven_repository/index.html#authenticate-to-the-package-registry-with-maven

  1. 認証情報を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>
  1. pom.xmlエンドポイントを記載し、依存関係を追加する。
<!-- 依存関係 -->
  <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>
  1. mvn installを実行する