Gitlab Maven 部署到包注册表

Mar*_*tra 1 maven gitlab

我正在尝试 gitlab,它看起来很有前途。我遇到了一个巨大的问题,似乎整个互联网上没有人知道如何解决这个问题。

我添加了一个 Maven 项目(只有一个 pom.xml)项目,我想将其部署到包注册表中。如果我在家用计算机上执行此操作,则很简单。我只是将部署令牌添加到我的settings.xml 中并执行mvn deploy.

我想在每次构建时都对包注册表进行 Maven 部署,因此当我提交并推送代码时,它需要构建。问题是,如何将 Deploy 令牌传递到管道?简而言之,我想自动部署 Maven 库/依赖项,以便其他项目可以使用该依赖项。这就是它应该如何工作,但是在 gitlab 中完全没有记录如何做到这一点,而且似乎这个星球上没有人这样做。

简而言之,如何将 Maven 项目部署到项目/组包注册表?

Sim*_*ner 6

实际上gitlab 文档中有一个很好的解释。

\n

我将简要概述这个过程,但最终它只是文档的副本,但链接可以更改,也可以移动。所以以后的人都会找到这个答案。

\n

正如您在下面的解释中看到的,您只需为 Maven 提供带有该-s <file>标志的 settings.xml 即可。它允许您在实际项目中存储基本的settings.xml。

\n
    \n
  1. 创建一个ci_settings.xml用作 Maven\xe2\x80\x99s settings.xml 文件的文件。

    \n
  2. \n
  3. 添加具有与您在文件中定义的相同 ID 的服务器部分pom.xml。例如,使用 gitlab-maven 作为 ID:

    \n
     <settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">\n   <servers>\n     <server>\n       <id>gitlab-maven</id>\n       <configuration>\n         <httpHeaders>\n           <property>\n             <name>Job-Token</name>\n             <value>${env.CI_JOB_TOKEN}</value>\n           </property>\n         </httpHeaders>\n       </configuration>\n     </server>\n   </servers>\n </settings>\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 确保您的pom.xml文件包含以下内容。您可以让 Maven 使用 CI 环境变量(如本示例所示),也可以对 server\xe2\x80\x99s 主机名和项目\xe2\x80\x99s ID 进行硬编码。

    \n
     <repositories>\n   <repository>\n     <id>gitlab-maven</id>\n     <url>${env.CI_SERVER_URL}/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url>\n   </repository>\n </repositories>\n <distributionManagement>\n   <repository>\n     <id>gitlab-maven</id>\n     <url>${env.CI_SERVER_URL}/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url>\n   </repository>\n   <snapshotRepository>\n     <id>gitlab-maven</id>\n     <url>${env.CI_SERVER_URL}/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url>\n   </snapshotRepository>\n </distributionManagement>\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
  7. 将部署作业添加到您的.gitlab-ci.yml文件中:

    \n
     deploy:\n   image: maven:3.6-jdk-11\n   script:\n     - \'mvn deploy -s ci_settings.xml\'\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
  9. 将这些文件推送到您的存储库。

    \n
  10. \n
\n

我想再次强调这是实际文档的内容,我只是为了完整性而将其添加到此处(我不是抄袭者,不想获得对其他人工作的认可!;))

\n