如何配置極狐GitLab Maven 倉庫

极狐GitLab發表於2024-03-08

本文作者:徐曉偉

GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。

極狐GitLab Maven 倉庫

極狐GitLab Maven 私庫使用方式

文件

  1. 軟體包庫中的 Maven 包

配置(以Maven為例)

  • 示例專案 my-maven-app
  1. 身份認證(以下順序為官方文件的順序,選擇一個適合自己的即可)

    1. 在 Maven 中使用個人訪問令牌進行身份驗證

      • settings.xml 檔案中的配置如下
      <settings>
        <servers>
          <server>
            <!-- 固定值 -->
            <id>gitlab-maven</id>
            <configuration>
              <httpHeaders>
                <property>
                  <!-- 此方式的固定值,不可改 -->
                  <name>Private-Token</name>
                  <!-- 個人令牌,推薦在個人電腦上執行時使用(個人令牌需要 api 許可權) -->
                  <value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value>
                </property>
              </httpHeaders>
            </configuration>
          </server>
        </servers>
      </settings>
      
    2. 在 Maven 中使用部署令牌進行身份驗證

      • settings.xml 檔案中的配置如下
      <settings>
        <servers>
          <server>
            <!-- 固定值 -->
            <id>gitlab-maven</id>
            <configuration>
              <httpHeaders>
                <property>
                  <!-- 此方式的固定值,不可改 -->
                  <name>Deploy-Token</name>
                  <!-- 部署令牌,推薦在不是 GitLab Runner 流水線時使用 -->
                  <!-- 在專案的倉庫設定中可建立部署令牌,需要 read_package_registry、write_package_registry 許可權 -->
                  <value>REPLACE_WITH_YOUR_DEPLOY_TOKEN</value>
                </property>
              </httpHeaders>
            </configuration>
          </server>
        </servers>
      </settings>
      
    3. 使用 Maven 中的 CI 作業令牌進行身份驗證

      • settings.xml 檔案中的配置如下
      • 此處使用的是 GitLab Runner 流水線釋出 jar 包(其他方式釋出時的命令雷同)
      • 示例專案 my-maven-app 中使用自定義 settings.xml 檔名為 settings.xml,並在其中增加了國內Maven倉庫代理,用於加速依賴下載,釋出命令
      • 僅釋出二進位制:mvn clean -U package deploy -DskipTests -s settings.xml
      • 釋出二進位制、原始碼:mvn clean -U package source:jar deploy -DskipTests -s settings.xml
      • 釋出二進位制、原始碼、javadoc: mvn clean -U package source:jar javadoc:jar deploy -DskipTests -s settings.xml
      <settings>
        <servers>
          <server>
            <!-- 固定值 -->
            <id>gitlab-maven</id>
            <configuration>
              <httpHeaders>
                <property>
                  <!-- 此方式的固定值,不可改 -->
                  <name>Job-Token</name>
                  <!-- 如果你使用的是 GitLab Runner 流水線釋出專案,推薦使用此方式 -->
                  <!-- CI_JOB_TOKEN 是 GitLab Runner 流水線的環境變數 -->
                  <value>${CI_JOB_TOKEN}</value>
                </property>
              </httpHeaders>
            </configuration>
          </server>
        </servers>
      </settings>
      
  2. 專案級 Maven 端點(釋出,僅在 GitLab Runner 流水線釋出時可以使用環境變數)

    <distributionManagement>
        <repository>
            <!-- 固定值,與 settings.xml 中的 server id 相同,否則私有倉庫無法匹配到秘鑰釋出 -->
            <id>gitlab-maven</id>
            <!-- 其中數字為專案ID,訪問專案地址即可看到 -->
            <!--<url>https://gitlab.com/api/v4/projects/53229683/packages/maven</url>-->
            <!-- 使用環境變數 CI_PROJECT_ID 替換專案ID -->
            <!-- 使用環境變數 CI_API_V4_URL 替換 GitLab API 介面地址 -->
            <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
        </repository>
        <snapshotRepository>
            <!-- 固定值,與 settings.xml 中的 server id 相同,否則私有倉庫無法匹配到秘鑰釋出 -->
            <id>gitlab-maven</id>
            <!-- 其中數字為專案ID,訪問專案地址即可看到 -->
            <!--<url>https://gitlab.com/api/v4/projects/53229683/packages/maven</url>-->
            <!-- 使用環境變數 CI_PROJECT_ID 替換專案ID -->
            <!-- 使用環境變數 CI_API_V4_URL 替換 GitLab API 介面地址 -->
            <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
        </snapshotRepository>
    </distributionManagement>
    
  3. 專案級 Maven 端點(使用,不能使用環境變數) 使用已釋出的 Maven jar 包

    
    <repositories>
        <repository>
            <!-- 與 settings.xml 中的 server id 相同,否則私有倉庫無法匹配到秘鑰釋出 -->
            <id>gitlab-maven</id>
            <!-- https://gitlab.example.com:GitLab 例項的域名(IP),不能使用環境變數 -->
            <!-- PROJECT_ID:專案ID,訪問需要使用的 Maven jar 包 倉庫地址即可檢視到專案ID -->
            <url>https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/maven</url>
        </repository>
    </repositories>
    
  4. 釋出的Jar包可以在 軟體包庫 中看到

更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網進行學習。

相關文章