初めに
ド素人のメモです。
すみません。
本職でもないから許してくれ。
環境
- Windows10
- IntelliJ IDEA Community
リポジトリ作成
GitHubでリポジトリ作ります。
プロジェクト作成
Kotlin DSL ビルドスクリプトにチェックを入れます。
グループIDとかアーティファクトIDは適当なものを。

終わったらローカルリポジトリを作成してリモートリポジトリを追加してください。
build.gradle.kts
GitHubのドキュメントからまんまパクりました。
気を付ける点としてはurlのOWNER(ユーザー名/組織名)は全て小文字にすること。
nameはGitHubPackagesで固定。
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("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}
publications {
register<MavenPublication>("gpr") {
from(components["java"])
}
}
}
gradle.properties
先程のbuild.gradle.ktsのproject.findPropertyはgradle.propertiesの値を取得します。そのため、ユーザー名とtokenをgradle.propertiesに書かなければなりません。まずはトークン取得から。
トークン取得
https://github.com/settings/tokens でトークンを作成します。
以下を参考に必要な権限を設定します。
よく分からんから全部付けてみた!!

権限の設定が終わったらGenerate tokenを押します。
トークンが生成されるのでコピーして下さい。

貼り付けする前に
トークンを取得したはいいものの、作成したプロジェクト内にあるgradle.propertiesに貼り付けてはリモートリポジトリで丸見えです。
project.findPropertyはユーザーディレクトリの方のgradle.propertiesの内容も取得します。
なので、貼り付ける先はユーザーディレクトリの.gradle/gradle.propertiesにします。
<USER_HOME>/.gradle/gradle.propertiesです。
ちなみに2つのファイルに同じキーがあった場合、優先度はユーザーディレクトリの方にあります。
gpr.user=GitHubID
gpr.key=TOKEN
gradleでPackage作成
別にActions使わなくてもPackagesは作れます。
コマンドを打つだけです。
> .\gradlew publish
gradle.propertiesに定義せずとも作成する方法もあります。
コマンドラインの引数でプロパティを設定してあげます。
-PpropertyName=propertyValueで設定できます。
> .\gradlew publish -Pgpr.user=GitHubID -Pgpr.key=TOKEN
GitHub ActionsでPackage作成
Actions作成
ドキュメントからパクリました。
name: Publish package to GitHub Packages
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'adopt'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Publish package
uses: gradle/gradle-build-action@v2
with:
arguments: publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
先程のbuild.gradle.ktsのSystem.getenvは環境変数の取得です。そのため、GitHub ActionsでGITHUB_ACTORとGITHUB_TOKENを環境変数として設定してあげる必要があります。
GITHUB_TOKENはsecrets.GITHUB_TOKENを設定してあげます。secrets.GITHUB_TOKENはデフォルトで定義されているシークレット変数なのでsecrets.GITHUB_TOKENを設定する作業とかは無いです。
GITHUB_ACTORはデフォルトで環境変数として設定されているので特に何かする必要はありません。
リリースしてPackages作成
GitHubでリリースを作成するとActionsが走ってPackagesが作成されます。
Gradle script /home/runner/work/*/gradlew is not executable.
gradlewに実行権限が無いらしいです。
なので実行権限を与えてあげます。
> git update-index --chmod=+x gradlew
公開されたパッケージの利用
repositories {
maven {
url = uri("https://maven.pkg.github.com/OWNER/REPOSITORY")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}
dependencies {
implementation("com.example:package")
}