1

秘密

我使用以下方法向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}

我的问题:

  1. 这是从无人机管道将我的 ssh 密钥注入 Dockerfile 的正确方法吗?
  2. build_args 打印在前端日志中,SSK_KEY 也是如此...如何避免这种情况?
  3. 构建参数正在传递我的 SSK_KEY + 引号 - >“SSH_KEY”,所以我必须在将其回显到之前删除 Dockerfile 中的引号(通过管道传输字符串)/root/.ssh/id_rsa:,有什么办法没有这些"

非常感谢!!

[编辑] 感谢 Adrian 提出更好的方法,npm install从 Dockerfile 中删除,因为node_modules可以通过管道步骤之间的卷共享。

4

0 回答 0