为了账号安全,请及时绑定邮箱和手机立即绑定

来自文件的 Google Cloud Build Docker build-arg

来自文件的 Google Cloud Build Docker build-arg

Go
慕娘9325324 2023-06-12 17:05:21
我在使用 Google Cloud Build 时遇到问题。我无法通过 cloudbuild.yaml 将密钥传递给 docker谷歌构建文件.yaml:- name: 'gcr.io/cloud-builders/gcloud'  args:  - kms  - decrypt  - --ciphertext-file=A.enc  - --plaintext-file=/root/.ssh/id_rsa  - --location=global  - --keyring=keyringxxx  - --key=keyxxx  volumes:  - name: 'ssh'    path: /root/.ssh- name: 'gcr.io/cloud-builders/docker'  args: [    'build', '.',    '-t', 'gcr.io/$PROJECT_ID/xxx:latest',    '--build-arg', 'READ_KEY=`cat /root/.ssh/id_rsa`'  ]  volumes:  - name: 'ssh'文件:FROM golang:1.11 AS builderARG READ_KEYRUN mkdir -p ~/.ssh &&  \    echo "$READ_KEY" > ~/.ssh/id_rsa && \    chmod 0600 ~/.ssh/id_rsa && \    ssh-keyscan github.com >> /root/.ssh/known_hosts && \    git config --global url.ssh://git@github.com/XXXX.insteadOf https://github.com/XXXX......上面的代码失败了。cat不起作用。
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

.ssh 目录需要有正确的权限

RUN mkdir -m 700 -p ~/.ssh &&


查看完整回答
反对 回复 2023-06-12
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

GCloud Docker Builder使用ENTRYPOINT的 Exec 形式。您来自 cloudbuild.yaml 的参数没有传递给 shell,因此您的参数cat不会被执行。

为什么不指示 KMSid_rsa直接写入/workspace并完全取消卷ssh

- name: 'gcr.io/cloud-builders/gcloud'

  args:

  - kms

  - decrypt

  - --ciphertext-file=A.enc

  - --plaintext-file=/workspace/id_rsa

  - --location=global

  - --keyring=keyringxxx

  - --key=keyxxx

- name: 'gcr.io/cloud-builders/docker'

  args: [

    'build', '.',

    '-t', 'gcr.io/$PROJECT_ID/xxx:latest'

  ]

Dockerfile 变为:


FROM golang:1.11 AS builder


RUN mkdir -p ~/.ssh

COPY id_rsa ~/.ssh/

RUN ssh-keyscan github.com >> ~/.ssh/known_hosts && \

    chmod -R 0600 ~/.ssh/ && \

    git config --global url.ssh://git@github.com:.insteadOf https://github.com

不要忘记将它安装.gitconfig到额外的构建步骤中。我只是将它作为我的 CI 构建脚本的一部分,而不是需要额外的volume.


查看完整回答
反对 回复 2023-06-12
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

对于步骤有问题的任何人:

COPY id_rsa ~/.ssh/

在 docker build 中不持久的地方~/.ssh/id_rsa,对我有用的解决方法是先将文件复制到 App 文件中的目录,然后将其复制到最终目录:

ADD id_rsa /app/id_rsa
RUN cp /app/id_rsa ~/.ssh/id_rsa

我不确定为什么会这样,但是好吧,给你。


查看完整回答
反对 回复 2023-06-12
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信