如何在 GitLab-CI AutoDevOps 中使用自定义 settings.xml?

How to use custom settings.xml with GitLab-CI Auto DevOps?

我正在使用 GitLabCI AutoDevOps 编译一个基于 Maven 的项目,基于 DinD (docker-in-docker) 跑步者。

CI 作业开始,并正确检测到 Maven 的构建包(基于 herokuish)。

如何在不切换到自定义 .gitlab-ci.yml 的情况下配置自定义设置文件?

我想继续使用 AutoDevOps。

因为 Maven 需要访问基于 Nexus 的私有存储库,所以配置自定义 settings.xml(并使用您的源代码对其进行版本控制)

很方便

最简单的解决方案是包含自定义 settings.xml。前段时间Auto DevOps使用的相应buildpack中包含了这个特性,你可以在这篇article from Heroku buildpacks.

中看到

所以我在 .gitlab-ci.yml 配置文件中定义了 MAVEN_SETTINGS_PATH 变量:

variables:
 - MAVEN_SETTINGS_PATH: ".m2/settings.xml"

然后,将文件 settings.xml 包含在存储库中。 避免包含秘密或其他敏感信息

使用带有凭据的私有 Maven 存储库时

最后,你可以在Gitlab中定义一些要在settings.xml中使用的变量。使用 Gitlab UI 或 API 添加用户、密码和存储库 url 的变量,作为环境变量从 Gitlab 包含到作业中。然后你可以在 settingx.xml 中使用它,比如 ${env.VARIABLE_NAME}

Gitlab示例-CI配置文件:

include:
  - template: Auto-DevOps.gitlab-ci.yml

variables:
    MAVEN_SETTINGS_PATH: ".m2/settings.xml"
    AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES: NEXUS_REPO_USER,NEXUS_REPO_PASSWORD,NEXUS_REPO_URL