Sonatype OSSRH のアクセストークン認証対応

Wednesday, June 26, 2024

Maven Central へバイナリをあげるにあたり、Sonatype OSSRH へバイナリをあげようとしたところ、Content access is protected by token のエラーが出ていたので、https://support.sonatype.com/hc/en-us/articles/360049469534-401-Content-access-is-protected-by-token-when-accessing-repositories を参考に対応した。

https://s01.oss.sonatype.org/ へ行き、右上の Profile からアクセストークンを発行すると username:token という形式で User Token が発行されるので、それぞれ username, password として差し替える。

アクセストークン発行画面への道

アクセストークン発行画面への道

アクセストークン発行画面

アクセストークン発行画面

値を参照する側は特に変わらないはず。

// maven publish を用いた例
extensions.configure<PublishingExtension>() {
  repositories {

    maven {
      name = "Release"
      val releasesRepoUrl =
        uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
      url = releasesRepoUrl
      credentials {
        username =
          System.getenv("OSSRH_USERNAME") ?: rootProject.extra["ossrhUsername"] as String
        password =
          System.getenv("OSSRH_PASSWORD") ?: rootProject.extra["ossrhPassword"] as String
      }
    }
// ...

僕は手元では local.properties、CI では環境変数から読むようにしていたので local.properties にそれぞれ値を差し替えた。

// local.properties
ossrhUsername=username
ossrhPassword=token

別で Maven Central のアカウントマイグレーションのメールが来ていて、当初はこれ関連かなと勘違いしそうだったがサポートページを幸運にも見つけたので助かった。

日常

ちょっと前に作った Jetpack Compose UI library を Compose Multiplatform 対応した