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
940
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
930
Delegated propertyで Android開発をもっと便利に @ Gunosy Beer Bash #12
chibatching
2
390
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
390
Navigating Team Friction
lara
183
14k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
Embracing the Ebb and Flow
colly
84
4.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Statistics for Hackers
jakevdp
796
220k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
Automating Front-end Workflow
addyosmani
1366
200k
Practical Orchestrator
shlominoach
186
10k
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に負荷がかからない ように注意が必要