Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KotprefをJCenterからMaven Centralに移行した話
Search
chibatching
April 05, 2021
0
1k
KotprefをJCenterからMaven Centralに移行した話
20221/04/05 Kotlin Tech Talk
https://mercari.connpass.com/event/206751/
chibatching
April 05, 2021
Tweet
Share
More Decks by chibatching
See All by chibatching
KotlinのDelegated Propertiesを活用してAndroidアプリ開発をもっと便利にする
chibatching
2
1.1k
Delegated propertyで Android開発をもっと便利に @ Gunosy Beer Bash #12
chibatching
2
440
Featured
See All Featured
Designing for Performance
lara
610
69k
Typedesign – Prime Four
hannesfritz
42
2.8k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
620
Become a Pro
speakerdeck
PRO
29
5.5k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
Transcript
KotprefをJCenterから Maven Centralに 移行した話 About migration of Kotpref from JCenter
to Maven Central by chibatching @Kotlin Tech Talk, 2021/04/05
• chibatching ◦ Androidアプリ開発 ◦ Android用OSSライブラリ ▪ Kotpref 自己紹介
JCenter • JFrogが運営する公開Mavenリポジトリのホスティングサービス • AndroidのOSSライブラリでも多く利用されている • Kotprefの配布でも利用
JCenter 突然の死
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/
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に負荷がかからない ように注意が必要