デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。
認証を GitHub Actionsのワークフローで行うには:
- パッケージレジストリの場合(
PACKAGE-REGISTRY.pkg.github.com
)は、GITHUB_TOKEN
を利用できます。 - コンテナレジストリ(
ghcr.io/OWNER/IMAGE-NAME
)の場合は、GITHUB_TOKEN
もしくは個人アクセストークンを利用できます。GITHUB_TOKEN
を利用し、リポジトリに不要なアクセスをしないようにすることを強くおすすめします。
GitHub Actionsワークフローで使われるGITHUB_TOKEN
に関する情報については、「暗号化されたシークレット」及び「ワークフロー内での認証」を参照してください。
個人アクセストークンでの認証
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。
Gradle GroovyもしくはKotlin DSLを使って、GradleでGitHub Packagesに認証を受けることができます。それには、build.gradleファイル(Gradle Groovy)もしくはbuild.gradle.ktsファイル(Kotlin DSL)ファイルを編集して、個人アクセストークンを含めます。 リポジトリ中の単一のパッケージもしくは複数パッケージを認識するようにGradle Groovy及びKotlin DSLを設定することもできます。
USERNAMEをGitHubのユーザ名で、TOKENを個人アクセストークンで、REPOSITORYを公開したいパッケージを含むリポジトリの名前で、OWNERをリポジトリを所有するGitHubのユーザもしくはOrganizationアカウント名で置き換えてください。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。
Note: GitHub PackagesはApache MavenのSNAPSHOT
バージョンをサポートしています。 SNAPSHOT
成果物をダウンロードするためにGitHub Packagesリポジトリを使うには、使用するプロジェクトのPOM中もしくは~/.m2/settings.xmlファイルでSNAPSHOTSを有効にしてください。 例として「GitHub Packagesで使用するためのApache Mavenの設定」を参照してください。
リポジトリ中の単一のパッケージのためにGradle Groovyを使う例
plugins {
id("maven-publish")
}
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
credentials {
username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
}
}
}
publications {
gpr(MavenPublication) {
from(components.java)
}
}
}
同じリポジトリ中の複数のパッケージのためにGradle Groovyを使う例
plugins {
id("maven-publish") apply false
}
subprojects {
apply plugin: "maven-publish"
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
credentials {
username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
}
}
}
publications {
gpr(MavenPublication) {
from(components.java)
}
}
}
}
同じリポジトリ中の単一パッケージのためにKotlin DSLを使う例
plugins {
`maven-publish`
}
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
}
}
}
publications {
register("gpr") {
from(components["java"])
}
}
}
同じリポジトリ中の複数パッケージのためにKotlin DSLを使う例
plugins {
`maven-publish` apply false
}
subprojects {
apply(plugin = "maven-publish")
configure {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
}
}
}
publications {
register("gpr") {
from(components["java"])
}
}
}
}
GITHUB_TOKEN
での認証
GitHub Actionsワークフローを使っているなら、GITHUB_TOKEN
を使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_TOKEN
での認証」を参照してください。
Mavenで GITHUB_TOKEN
を使用する方法の詳細については、「MavenでJavaパッケージを公開 」を参照してください。
パッケージを公開する
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
GitHub Packagesリポジトリ内のcom.example.test
という名前のパッケージを公開します。
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
パッケージを作成した後、そのパッケージを公開できます。
$ gradle publish
パッケージをインストールする
プロジェクトの依存関係としてパッケージを追加することで、パッケージをインストールできます。 詳しい情報については、Gradleのドキュメンテーションの 「 Declaring dependencies」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
build.gradleファイル(Gradle Groovy)もしくはbuild.gradle.ktsファイル(Kotlin DSL)にパッケージの依存関係を追加してください。
Gradle Groovyの例:
dependencies { implementation 'com.example:package' }
Kotlin DSLの例:
dependencies { implementation("com.example:package") }
-
build.gradleファイル(Gradle Groovy)もしくはbuild.gradle.ktsファイル(Kotlin DSL)にmavenプラグインを追加してください。
Gradle Groovyの例:
plugins { id 'maven' }
Kotlin DSLの例:
plugins { `maven` }
-
パッケージをインストールします。
$ gradle install