20221/04/05 Kotlin Tech Talk https://mercari.connpass.com/event/206751/
KotprefをJCenterからMaven Centralに移行した話About migration of Kotpref from JCenter to Maven Centralby chibatching @Kotlin Tech Talk, 2021/04/05
View Slide
● chibatching○ Androidアプリ開発○ Android用OSSライブラリ■ Kotpref自己紹介
JCenter● JFrogが運営する公開Mavenリポジトリのホスティングサービス● AndroidのOSSライブラリでも多く利用されている● Kotprefの配布でも利用
JCenter突然の死
Into the Sunset● 2021/02/03JCenter含むJFrogの公開パッケージホスティングサービスが5/1で停止すると発表○ 5/1の停止はUIとAPI○ ホスティング自体は2022/2/1まで継続https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
Android界隈への影響● アプリ開発者○ JCenterへの依存を断ち切らないとビルドできなくなる■ JCenterにだけ公開しているライブラリが他のホスティングサービスへ移行されるのを待つ■ 自前でローカルや社内リポジトリにパッケージを確保しておく
Android界隈への影響● ライブラリ開発者○ JCenterだけに公開しているライブラリを他のホスティングサービスに移行する必要がある■ 新しいバージョンを公開できるのは2021/3/31まで■ 2022/2/1には公開済みのものも参照不可
ライブラリ開発者としてJCenterから移行した話
移行先の検討
独自ホスティング● 自分でMavenリポジトリサーバを立てる○ 管理が大変…○ 利用者側でライブラリ毎にリポジトリの追加が必要repositories {mavenCentral()jcenter()google()maven { url “https://my.library.repo/” }}
GitHub Packages● GitHubが提供するパッケージホスティングサービス○ Mavenリポジトリにも対応○ 利用者側でライブラリ毎にリポジトリの追加が必要○ GitHubへの認証も必要repositories {maven {url “https://maven.pkg.github.com/OWNER/REPOSITORY”credentials {username = “github_user_name”password = “github_password”}}}
JitPack● GitHub上のソースコードからアーティファクトを生成してくれる● バージョン名はタグ● デフォルトではGroup IDやArtifact IDが固定○ com.github.User:Repo:Tag○ 独自ドメインにも対応しているので既存のものに合わせられる場合もある● 初回ダウンロードが遅い○ バージョンの初回リクエスト時にビルドするため
Maven Central● Mavenパッケージホスティングサービスの重鎮○ JCenterと比べてパッケージの要件が厳しい■ アーティファクトへのGPG署名必須やPOM必須項目○ リポジトリを作るのが少し手間らしい■ Sonatypeへリポジトリ作成依頼のJIRAチケット作成■ ドメインの正当性チェック
移行先の検討● Kotprefでは移行先にMaven Centralを選定○ 信頼性○ 大変なのは最初の設定だけ(だろうという予想
アカウント/リポジトリの作成
JIRAチケットの起票● SonatypeのJIRAアカウントを作成● 必要事項を入力してSonatypeにJIRAチケットを起票
ドメインの正当性チェック● チケットにつくBotからコメントに従ってドメインのTXTレコードにチケット番号を設定
リポジトリが作成される● TXTレコード浸透後10分程度でリポジトリが作成される● すべてBotが対応してくれるのでJIRAチケット起票から20分ほどで完了
リポジトリにアクセスできるようになった● Profileからaccess tokenなどを取得する
Gradle TaskやCI設定の変更● bintray/gradle-bintray-pluginの廃止● sonatypeへのpublish情報追加https://github.com/chibatching/Kotpref/pull/240
完成
完成?
これからリリースするバージョンだけがMaven Centralに公開される
既存のバージョンを移行するのはかなりの手間1. 既存のアーティファクトをすべてダウンロード2. すべてのアーティファクトにGPG署名をつける3. POMの不足項目をすべて埋める
あきらめた作者
救世主現る
https://zenn.dev/red_fat_daruma/articles/0f3a01a53dc4fd
● 記事で提供してくれているスクリプトが面倒な作業の大半を自動化○ 過去バージョンのダウンロード○ GPG署名○ POMの補完過去バージョンの移行作業
スクリプトを利用して移行作業を進めていると…
暗雲
● 数十の公開作業が数分の間に行われて過負荷になったからBANしたよ!!○ とりあえず謝罪とアカウント復活してもらい事なきを得る…問い合わせ
まとめ● JCenter終了に向けてアプリ開発者、ライブラリ開発者どちらも準備を進めておきましょう● ライブラリ開発者のJCenterからMaven Central移行は先人のおかげでだいぶ楽になっている● スクリプトで大量の移行を行うときはMaven Centralに負荷がかからないように注意が必要