【发布时间】:2021-01-29 06:47:21
【问题描述】:
我正在尝试自动化 Jenkins 管道中的 docker 构建。在我的 dockerfile 中,我基本上构建了一个节点应用程序。在我的 npm 安装中,我有一些需要操作系统绑定的私有 git 存储库,因此必须安装在容器中。当我手动运行它时,我将我的 ssh 密钥 (id_rsa) 传输到用于执行 npm 安装的 dockerfile。现在,我的问题是在 jenkins 管道中运行此任务时,我将配置一个 ssh-agent(Jenkins 插件)。无法从 ssh-agent 中提取私钥。我应该如何将我的 ssh-agent 传递给我的 dockerfile。
编辑 1:
我得到了它的部分工作:
Docker Build Command:
DOCKER_BUILDKIT=1 docker build --no-cache -t $DOCKER_REGISTRY_URL/$IMAGE_NAME:v$BUILD_NUMBER --ssh default . &&
然后在 Docker 文件中:
这很好用:
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no"
git clone git@github.com:****
奇怪的是这不起作用:
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no" npm install git+ssh//git@github.com:****
我觉得这和StrictHostKeyChecking=no有关
【问题讨论】:
-
您可以将您的 ssh 密钥作为秘密字符串转发并使用 docker 环境变量。然后在您的 docker 脚本中依赖该 env var 在运行时设置您的 npm ssh 要求。
-
@boly38 根据今天的进度编辑了原始问题。
-
什么是“npm install git”?你的意思是“git clone && npm install”吗?
-
@boly38 实际上没有这个命令基本上是从一个私人 git 仓库安装一个包。所以命令将是 npm install git+ssh://github.com/path/to/repo