1

我正在使用GitLab CI Auto DevOps在 DinD (docker-in-docker) 运行器中编译基于 Maven 的项目。

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

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

我想继续使用 Auto DevOps。

4

1 回答 1

4

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

最简单的解决方案是包含自定义 settings.xml。正如您在Heroku buildpacks的这篇文章中所见,此功能已包含在 Auto DevOps 前一段时间使用的相应 buildpack 中。

.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
于 2021-04-20T17:28:35.103 回答