New domain for Hex hosted build artifacts

We are moving the builds for precompiled versions of Elixir, Erlang/OTP, and Hex itself. These are currently hosted on https://repo.hex.pm but will be moved to https://builds.hex.pm. (You can read more about the builds on GitHub - hexpm/bob: The Builder).

The affected URLs are under https://repo.hex.pm/builds/ and https://repo.hex.pm/installs/, and will be moved to https://builds.hex.pm/builds/ https://builds.hex.pm/installs/ respectively.

The transition period will be over 3 months with increasing “brownout” periods where repo.hex.pm will redirect to builds.hex.pm. After the 3 month period the redirect will become permanent. If the tool you are using to download the builds follows HTTP redirects you are unaffected by the domain change.

If you are using the GitHub action setup-beam make sure you are on the latest tag @v1 and f you use asdf to install Elixir then update with asdf plugin-update elixir to ensure there is no disruption.

For more details and the migration schedule see the post: New domain for build artifacts | Hex

15 Likes

I have used elixir docker images for over 5 years and only now find out that there are official images beside the ones on docker hub :sweat_smile:

They’re also on docker hub :wink:

I found the biggest problem with the ones hosted on docker hub is that they are versioned only by elixir version (at least used to be, now it seems that OTP version is present too), so I always had to be careful when upgrading elixir version to not upgrade to a next major OTP version.

I found some issues when set HEX_MIRROR to https://builds.hex.pm

Failed to fetch record for open_api_spex from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for paginator from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for plug_cowboy from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for floki from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for cowlib from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for bamboo from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for mime from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for gen_smtp from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
Failed to fetch record for phoenix_ecto from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it
** (Mix) Unknown package cowlib in lockfile
Failed to fetch record for phoenix_pubsub from registry (using cache instead)
This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it

The setting in our company CI:

mix deps.get
  shell: /usr/bin/bash -e {0}
  env:
    HEX_MIRROR: https://builds.hex.pm
    MIX_ENV: dev
    INSTALL_DIR_FOR_OTP: /opt/hostedtoolcache/otp/ubuntu-20.04/OTP-25.3.2/x64
    INSTALL_DIR_FOR_ELIXIR: /opt/hostedtoolcache/elixir/1.14.3-otp-25/x64
    SSH_AUTH_SOCK: /tmp/ssh-AvRndJpmAe1q/agent.534
    SSH_AGENT_PID: 535

I’m not sure what am I wrong.

HEX_MIRROR is being deprecated because it was being used for both the Hex repository and build artifacts.

Going forward you should use HEX_MIRROR_URL or HEX_TRUSTED_MIRROR_URL for the Hex repository (repo.hex.pm). HEX_TRUSTED_MIRROR_URL should only be used if it’s a mirror you can trust with secrets such as authentication credentials and private packages, otherwise use HEX_MIRROR_URL. You can use these if you are on the latest version of Hex.

For build artifacts you should set HEX_BUILDS_URL, this variable is used by mix local.hex and mix local.rebar. This variable is being introduced in Elixir 1.15.0 so it’s not available yet. To avoid the error in the mean time you have to set HEX_MIRROR only when you call the mix local.* tasks. But since Elixir follows HTTP redirects you don’t have to make any changes, when repo.hex.pm changes to permanently redirect to builds.hex.pm Elixir will continue working.

1 Like

I see, Thanks for explaination.

There might be an issue with the redirect at the moment, I’m noticing that it adds two forward slashes (/) to the URL after the domain name :point_right: https://builds.hex.pm//installs/hex-1.x.csv

Can you check?