【问题标题】:Gitlab CI/CD using repositoryGitlab CI/CD 使用存储库
【发布时间】:2021-12-22 04:03:45
【问题描述】:

我在同一组中有多个 GitLab 项目。它们之间存在依赖关系。假设我有 3 个项目:

  • some_group/api
  • some_group/服务器
  • some_group/client

服务器和客户端项目都依赖于 api。

我正在尝试设置 CI/CD 以将图像部署到 GitLab 注册表。根据本教程https://docs.gitlab.com/ee/user/packages/maven_repository/index.html#create-maven-packages-with-gitlab-cicd,我已成功将版本部署到此注册表。

问题是如果我在 api 和 server 上做同样的事情,以后不会下载依赖的 api 包,因为 ${env.CI_PROJECT_ID} 会生成不同的 id。

什么是最优雅的解决方案,不要在 pom.xml 中添加多个带有硬编码项目 ID 的服务器。

另一个问题是如何从本地环境中使用此存储库。

感谢大家的帮助。

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    对此有几种不同的可能解决方案。

    1. 将所有工件发布到一个项目。

      您可以在组中选择一个项目(或创建一个新项目)并将所有工件发布到该注册表中。如果您不想硬编码项目 ID,您可以为其定义一个 CI 变量并使用它来代替 ${env.CI_PROJECT_ID}。

    2. 将工件发布到多个项目和多个注册表,并在您的 pom.xml 中添加相应的 <repository> 条目

      (我想你想避免这种情况,但我想我还是会列出这种可能性)

    3. 定义一个自定义的settings.xml,而不是将存储库添加到您的pom.xml

      您可以将其添加到您的存储库并与它一起使用

      mvn clean install -s ./settings.xml
      

    两个自定义 CI 变量的示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <profiles>
            <profile>
              <repositories>
                <repository>
                  <id>registry1</id>
                  <url>https://gitlab.com/api/v4/projects/${env.REGISTRY1}/packages/maven</url>
                </repository>
                <repository>
                  <id>registry2</id>
                  <url>https://gitlab.com/api/v4/projects/${env.REGISTRY2}/packages/maven</url>
                </repository>
              </repositories>
              <id>glregistry</id>
            </profile>
          </profiles>
          <activeProfiles>
            <activeProfile>glregistry</activeProfile>
          </activeProfiles>
    </settings>
    

    另一个问题是如何从本地环境中使用此存储库。

    我会为此建议方法三。将必要的&lt;repository&gt; 标签添加到~/.m2/settings.xml,Maven 将能够正确解析它们。 如果该文件尚不存在,您可以复制上面的示例并将变量替换为相应的项目 ID。

    【讨论】:

      猜你喜欢
      • 2021-04-02
      • 2022-07-04
      • 2022-12-24
      • 2021-11-17
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      相关资源
      最近更新 更多