GitHub ActionsでBuildしGitHub Packagesで公開する。
タイトルそのままなのだが、簡単なことだったのに1日かかったので。
前提
- spring boot(はあんまり関係ない)
- Gradle project
GitHub Packagesで公開する。
まずはここから始めた方がいい。これが出来ないとこの後の処理が始まらない。
ここにあるといえばそれまでなのだが、まずはpluginを追加する。
plugins {
id 'maven-publish'
}
次にこれを追加する。
publishing {
repositories {
maven {
name = "GitHubPackages"
# FIXME
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)
}
}
}
因みにuriのFQDNは今回はmaven repositoryなのでmaven.pkg.github.com
固定である。ここがわからなくて結構ハマってた。ずっと普通のgithub.comにしてた。
なので、ここで注意であるが、この時点でローカルで./gradlew assemble publish
で確認した方がいい。この際に、gradle.propertiesに以下を追加すること
gpr.user=OWNER
grr.key=PRIVATE_ACCESS_TOKEN
OWNERはまあわかると思うが、アクセストークンは以下を見て作成すること。
https://help.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
権限は以下があれば良い。
ここでうまくいけば、当該repositoryのpackageの箇所にこんな感じに追加されるはずである。これができていないとその先ができない。
GitHub Actionsを作成する。
Actions→New workflowのボタンから作れば良い、のだが、多分何を作れば良いのか分からないと思うので、以下で良い。結果的には.github/workflows
配下にyaml形式で作成することになる。
GitHub-flow前提なので、トリガーはmasterに対してのpush,PRのみとしている。
# This is a basic workflow to help you get started with Actions
# FIXME
name: CI
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Publish library
env:
# FIXME
USERNAME: OWNER
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew assemble publish
OWNERは当然変更すべきなので置いといて、GITHUB_TOKENは自動的に作られるので便利である。もちろん上述した、アクセストークンを使っても構わないが。
https://help.github.com/ja/actions/configuring-and-managing-workflows/authenticating-with-the-github_token
これを行なってうまくいけば、github actionsが動き出す。
GitHub Actionsが上記の通り完了すれば上述したのと同様に、packagesが公開される。本来はbuild cacheの設定などちゃんとやった方がいいが。
この辺のworkflowの設定はこの辺にあるので、必要に応じて読めば良い。(碌に読んでない。)
https://help.github.com/ja/actions/reference/workflow-syntax-for-github-actions
groupidなど。
ここはgradle側の設定である。今回は以下の通りである。SNAPSHOT運用前提としている。
group = 'com.example'
version = '0.0.2-SNAPSHOT'
利用側
ライブラリの利用時には、多分きっといや間違いなく、認証設定が必要である。それは下の参考ページの設定と同じだと思うので割愛する。
参考サイト
とても参考にさせて頂いたというか、パクったとも言う。
https://qiita.com/Horie1024/items/be2b5eb768f36794c4f1
こっちの方がちゃんとしてていいかもしれない。JavaのVer設定とかはこっちに書いてある。
https://github.com/actions/setup-java#publishing-using-gradle
Author And Source
この問題について(GitHub ActionsでBuildしGitHub Packagesで公開する。), 我々は、より多くの情報をここで見つけました https://qiita.com/fake-deli-ca/items/7d408a444b3421d6c09a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .