Open7
Hex メモ
- Hex とは Erlang VM 向けのパッケージマネージャー
- Elixir については一切ふれない
- rebar3 からパッケージを持ってくるときに git 経由では無く Hex 経由で持ってくることができる
- 月 7 ドル/人 または年 70 ドル/人でプライベートなパッケージマネージャを利用することができる
- rebar3 では rebar3 hex plugin を利用する
- https://github.com/erlef/rebar3_hex
- 中身は hex_core のラッパー
- ドキュメントはほぼない
- プライベートは hexpm というサービスのプライベート組織を使うという概念
- Hex のサービスは自分で立てることもできるそのため api などの指定先も用意されてる
- エンタープライズ向けも提供している
良いところ
- private hexpm を利用するとパッケージの名前がグローバルとは別に持てる
- CI を利用する際に SSH を使わなくて良くなる
わかってないこと
- rebar3 hex publish -r hexpm:<private_org> --revert <version> --app <app_name> が動かない
- private_org の pkg に依存した pkg が publish できない
- バグとのこと
わかってること
- rebar.config にプライベートを設定するときは {hex, [{repos, [#{name => <<"hexpm:<private_org>">>}]}]}. と指定する
- ~/.config/rebar3/hex.config は自動生成される
- app.src の detail に pkg_name を指定するとパッケージ名はそちらが利用される
- hexpm の pkg_name と application は同じではない
- {app_name, "version", {pkg, pkg_name}} が指定可能
- プライベート組織は hexpm:<private_org> と指定する
- hexpm は parent と呼ばれる
時雨堂の方針
- rebar3 hex plugin を使う
- hexpm private org を使う
- private org へのパッケージは名前空間がグローバルと競合しないので最小限にする
- hexpm private org で公開する app は hexpm private org app に依存させない
- public hexpm 利用時は pkg_name を利用し application は変更しない
-
{base32, "2021.6.0", {pkg, base32_clockwork}}
みたいに利用する
-
- 課金する
だめなところ
- そもそも {app_name, "verson", {repo, "hexpm:private_org"}} みたいな設定を用意すればいろいろ楽なのに何も考えられてない
- アクセスキーの設定がグローバルしか紹介されていない
- repo_key はリポジトリ毎の rebar.config に設定できる
- メールアドレスを dashboard で隠蔽すると rebar3 hex user whoiam がこける
- メールアドレスがとれなくてパターンマッチエラーでこける、なめてるのか
組織でパッケージを管理させる
既存のパッケージを組織に異動することができるようになりました。
$ rebar3 hex owner transfer <package> <org_name>