maven - 如何将带有密码的maven settings.xml放在源代码管理中

标签 maven docker jenkins

我正在为 Jenkins 奴隶构建一个 docker 图像。该 Jenkins 奴隶将不得不向/从 Artifact 存储库推送和拉取 Artifact 。

这适用于 Java 和 maven 项目。所以我需要在我的 docker 容器中有一个 settings.xml,以便我可以在几个私有(private)存储库中进行身份验证。

我的想法是在 Dockerfile 中复制一个 settings.xml,但因为它包含敏感信息(用户名、密码),所以我担心安全性。我可以在源代码管理中加密此内容吗?更重要的是,我可以避免人们仅仅下载这个文件并能够使用加密的凭据吗?理想情况下,我应该有一种机制来确保加密文件只能在 docker 容器的上下文中工作。

最佳答案

据我了解,上传凭据应该只对 Jenkins 奴隶可用。这里有几个选项:

  • 仅为 Jenkins 奴隶创建特殊的 settings.xml。禁止除 admin 以外的所有用户访问 jenkins slave,因此密码是安全的。每个人都将使用另一个带有凭据的 settings.xml 仅供下载。
  • 使用环境变量参数化 settings.xml:
    <server>
       <id>repo</id>
       <username>${env.REPO_USER}</username>
       <password>${env.REPO_PASSWORD}</password>
     </server>
    

  • 在 jenkins slave 上,REPO_USER/PASSWORD 将使用凭据插件设置:https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs .
    用户将此变量设置为仅下载凭据。

    关于maven - 如何将带有密码的maven settings.xml放在源代码管理中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454953/

    相关文章:

    java - 尝试使用 JSF 创建项目时出现错误 "Failed to execute goal"

    mysql - docker MySQL : Connecting a Rails app to MySQL

    java - Elasticsearch : "failed to get node info for {IP}" and "noNodeAvailableException" in service log

    Github pull 请求插件

    jenkins - 如何读取 Jenkins Web Hook post 请求正文?

    docker - Jenkinsfile 中的 "withRun"和 "inside"有什么区别?

    Maven MultiWAR 项目 : How to deploy them all from root project?

    Maven 版本插件不遵守代理设置

    linux - 为什么Docker构建需要使用/dev/shm?

    java - 如何让 Maven 检查源行尾?