Hex Repositories

JFrog Artifactory Documentation

Products
JFrog Artifactory
Content Type
User Guide
ft:sourceType
Paligo
HexConcept.png

Hex is a package manager for the BEAM ecosystem. It supports any programming language that compiles to run on the BEAM VM, such as Elixir and Erlang. For more information, see the Hex documentation.

Hex repository in Artifactory is a repository type specifically designed to handle Hex packages, which contain packages, resources, and metadata for use in Elixir and Erlang projects.

Benefits of Hex in Artifactory

  • Centralized Management: Store and manage all your Hex packages in one place, making it easier to track dependencies and versions.

  • Consistent Builds: Ensure developers and CI/CD systems use the same package versions, promoting reproducibility and consistency.

  • Improved Performance: Cache packages from remote repositories to speed up builds and reduce external network calls.

  • Fine-Grained Access Control: Control who can upload, download, and view packages, enhancing security and governance over your dependencies.

  • Reliability: Local caching of remote packages ensures your build process continues even if external services, like Hex.pm, are unavailable.

Hex Supported Clients

Hex repository supports the following and has been tested. It lists the specific compatible versions to ensure smooth integration and optimal performance when working with Hex Repositories in Artifactory.

  • Hex: Versions 2.1.1 and above

  • Elixir: Versions 1.16 and above

  • Open Telecom Platform (OTP): Versions 26.2.5 and above

Limitations of Hex in Artifactory

The following are the limitations of Hex in Artifactory:

  • Mix Client:

    • Single Repository Limitation: The Mix client allows only one repository to point to repo.hex.pm. As a result, you can only set one Artifactory endpoint as the default repository that connects to the public hex.pm registry. In the future, this will be resolved by the Hex Virtual Repository which will aggregate all packages

    • Repository Naming: The name of your self-hosted Hex repository in the Mix client must exactly match the full URL of the Artifactory remote repository.

  • Hex Server:

    • Private Package Support: Self-hosted Hex servers do not support private organizations or private packages. This feature is only available through the public hex.pm registry, which offers private hosted repositories.

  • Hex Local Repository:

    • We currently support using local repositories for storing first-party (internal) and second-party (partner) packages.

    • parsing any info related to docs, tests, etc.; from mix.exs is not supported.

    • mix hex.publish command to publish packages to local repository is not supported.

      Workaround: Deploy Hex Packages to Hex Local Repository

    • deploying packages under any other directory except tarballs is not supported. To learn more, refer to Hex Repository Layout and Permission.

  • Hex Remote Repository: We currently support using remote repositories for caching third-party packages from registries, such as hex.pm.

  • Repository Browsing: Artifactory does not support browsing Hex remote registries. The artifact tree only shows packages explicitly pulled into Artifactory, not the contents of the remote registry.