如何将自定义 settings.xml 与 GitLab-CI Auto?DevOps 结合使用?

gav*_*oto 4 maven gitlab buildpack gitlab-ci gitlab-autodevops

我正在使用GitLab\xe2\x80\xafCI Auto\xe2\x80\xafDevOps在 DinD (docker-in-docker) 运行器中编译一个基于 Maven 的项目。

\n

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

\n

如何配置自定义settings.xml文件而不切换到自定义.gitlab-ci.yml

\n

我想继续使用 Auto\xe2\x80\xafDevOps。

\n

gav*_*oto 10

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

最简单的解决方案是包含自定义settings.xml. 此功能之前已包含在 Auto DevOps 使用的相应构建包中,正如您可以在Heroku buildpacks 中有关“使用自定义 Maven 设置文件”的文章中看到的那样。

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

variables:
 - MAVEN_SETTINGS_PATH: ".m2/settings.xml"
Run Code Online (Sandbox Code Playgroud)

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

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

最后,您可以在 Gitlab 中定义一些要在settings.xml. 使用 Gitlab UI 或 API 添加用户、密码和存储库 URL 的变量,以将其作为环境变量从 Gitlab 包含到作业中。settings.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
Run Code Online (Sandbox Code Playgroud)

最后的建议是,您应该避免在环境变量中使用密码,建议使用环境中的本机方法来存储凭据。