まさか、二年ぶりの更新になるとは思わなかったなぁー
二転三転して、今もまたパブリッククラウド様のおかけで何とか生活を賄っているが、今回はなんと大嫌いのjavaのネタです(笑)
社内のMavenRegistry(ぶっちゃけNexus)にホスティングしているライブラリー達を如何にGCP環境のArtifactRegistyに移行するお話をまとめました。
TL;DR
- (VPN接続)社内のMavenRegistry(Nexus)からSpringBoot PJT用のライブラリー一式をローカルPCにダウンロード
$ gradlew clean build
成功したら下記pathにライブラリ群が格納されているはず~/.gradle/caches/modules-2/files-2.1/*
- (VPN切断)GCPへの接続やTOKEN取得を行う
$ gcloud auth application-default login
$ export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
- 自作簡易アプリでgradlew publishをGCPのArtifactRegistryに向けて実行
- SpringBoot PJTのmaven接続先をGCP ArtifactRegistry修正
- 依存関係リフレッシュbuildを行い、build成功を確認
$ gradlew clean build --refresh-dependencies
ゴール
社内しかアクセスできないMavenRegistry(Nexus)からライブラリー群をGCPのArtifactRegistryに移行し、VPN無しの環境(例えばGithubActions)でもjavaアプリをbuildできるようにしたい
お作法
事前準備
- 利用したいjavaアプリのチェックアウト
- 社内MavenRegistry(Nexus)へのアクセス方法取得
- VPNやNexusユーザ名PWなど
- GCP環境へのアクセス方法取得
- ArtifactRegistry作成済み確認
- 権限付与など確認
$ gcloud auth application-default login
$ export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
- 自作簡易アプリのチェックアウト
- 簡易なのでbuild.gradleだけ掲載
1 | plugins { |
ライブラリーPublish方法
- 利用したいjavaアプリのチェックアウト
$ ./gradlew clean build
- build成功したら、ローカルにダウンロードされているライブラリーを確認
~/.gradle/caches/modules-2/files-2.1/*
- 社内groupIdもし確定でしたら、下記コマンドでも一覧を出せる
./gradlew buildEnvironment | grep com.{会社名?など}
./gradlew dependencies | grep com.{会社名?など}
- ローカルにダウンロードした移行対象ライブラリーを自作簡易アプリの./lib/直下にコピー
- jarとpom両方も必要
- 自作簡易アプリの設定を修正し、必要なライブラリー名とpathと依存関係をセット
- ArtifactRegistryへ登録
$ export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
$ ./gradlew publish
ゴール確認
無事publish実行できたら、該当GCPのArtifactRegistryにブラウザでアクセスすると、publishされたライブラリーを確認できる。
利用したいjavaアプリのbuild.gradleにて、buildscript->repositories->mavenを修正し、社内MavenRegistry(Nexus)の向き先情報をGCPのArtifactRegistry情報に置き換える
※下記一例
1 | buildscript { |
思った事
やっぱjava嫌いだ