如何配置 rebar3 以从另一台主机获取依赖项?

How to configure rebar3 to fetch dependencies from another host?

我有一个使用 rebar3 的应用程序,例如 cowboy。我的问题是:如何轻松配置它以从另一台主机获取牛仔?那就是我想将它从 github 指向另一个主机。

默认情况下,rebar3 只会从 hex.pm、任何 git 存储库或任何 mercurial 存储库中获取包。您可以看到您的选项 here.

如果这些默认值对您来说还不够,您可以create your own dependency resources。这将需要您编写一些 Erlang 代码来告诉 rebar3 如何查找和下载您尝试使用的包。

您要构建 cowboy that has two dependencies which are git repositories on GitHub (https://github.com/ninenines/cowlib and https://github.com/ninenines/ranch 具体而言)。但是您想从其他主机获取存储库,例如您公司自己的 git 服务器,您在其中镜像了您需要的所有 public 个存储库。

您有多种选择:

  • fork cowboy 并更改 rebar.config 中的依赖项 URL-s。这是我所知道的使 Rebar3 从不同位置获取依赖项的唯一(合理)方法。其他选项将以 Rebar3 下面的层 为目标,以获得相同的结果。
  • 配置 git 以在您的服务器上将 GitHub URL-s 重写为 URL-s,例如
git config --global url.https://git.mycompany.com/.insteadOf https://github.com/
  • 添加一个 /etc/hosts 条目,将 github.com 解析为您服务器的 IP。您可能必须为 github.com 创建一个伪造的自签名证书,并让构建机器上的 git 信任它。但是您可以按照此处的建议进行操作: