GitHub Packagesにホストされたprivate packageをsbtから使う
表題のとおりです.
GitHubのオフィシャルドキュメントを読むとmavenで使う方法やgradleで使う方法は紹介されているのですがsbtで使う方法が調べてもシュッと出てこなかったのでメモとして記す次第.
基本的には以下のようにmavenやgradleと同様にbuild.sbt
に対して設定してやるとよろしい.
libraryDependencies += "com.example.your" % "package" % "0.0.1" resolvers += "GitHub your-package" at "https://maven.pkg.github.com/example/your-package" credentials += Credentials("GitHub Package Registry", "maven.pkg.github.com", "", sys.env.get("GITHUB_REGISTRY_TOKEN").orNull)
libraryDependencies
は普通にインストールしたいprivate packageを指定し,併せてresolvers
にはそのpackageに至る宛先を追加します (この時,例における"GitHub your-package"
は自分の好きなわかりやすい名前をつけて良い./example/your-package
についてはpackageの属する/org/repo
を指定する).
credentials
については例の通り,第4引数になんらかの形でGitHubのトークン文字列を与えると良いです.この際のGitHubトークンの詳細についてはこちらを参照ください: https://docs.github.com/en/packages/publishing-and-managing-packages/about-github-packages#about-tokens
注意としては,Credentials
の第1引数および第2引数は例のとおりである必要があるということです.第2引数については「まあそうでしょう」という感じですが,第1引数を自由気ままに設定するとうまく動きません.これはこの文字列を内部的にrealmとして利用しているためです.
また,Credentialsについてはbuild.sbt
に直接書くのではなく,別ファイルに書き出しておくという方法もあると思います (ref: https://www.scala-sbt.org/1.x/docs/Using-Sonatype.html#step+3%3A+Credentials).この辺は状況やお好みに応じてという感じでしょう.
以上です.GitHub Packages,便利ですね.