使用组织,您可以在 Hex.pm 上发布和获取私有包,并且可以控制哪些用户可以访问这些包。要管理您是成员的任何组织,请访问 仪表盘。访问 注册表单 创建组织。
组织的包在组织的存储库下进行命名空间。只有组织成员可以访问存储库的包,要在 Mix 中获取访问权限,您需要使用 mix hex.organization
任务授权组织。运行以下命令执行此操作
$ mix hex.organization auth acme
要运行此命令,您需要在本地机器上拥有经过身份验证的用户,运行 $ mix hex.user register
注册或 $ mix hex.user auth
使用现有用户进行身份验证。
要将包简单地发布到您的组织,请向 $ mix hex.publish --organization acme
命令添加 --organization
标志。您也可以将包配置为属于特定组织,将 organization: "acme"
选项添加到包配置中
defp package() do
[
organization: "acme",
...
]
end
私有包只能依赖于其自身存储库中的包以及包含所有公共包的全局 "hexpm"
存储库。您使用依赖关系声明中的 :organization
选项指定包应从特定组织的存储库中获取,如果未包含此选项,则假定包属于全局存储库。例如
defp deps() do
[
# This package will be fetched from the global repository
{:ecto, "~> 2.0"},
# This package will be fetched from the acme organization's repository
{:secret, "~> 1.0", organization: "acme"},
]
end
您可以使用 mix hex.organization key
任务手动生成存储库身份验证密钥。然后,这可以用于在您的 CI 服务器上获取包,而无需使用用户名和密码进行手动身份验证。
在您的本地机器上运行以下命令
$ mix hex.organization key acme generate
Passphrase: ...
126d49fb3014bd26457471ebae97c625
您也可以在组织的 仪表盘 上生成组织密钥。
复制返回的哈希值并在您的构建服务器上使用它进行身份验证
$ mix hex.organization auth acme --key 126d49fb3014bd26457471ebae97c625