maven - 使用 Google Cloud Build 时如何将私有(private)存储库凭据传递给 maven docker 镜像

标签 maven docker google-cloud-platform google-cloud-build docker-maven-plugin

我正在尝试使用 Google Cloud Build 来构建我的 Java 应用程序。它允许使用所谓的云构建器——不同构建器的 docker 镜像。我正在使用 Maven。所以问题是我必须使用私有(private)存储库( Artifact )来部署 Artifact 。此代表受密码保护,我不知道如何将这些凭据传递给 GC maven docker 容器。

我看到唯一可能的方法是:

  • 运行将更新 maven 容器 settings.xml 的 shell 脚本,如下所示:
    <servers>
        <server>
            <id>myRepoName</id>
            <username>${server.username}</username>
            <password>${server.password}</password>
        </server>
    </servers>
    
  • 在 cloudbuild.yml 中设置环境变量

  • 还有其他优雅的方式来实现我想要的吗?

    最佳答案

    我通过执行以下操作解决了这个问题:

  • 创建一个 Google Cloud Storage 存储桶并上传您想要的 settings.xml .我正在使用 GitHub 包,遵循 their documentation
  • 使用以下内容设置您的 cloudbuild.yaml:
  • steps:
      - name: gcr.io/cloud-builders/gsutil
        args: ['cp', 'gs://ci-maven/settings.xml', 'settings.xml']
      - name: maven:3.6.3-jdk-11-openj9
        entrypoint: 'mvn'
        args: ['--settings', '/workspace/settings.xml', 'install']
    images: ['gcr.io/schemata-np/scheduler']
    

    首先,它将 settings.xml 复制到当前目录 ( /workspace )。然后,直接使用 Docker Maven 镜像,我们添加 --settings /workspace/settings.xml到我们的 args 来指定 settings.xml 的位置。从那里,Google Cloud Build 能够提取我的私有(private) GitHub 包来正确安装我的项目。

    可以复制到/usr/share/maven/ref/在第一步允许默认的 Maven Docker 行为,但我无法让它工作。如果有人这样做,请告诉我!

    基于 this answer to a slightly different question about caching artifactsGoogle Cloud Build documentation

    关于maven - 使用 Google Cloud Build 时如何将私有(private)存储库凭据传递给 maven docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947511/

    相关文章:

    git - Jenkins git maven 发布 - git push 失败/更新被拒绝

    docker - 是否有计算 Docker 容器开销的公式?

    c# - Docker容器内的Console.ReadLine

    java - 单个项目中的多个 Spring Cloud GCP 库会导致 NoClassDefFoundError

    docker - kubernetes-GCP-无法连接到https://collector.newrelic.com

    google-app-engine - 限制/减少 App Engine Flex 实例中的核心数量

    maven - Hadoop 2.4 maven 构建 OutOfMemoryError : Java heap space

    maven - PackagingExcludes 在 Maven war 插件中不起作用

    maven - Gradle构建失败,但是Maven可以工作

    docker - docker中如何修改tomcat server.xml在8443端口运行自签名证书