- sbt-pgp
- sbt-sonatype
- sbt-release
- Sonatype設定
- SBTのマニュアルに従って、SonatypeのプロジェクトJIRAにアカウントを作成する。
- ログインして、プロジェクト「Community Support - Open Source Project Repository Hosting」にチケットを作成する。
- subject: プロジェクト名(GitHubのリポジトリ名と同じにした)
- Group Id: GitHubにホストしているので、それをつかった。(
github.com/username
->com.github.username
) - Project URL:
https://github.com/username/repositoryname
- SCM URL:
https://github.com/username/repositoryname.git
- チケットを作成したらリポジトリを作ってもらうまで待つ
- 結構速く対応してもらえた
- GPGの設定
- マニュアルではsystem globalなところにsbt-pluginとして、
sbt-gpg
を設置しているが、今回はプロジェクトのplugins.sbt
に記述した。addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
- 参考
- キーの作成と公開
sbt "set pgpReadOnly := false" "pgp-cmd gen-key" "pgp-cmd send-key <keyname> hkp://pool.sks-keyservers.net"
- キーの作成時、下記3つの項目が必要なのであらかじめ準備して保存する。
- key name: Group Idと同じにした(
com.github.username
) - key email: GitHubの登録メールアドレスにした
- key passphrase: 適当に生成した文字列
- key name: Group Idと同じにした(
- マニュアルではsystem globalなところにsbt-pluginとして、
sbt-sonatype
の設定- 参考
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "1.1")
toplugins.sbt
build.sbt
に追記pomExtra in Global := { <url>https://github.com/username/repositoryname</url> <licenses> <license> <name>Apache 2</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <scm> <connection>scm:git:github.com/username/repositoryname</connection> <developerConnection>scm:git:[email protected]:username/repositoryname</developerConnection> <url>github.com/username/repositoryname</url> </scm> <developers> <developer> <id>...</id> <name>...</name> <url>...</url> </developer> </developers> }, credentials += Credentials( "Sonatype Nexus Repository Manager", "oss.sonatype.org", sys.env.getOrElse("SONATYPE_USER", ""), sys.env.getOrElse("SONATYPE_PASSWORD", "") ),
- Sonatypeのクレデンシャルは、作成したJIRAのアカウントと同期している。環境変数から設定できるようにした。
sbt-release
の設定- 参考
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.5")
toplugins.sbt
build.sbt
に追記releaseProcess := Seq[ReleaseStep]( checkSnapshotDependencies, inquireVersions, runClean, runTest, setReleaseVersion, commitReleaseVersion, tagRelease, ReleaseStep(action = Command.process("publishSigned", _)), setNextVersion, commitNextVersion, ReleaseStep(action = Command.process("sonatypeReleaseAll", _)), pushChanges )
version.sbt
をプロジェクトルートに追加version in ThisBuild := "0.0.1-SNAPSHOT"
- リリース
sbt release
sbt-release
ブラグインからコンソールで色々聞かれるので答えていくとリリースできてた