Closed9

graphql-spring-boot を Artifact Registry に publish して使う

itkqitkq

maven-publisher というサービスアカウントを作って Artifact Registry Administrator ロールを与える。Key を作成し JSON 形式でダウンロードする。

itkqitkq
gcloud auth activate-service-account  maven-publisher@YOUR_PROJECT.iam.gserviceaccount.com --key-file ./key.json
gcloud artifacts print-settings gradle --project=YOUR_PROJECT --repository=maven-test --location=asia-northeast1 --json-key=./key.json

すると artifactRegistryMavenSecret という値と Gradle の設定情報がべろっとでてくる。artifactRegistryMavenSecret は key.json を base64 した値。この値は秘密の値なので、~/.gradle/gradle.properties に記述する。ここで注意なのが、以下のようにダブルクォートは外すこと。

# ~/.gradle/gradle.properties
artifactRegistryMavenSecret=...
itkqitkq

2つのファイルをいじる。

diff --git a/build.gradle b/build.gradle
index 87be772..b4def86 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,6 +25,7 @@ plugins {
     id "org.sonarqube" version "$PLUGIN_SONARQUBE_VER"
     id "jacoco"
     id 'io.codearte.nexus-staging' version "$PLUGIN_NEXUS_STAGING_VER"
+    id "maven-publish"
 }
 
 sonarqube {
@@ -132,16 +133,6 @@ subprojects {
         }
     }
 
-    if (!version.toString().endsWith('-SNAPSHOT')) {
-        ext["signing.keyId"] = System.env.SIGNING_KEY_ID
-        ext["signing.password"] = System.env.SIGNING_PASSWORD
-        ext["signing.secretKeyRingFile"] = System.env.SIGNING_SECRET_KEY_RING_FILE
-
-        signing {
-            sign publishing.publications
-        }
-    }
-
     publishing {
         publications {
             mavenJava(MavenPublication) {
@@ -191,26 +182,16 @@ subprojects {
         }
         repositories {
             maven {
-                name 'ossrh'
-                if (version.toString().endsWith("-SNAPSHOT")) {
-                    url "https://oss.sonatype.org/content/repositories/snapshots/"
-                } else {
-                    url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
-                }
+                url "https://asia-northeast1-maven.pkg.dev/YOUR_PROJECT/maven-test"
                 credentials {
-                    username = System.env.OSS_USER_TOKEN_KEY ?: project.findProperty('OSS_USER_TOKEN_KEY') ?: ''
-                    password = System.env.OSS_USER_TOKEN_PASS ?: project.findProperty('OSS_USER_TOKEN_PASS') ?: ''
+                    username = "_json_key_base64"
+                    password = artifactRegistryMavenSecret
                 }
             }
         }
     }
 }
 
-nexusStaging {
-    username = System.env.OSS_USER_TOKEN_KEY ?: project.findProperty('OSS_USER_TOKEN_KEY') ?: ''
-    password = System.env.OSS_USER_TOKEN_PASS ?: project.findProperty('OSS_USER_TOKEN_PASS') ?: ''
-}
-
 wrapper {
     distributionType = Wrapper.DistributionType.ALL
 }
diff --git a/gradle.properties b/gradle.properties
index a332cb7..2ffdb09 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,7 +16,7 @@
 # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
-version=12.0.0-SNAPSHOT
+version=11.2.0 # てきとう
 ### Project Metadata
 PROJECT_GROUP=com.graphql-java-kickstart
 PROJECT_NAME=graphql-spring-boot

その後 ./gradlew clean build publish する

itkqitkq

graphql-java-servlet が SNAPSHOT を向いていてビルドできないので、こちらも同様にして publish する。その後バージョンを書き換えて graphql-spring-boot を再度 publish

diff --git a/gradle.properties b/gradle.properties
index a332cb7..b942afc 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,7 +16,7 @@
 # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
-version=11.2.0
+version=11.3.0
 ### Project Metadata
 PROJECT_GROUP=com.graphql-java-kickstart
 PROJECT_NAME=graphql-spring-boot
@@ -32,7 +32,7 @@ TARGET_COMPATIBILITY=1.8
 LIB_GRAPHQL_JAVA_VER=17.1
 LIB_EXTENDED_SCALARS_VER=17.0
 LIB_SPRING_BOOT_VER=2.5.4
-LIB_GRAPHQL_SERVLET_VER=12.0.0-SNAPSHOT
+LIB_GRAPHQL_SERVLET_VER=11.3.0
 LIB_GRAPHQL_JAVA_TOOLS_VER=11.1.0
 LIB_GRAPHQL_ANNOTATIONS_VER=8.3
 LIB_REFLECTIONS_VER=0.9.11
itkqitkq

最後に、graphql-spring-boot を利用する側のプロジェクトで、以下の変更を加えつつ、先程 publish したバージョンを指定すれば OK

# build.gradle.kts
repositories {
    // これを足す
    maven {
        val artifactRegistryMavenSecret: String by extra
        url = uri("https://asia-northeast1-maven.pkg.dev/YOUR_PROJECT/maven-test")
        credentials {
            username = "_json_key_base64"
            password = artifactRegistryMavenSecret
        }
        authentication {
            create<BasicAuthentication>("basic")
        }
    }
}
このスクラップは2021/09/11にクローズされました