Open7

Hex メモ

voluntasvoluntas

Hex

  • Hex とは Erlang VM 向けのパッケージマネージャー
    • Elixir については一切ふれない
  • rebar3 からパッケージを持ってくるときに git 経由では無く Hex 経由で持ってくることができる
  • 月 7 ドル/人 または年 70 ドル/人でプライベートなパッケージマネージャを利用することができる
  • rebar3 では rebar3 hex plugin を利用する
  • ドキュメントはほぼない
  • プライベートは hexpm というサービスのプライベート組織を使うという概念
  • Hex のサービスは自分で立てることもできるそのため api などの指定先も用意されてる
  • エンタープライズ向けも提供している
voluntasvoluntas

良いところ

  • private hexpm を利用するとパッケージの名前がグローバルとは別に持てる
  • CI を利用する際に SSH を使わなくて良くなる
voluntasvoluntas

わかってないこと

  • rebar3 hex publish -r hexpm:<private_org> --revert <version> --app <app_name> が動かない
  • private_org の pkg に依存した pkg が publish できない
    • バグとのこと
voluntasvoluntas

わかってること

  • 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 と呼ばれる
voluntasvoluntas

時雨堂の方針

  • 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}} みたいに利用する
  • 課金する
voluntasvoluntas

だめなところ

  • そもそも {app_name, "verson", {repo, "hexpm:private_org"}} みたいな設定を用意すればいろいろ楽なのに何も考えられてない
  • アクセスキーの設定がグローバルしか紹介されていない
    • repo_key はリポジトリ毎の rebar.config に設定できる
  • メールアドレスを dashboard で隠蔽すると rebar3 hex user whoiam がこける
    • メールアドレスがとれなくてパターンマッチエラーでこける、なめてるのか