$30 off During Our Annual Pro Sale. View Details »

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

chibatching
April 05, 2021
820

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

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

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

    View Slide

  2. ● chibatching
    ○ Androidアプリ開発
    ○ Android用OSSライブラリ
    ■ Kotpref
    自己紹介

    View Slide

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

    View Slide

  4. JCenter
    突然の死

    View Slide

  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/

    View Slide

  6. Android界隈への影響
    ● アプリ開発者
    ○ JCenterへの依存を断ち切らないとビルドできなくなる
    ■ JCenterにだけ公開しているライブラリが
    他のホスティングサービスへ移行されるのを待つ
    ■ 自前でローカルや社内リポジトリにパッケージを
    確保しておく

    View Slide

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

    View Slide

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

    View Slide

  9. 移行先の検討

    View Slide

  10. 独自ホスティング
    ● 自分でMavenリポジトリサーバを立てる
    ○ 管理が大変…
    ○ 利用者側でライブラリ毎にリポジトリの追加が必要
    repositories {
    mavenCentral()
    jcenter()
    google()
    maven { url “https://my.library.repo/” }
    }

    View Slide

  11. GitHub Packages
    ● GitHubが提供するパッケージホスティングサービス
    ○ Mavenリポジトリにも対応
    ○ 利用者側でライブラリ毎にリポジトリの追加が必要
    ○ GitHubへの認証も必要
    repositories {
    maven {
    url “https://maven.pkg.github.com/OWNER/REPOSITORY”
    credentials {
    username = “github_user_name”
    password = “github_password”
    }
    }
    }

    View Slide

  12. JitPack
    ● GitHub上のソースコードからアーティファクトを生成してくれる
    ● バージョン名はタグ
    ● デフォルトではGroup IDやArtifact IDが固定
    ○ com.github.User:Repo:Tag
    ○ 独自ドメインにも対応しているので既存のものに合わせられる場合もある
    ● 初回ダウンロードが遅い
    ○ バージョンの初回リクエスト時にビルドするため

    View Slide

  13. Maven Central
    ● Mavenパッケージホスティングサービスの重鎮
    ○ JCenterと比べてパッケージの要件が厳しい
    ■ アーティファクトへのGPG署名必須やPOM必須項目
    ○ リポジトリを作るのが少し手間らしい
    ■ Sonatypeへリポジトリ作成依頼のJIRAチケット作成
    ■ ドメインの正当性チェック

    View Slide

  14. 移行先の検討
    ● Kotprefでは移行先にMaven Centralを選定
    ○ 信頼性
    ○ 大変なのは最初の設定だけ(だろうという予想

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 完成 

    View Slide

  22. 完成?

    View Slide

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

    View Slide

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

    View Slide

  25. あきらめた作者

    View Slide

  26. 救世主現る

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. 暗雲

    View Slide

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

    View Slide

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

    View Slide