使用 Google Cloud Build 时如何将私有存储库凭据传递给 Maven docker 图像
How to pass private repository credentials to maven docker image when using Google Cloud Build
我正在尝试使用 Google Cloud Build 构建我的 Java 应用程序。它允许使用所谓的云构建器 - docker 不同构建器的图像。我正在使用 Maven。所以问题是我必须使用私有存储库(人工制品)来部署工件。此代表受密码保护,我不知道如何将这些凭证传递给 GC maven docker 容器。
我看到唯一可能的方法是:
到 运行 shell 脚本,该脚本将更新 Maven 容器 settings.xml,如:
<servers>
<server>
<id>myRepoName</id>
<username>${server.username}</username>
<password>${server.password}</password>
</server>
</servers>
在cloudbuild.yml
中设置环境变量
是否有任何其他优雅的方法来实现我正在尝试的目标?
我通过执行以下操作解决了这个问题:
创建一个 Google 云存储桶并上传您想要的 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 能够提取我的私有 GitHub 包以正确安装我的项目。
可能可以在第一步中复制到 /usr/share/maven/ref/
以允许默认的 Maven Docker 行为,但我无法让它工作。如果有人这样做,请告诉我!
基于this answer to a slightly different question about caching artifacts and Google Cloud Build documentation
我正在尝试使用 Google Cloud Build 构建我的 Java 应用程序。它允许使用所谓的云构建器 - docker 不同构建器的图像。我正在使用 Maven。所以问题是我必须使用私有存储库(人工制品)来部署工件。此代表受密码保护,我不知道如何将这些凭证传递给 GC maven docker 容器。
我看到唯一可能的方法是:
到 运行 shell 脚本,该脚本将更新 Maven 容器 settings.xml,如:
<servers> <server> <id>myRepoName</id> <username>${server.username}</username> <password>${server.password}</password> </server> </servers>
在cloudbuild.yml
中设置环境变量
是否有任何其他优雅的方法来实现我正在尝试的目标?
我通过执行以下操作解决了这个问题:
创建一个 Google 云存储桶并上传您想要的
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 能够提取我的私有 GitHub 包以正确安装我的项目。
可能可以在第一步中复制到 /usr/share/maven/ref/
以允许默认的 Maven Docker 行为,但我无法让它工作。如果有人这样做,请告诉我!
基于this answer to a slightly different question about caching artifacts and Google Cloud Build documentation