This document simply outlines the release process:
-
Remove all
-dev
extension from versions (see below for all files) -
Ensure CHANGELOG is updated and add current date
-
Update the local
release.sh
with the Elixir and OTP versions Hex should be built against. -
Commit changes above with title "Release vVERSION" and generate new tag
-
Set branch latest to the new tag
-
Push main branch, latest branch and the new tag
-
Create GitHub release
-
Run the
release.sh
script and set the path to the private key for ElixirELIXIR_PEM=path/to/elixir.pem ./release.sh VERSION
whereVERSION
is the Hex version being released without av
prefix -
Increment version and add
-dev
extension to versions (see below for all files) -
Commit changes above with title "Bump to vVERSION-dev"
-
Push main
Hex needs to built for every Elixir supported vMAJOR.MINOR version. Currently that is every minor version released after 1.0.0.
Always build on the latest patch version and make sure tests pass before building the archive.
- mix.exs
@version
attribute - CHANGELOG.md
- s3.hex.pm/installs/hex.ez (latest Hex built against oldest supported Elixir)
- s3.hex.pm/installs/[ELIXIR]/hex.ez
- s3.hex.pm/installs/[ELIXIR]/hex-[HEX].ez
- s3.hex.pm/installs/hex-1.x.csv
- s3.hex.pm/installs/hex-1.x.csv.signed
Only for oldest elixir and OTP version:
aws s3 cp hex.ez s3://s3.hex.pm/installs/hex.ez --acl public-read
aws s3 cp hex.ez s3://s3.hex.pm/installs/[ELIXIR]/hex.ez --acl public-read &&
aws s3 cp hex-[HEX].ez s3://s3.hex.pm/installs/[ELIXIR]/hex-[HEX].ez --acl public-read &&
aws s3 cp hex-1.x.csv s3://s3.hex.pm/installs/hex-1.x.csv --acl public-read &&
aws s3 cp hex-1.x.csv.signed s3://s3.hex.pm/installs/hex-1.x.csv.signed --acl public-read
hex_version,sha512(hex-[HEX].ez),elixir_version
Example:
0.9.0,4f6eae32124500117691740358df2a078d014f4d396a56a73b3e553e0b112b3f0ac9e0f7e0763feb85c889bac20571c6e028e5f4c252ac158cbb3c586efe992f,1.0.0
0.9.0,21fd3dbff18b2d2d51b41e147ac8bd13188a9840dae8f4ced6c150e227df64c3c6c5a472c3fd74e170f14fcf7cbeb7d85e12a520438bf0731c1ac55d2f6a4a8a,1.1.0
shasum -a 512 hex-[HEX].ez
openssl dgst -sha512 -sign elixir.pem hex-1.x.csv | openssl base64 > hex-1.x.csv.signed