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
960
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
940
Delegated propertyで Android開発をもっと便利に @ Gunosy Beer Bash #12
chibatching
2
400
Featured
See All Featured
Building Applications with DynamoDB
mza
91
6.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
94
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
For a Future-Friendly Web
brad_frost
175
9.4k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Music & Morning Musume
bryan
46
6.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
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に負荷がかからない ように注意が必要