GCloud Docker Builder использует форму Exec ENTRYPOINT .Ваши аргументы из cloudbuild.yaml не передаются в оболочку, поэтому ваш cat
не будет выполнен.
Почему бы не поручить KMS записать id_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
.