GitHub Package Registry
GitHubのアーティファクト公開サービスPackage Registryのベータにようやくサインアップできたので、MavenリポジトリからJARの公開を試みる。
実験に使ったリポジトリはこちら。
公式
トークンの作成
Packageの権限はリポジトリとは別になっているので、既存のトークンがある人でも再発行/設定しなおしが必要になると思われる。
今回はgradle.properties
に、ユーザー名とトークンを設定しておく。この辺は環境変数などお好みで。
GITHUB_USER = minebreaker
GITHUB_TOKEN = [[token]]
build.gradle
普通のMaven Publishプラグインを使用。
plugins {
id 'maven-publish'
}
publishing {
repositories {
maven {
name = "github"
url = 'https://maven.pkg.github.com/minebreaker/Abukuma'
credentials {
username = project.hasProperty("GITHUB_USER") ? GITHUB_USER : ''
password = project.hasProperty("GITHUB_TOKEN") ? GITHUB_TOKEN : ''
}
}
}
publications {
maven(MavenPublication) {
version '0.0.0.1-EXPLORING_GITHUB_REGISTRY' // バージョンを指定したい場合
pom {
url = 'https://github.com/minebreaker/Abukuma'
licenses {
license {
name = 'MIT'
}
}
}
from components.java
artifact sourcesJar
artifact javadocJar
}
}
}
repositories {}
で、GitHubをパッケージの公開先に指定。pom
は適当に。ここでURLのminebreakerとAbukumaを、各自のユーザー名とリポジトリに置き換えること。
グループ、アーティファクト、バージョンは、デフォルトではプロジェクトの設定からそのまま利用される。上記ではversionを、実験用であることを明示するため変えてある(基本的に削除はできないので注意)。
アップロード
publishMavenPublicationToGithubRepository
タスクを実行する。上記のリポジトリ設定のname = github
から自動でタスクを設定してくれる模様。
これで実行すると、残念なことにタスクは中途半端に失敗し、クラスファイルのJARだけ公開され、Javadocとソースはアップロードに失敗した。設定が悪いのか、Gradleを使っているのが悪いのか、GitHubが悪いのかは不明。知見求む。
ライブラリーを使う
公式ではURLがhttps://maven.pkg.github.com/OWNER
となっていたが、リポジトリ名を含めないと失敗した。仕様なのかバグなのかドキュメントのミスなのかは不明。
また、レジストリをパブリックにする設定が見つからず、ダウンロードにも認証情報を与えなければならない(ソースはパブリックなのに...)。
したがって設定は以下のようになる。
repositories {
maven {
url = 'https://maven.pkg.github.com/minebreaker/Abukuma'
credentials {
username = project.hasProperty("GITHUB_USER") ? GITHUB_USER : ''
password = project.hasProperty("GITHUB_TOKEN") ? GITHUB_TOKEN : ''
}
}
}
dependencies {
implementation 'rip.deadcode.abukuma3:abukuma-jetty:0.0.0.2-EXPLORING_GITHUB_REGISTRY'
}
まとめ
まだベータ版という印象(ベータ版だけど)。
次回はDockerを試したい。 -> GitHub Package RegistryにDocker Imageを公開する