私有包和组织

使用组织,您可以在 Hex.pm 上发布和获取私有包,并且可以控制哪些用户可以访问这些包。要管理您是成员的任何组织,请访问 仪表盘。访问 注册表单 创建组织。

将组织添加到 Mix

组织的包在组织的存储库下进行命名空间。只有组织成员可以访问存储库的包,要在 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

在 CI 和构建服务器上进行身份验证

您可以使用 mix hex.organization key 任务手动生成存储库身份验证密钥。然后,这可以用于在您的 CI 服务器上获取包,而无需使用用户名和密码进行手动身份验证。

在您的本地机器上运行以下命令

$ mix hex.organization key acme generate
Passphrase: ...
126d49fb3014bd26457471ebae97c625

您也可以在组织的 仪表盘 上生成组织密钥。

复制返回的哈希值并在您的构建服务器上使用它进行身份验证

$ mix hex.organization auth acme --key 126d49fb3014bd26457471ebae97c625