我正在使用GitLab CI Auto DevOps在 DinD (docker-in-docker) 运行器中编译基于 Maven 的项目。
CI 作业开始,并且正确检测到 Maven 的 buildpack(基于 herokuish)。
如何在不切换到自定义 .gitlab-ci.yml 的情况下配置自定义设置文件?
我想继续使用 Auto DevOps。
我正在使用GitLab CI Auto DevOps在 DinD (docker-in-docker) 运行器中编译基于 Maven 的项目。
CI 作业开始,并且正确检测到 Maven 的 buildpack(基于 herokuish)。
如何在不切换到自定义 .gitlab-ci.yml 的情况下配置自定义设置文件?
我想继续使用 Auto DevOps。
因为 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
在存储库中。
避免包含秘密或其他敏感信息
最后,您可以在 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