将私有 github 存储库设置为 docker 中 package.json 中的依赖项在 github 操作中生成失败

Posted

技术标签:

【中文标题】将私有 github 存储库设置为 docker 中 package.json 中的依赖项在 github 操作中生成失败【英文标题】:Pulling private github repo set as dependency in package.json within docker generated failing in github actions 【发布时间】:2021-03-24 00:40:52 【问题描述】:

预期行为: 触发 Github 操作管道,然后继续从 dockerfile 构建 docker 映像。 此 dockerfile 包含一个 npm install 步骤,用于安装 package.json 文件中列出的所需包。 其中一个依赖项是私有 github 存储库,因此需要使用以下格式:

"packageName": "git+https://<auth token>:x-oauth-basic@github.com/orgName/packageName.git"

它应该安装没有任何问题,并继续 dockerfile 构建过程问题: dockerfile 在本地构建没有问题,但是当我尝试使用 github 操作构建它时,它会输出以下错误:

npm ERR! code 128
npm ERR! command failed
npm ERR! command git ls-remote ssh://git@github.com/orgName/packageName.git
npm ERR! error: cannot run ssh: No such file or directory
npm ERR! fatal: unable to fork

注意事项: 整个 docker 镜像构建过程在本地运行没有问题,所以我真的不认为这是一个 docker 问题,而更像是一个 github 限制问题

【问题讨论】:

【参考方案1】:

如果这在本地有效,请检查您的本地 git config -l 是否包含任何 insteadOf 指令,例如:

git config --global url."https://$GITHUB_TOKEN:x-oauth-basic@github.com/".insteadOf "ssh://git@github.com/"

如果是这样,请检查您的 GitHub 工作流程以包含该配置,例如 mvdan/github-actions-golang

可以从私有 GitHub 存储库安装模块,而无需使用您自己的代理。 您需要添加一个personal access token 作为秘密环境变量。

- name: Configure git for private modules
 env:
   TOKEN: $ secrets.PERSONAL_ACCESS_TOKEN 
 run: git config --global url."https://YOUR_GITHUB_USERNAME:$TOKEN@github.com/".insteadOf "ssh://git@github.com/"

【讨论】:

我尝试了这些,但它们并没有影响结果,我的意思是在本地构建 docker,所以在这种情况下,docker 不应该提供一致的环境,因为我使用的是相同的图像和命令在本地 docker build 和 github 操作中? 还有一点需要注意的是,在 github 操作的日志中,github 通常会使用 *** 审查详细信息,因此在我的情况下,它会将命令审查为 ``url."***github。 com/ ``所以我不确定这是否与问题有关。(在原始 git 配置中没有 insteadOf) @charbelk 你能测试一下github.com/oznu/docker-homebridge/issues/…吗?可能 GitHub Action 中使用的 docker 版本和你电脑上的不一样? (github.com/aframevr/aframe/issues/2771#issuecomment-308652143) 或者缓存问题 (github.com/aframevr/aframe/issues/2771#issuecomment-308831139)

以上是关于将私有 github 存储库设置为 docker 中 package.json 中的依赖项在 github 操作中生成失败的主要内容,如果未能解决你的问题,请参考以下文章

将 Github 页面的 URL 更改为私有

将 Github 存储库设为私有但希望显示公共消息

docker私有库

如何访问 OpsWorks ECS 层中的私有 Docker 存储库?

Git将 GitHub 工程设置为私有库 ( 登录账号 | 工程主页 | Settings | Danger Zone | Change visibility | Make private )

我可以将我的 github 页面存储库设为私有,并且仍然让 Web 链接本身是公开的并被搜索引擎索引吗?