Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KotprefをJCenterからMaven Centralに移行した話

6b7fa48f32e52512924ff44597d9881f?s=47 chibatching
April 05, 2021
440

KotprefをJCenterからMaven Centralに移行した話

20221/04/05 Kotlin Tech Talk
https://mercari.connpass.com/event/206751/

6b7fa48f32e52512924ff44597d9881f?s=128

chibatching

April 05, 2021
Tweet

Transcript

  1. KotprefをJCenterから Maven Centralに 移行した話 About migration of Kotpref from JCenter

    to Maven Central by chibatching @Kotlin Tech Talk, 2021/04/05
  2. • chibatching ◦ Androidアプリ開発 ◦ Android用OSSライブラリ ▪ Kotpref 自己紹介

  3. JCenter • JFrogが運営する公開Mavenリポジトリのホスティングサービス • AndroidのOSSライブラリでも多く利用されている • Kotprefの配布でも利用

  4. JCenter 突然の死

  5. Into the Sunset • 2021/02/03 JCenter含むJFrogの公開パッ ケージホスティングサービスが5/1で 停止すると発表 ◦ 5/1の停止はUIとAPI

    ◦ ホスティング自体は2022/2/1 まで継続 https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
  6. Android界隈への影響 • アプリ開発者 ◦ JCenterへの依存を断ち切らないとビルドできなくなる ▪ JCenterにだけ公開しているライブラリが 他のホスティングサービスへ移行されるのを待つ ▪ 自前でローカルや社内リポジトリにパッケージを

    確保しておく
  7. Android界隈への影響 • ライブラリ開発者 ◦ JCenterだけに公開しているライブラリを 他のホスティングサービスに移行する必要がある ▪ 新しいバージョンを公開できるのは2021/3/31まで ▪ 2022/2/1には公開済みのものも参照不可

  8. ライブラリ開発者として JCenterから移行した話

  9. 移行先の検討

  10. 独自ホスティング • 自分でMavenリポジトリサーバを立てる ◦ 管理が大変… ◦ 利用者側でライブラリ毎にリポジトリの追加が必要 repositories { mavenCentral()

    jcenter() google() maven { url “https://my.library.repo/” } }
  11. GitHub Packages • GitHubが提供するパッケージホスティングサービス ◦ Mavenリポジトリにも対応 ◦ 利用者側でライブラリ毎にリポジトリの追加が必要 ◦ GitHubへの認証も必要

    repositories { maven { url “https://maven.pkg.github.com/OWNER/REPOSITORY” credentials { username = “github_user_name” password = “github_password” } } }
  12. JitPack • GitHub上のソースコードからアーティファクトを生成してくれる • バージョン名はタグ • デフォルトではGroup IDやArtifact IDが固定 ◦

    com.github.User:Repo:Tag ◦ 独自ドメインにも対応しているので既存のものに合わせられる場合もある • 初回ダウンロードが遅い ◦ バージョンの初回リクエスト時にビルドするため
  13. Maven Central • Mavenパッケージホスティングサービスの重鎮 ◦ JCenterと比べてパッケージの要件が厳しい ▪ アーティファクトへのGPG署名必須やPOM必須項目 ◦ リポジトリを作るのが少し手間らしい

    ▪ Sonatypeへリポジトリ作成依頼のJIRAチケット作成 ▪ ドメインの正当性チェック
  14. 移行先の検討 • Kotprefでは移行先にMaven Centralを選定 ◦ 信頼性 ◦ 大変なのは最初の設定だけ(だろうという予想

  15. アカウント/リポジトリの作成

  16. JIRAチケットの起票 • SonatypeのJIRAアカウントを 作成 • 必要事項を入力してSonatypeに JIRAチケットを起票

  17. ドメインの 正当性チェック • チケットにつくBotからコメントに従っ てドメインのTXTレコードにチケット 番号を設定

  18. リポジトリが 作成される • TXTレコード浸透後10分程度で リポジトリが作成される • すべてBotが対応してくれるので JIRAチケット起票から20分ほどで 完了

  19. リポジトリにアクセスでき るようになった • Profileからaccess tokenなどを取 得する

  20. Gradle TaskやCI設定 の変更 • bintray/gradle-bintray-plugin の廃止 • sonatypeへのpublish情報追加 https://github.com/chibatching/Kotpref/pull/240

  21. 完成 

  22. 完成?

  23. これからリリースする バージョンだけが Maven Centralに公開される

  24. 既存のバージョンを移行するのはかなりの手間 1. 既存のアーティファクトをすべてダウンロード 2. すべてのアーティファクトにGPG署名をつける 3. POMの不足項目をすべて埋める

  25. あきらめた作者

  26. 救世主現る

  27. https://zenn.dev/red_fat_daruma/articles/0f3a01a53dc4fd

  28. • 記事で提供してくれているスクリプトが面倒な作業の大半を自動化 ◦ 過去バージョンのダウンロード ◦ GPG署名 ◦ POMの補完 過去バージョンの移行作業

  29. スクリプトを利用して 移行作業を進めていると…

  30. 暗雲

  31. • 数十の公開作業が数分の間に行わ れて過負荷になったからBANした よ!! ◦ とりあえず謝罪とアカウント復 活してもらい事なきを得る… 問い合わせ

  32. まとめ • JCenter終了に向けてアプリ開発者、ライブラリ開発者どちらも 準備を進めておきましょう • ライブラリ開発者のJCenterからMaven Central移行は先人のおかげで だいぶ楽になっている • スクリプトで大量の移行を行うときはMaven

    Centralに負荷がかからない ように注意が必要