秘密
我使用以下方法向drone.io 添加了一个秘密:
drone org secret add --image=* --conceal --skip-verify=true octocat SSH_KEY @/home/me/.ssh/id_rsa
Dockerfile
因为npm install
需要访问私有存储库,所以我在 Dockerfile 中指定了一个ARG,以获取我的私有 ssh_key:
FROM node:latest
ARG SSH_KEY
ENV SSH_KEY=$SSH_KEY
RUN mkdir /root/.ssh && \
echo $SSH_KEY | cut -d "\"" -f 2 > /root/.ssh/id_rsa && \
chmod 0600 /root/.ssh/id_rsa && \
eval `ssh-agent -s` && \
ssh-add /root/.ssh/id_rsa && \
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN mkdir /app
WORKDIR /app
COPY . /app
EXPOSE 3001
CMD ["npm", "start"]
.drone.yml
最后,在我的.drone.yml
管道中,在plugin/docker
步骤中,我使用 build-arg 注入 ssk_key:
pipeline:
test:
image: node:latest
commands:
- mkdir /root/.ssh && echo "$SSH_KEY" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa
- eval `ssh-agent -s` && ssh-add /root/.ssh/id_rsa
- echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
- npm install
- npm test
docker:
image: plugins/docker
repo: octocat/bar
tags: latest
build_args:
- SSH_KEY=${SSH_KEY}
我的问题:
- 这是从无人机管道将我的 ssh 密钥注入 Dockerfile 的正确方法吗?
- build_args 打印在前端日志中,SSK_KEY 也是如此...如何避免这种情况?
- 构建参数正在传递我的 SSK_KEY + 引号 - >“SSH_KEY”,所以我必须在将其回显到之前删除 Dockerfile 中的引号(通过管道传输字符串)
/root/.ssh/id_rsa:
,有什么办法没有这些"
?
非常感谢!!
[编辑] 感谢 Adrian 提出更好的方法,npm install
从 Dockerfile 中删除,因为node_modules
可以通过管道步骤之间的卷共享。