NPM:如何构建具有基于git的依赖关系的项目而无需调用“ git”命令?

Sas*_*ota 6 node.js npm jenkins docker

我有一个使用git依赖项的NPM项目

{
  "repository": {
    "type": "git",
    "url": "https://bitbucket.org/my-private-group"
  },
  "dependencies": {
    "my-dependency": "bitbucket:group/lib#version",
  },
}
Run Code Online (Sandbox Code Playgroud)

现在,我想使用已安装节点的Docker 在CI中构建此项目

问题: 由于git不存在,因此node install尝试调用git并失败。但是,即使我安装了git,它仍然需要身份验证,因为它是一个私有存储库。

目前,我看到以下解决方案:

  • 我将不得不在docker中安装git并添加一个SSH密钥才能下载源代码。
  • 我可以将相关的存储库打包到Docker映像中并使用npm link。但是,此选项仍然需要了解设置的依赖关系,package.json从而使其变得复杂。
  • 设置自己的npm存储库以发布工件,并且不使用git依赖项。不幸的是,在我的情况下无法实现此选项。

问题:在CI中处理git依赖关系的最佳方法是什么?列出的选项中是否还有其他任何选项。最佳做法是什么?

Tsc*_*cka 4

在没有安装 git 的情况下从 git 拉取有点困难。安装 git 也很简单。只需列出作为您项目的依赖项即可。This project requires windows/linux/mac os, node js, git.

您允许人们从私人存储库中提取人员...那一刻他们就可以访问您的源代码...因此无论如何,私有存储库的所有用途都会丢失。任何想要复制您的代码的人都可以在代码出现在计算机上时轻松完成,即使代码已被混淆。

因此,我会退后一步,请您开始问自己为什么该存储库是私有的?代码是否仅在存在 NDA 时分发?如果是这样,您可以考虑使用 ssh 密钥文件来登录。

或者,您可以将文件托管在私有托管的 gogs 服务器上,在该服务器上将防火墙/nginx 路由器中的 IP 列入白名单,这些 IP 可以从服务器上的 gogs 存储库中提取。

如果您希望任何人都能够在项目的最终发行版中使用您的存储库,那么最好取消存储库的私有设置。您甚至可能会获得一些免费帮助来修复一些错误。