From 9f76256e44157298eab2f3480b7c33b53bc96b60 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Mon, 13 Mar 2023 10:09:14 +0100 Subject: [PATCH 1/9] Add com.google.protobuf:protoc dependency for configurations Update version of Gradle Enterprise plugin to 3.12.4 --- core/scheduler/build.gradle | 1 + settings.gradle | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/scheduler/build.gradle b/core/scheduler/build.gradle index b3c14da59e8..3f47d9edafb 100644 --- a/core/scheduler/build.gradle +++ b/core/scheduler/build.gradle @@ -66,6 +66,7 @@ dependencies { resolutionStrategy.force "com.typesafe.akka:akka-http-spray-json_${gradle.scala.depVersion}:${gradle.akka_http.version}" resolutionStrategy.force "com.typesafe.akka:akka-parsing_${gradle.scala.depVersion}:${gradle.akka_http.version}" resolutionStrategy.force "com.typesafe.akka:akka-http_${gradle.scala.depVersion}:${gradle.akka_http.version}" + resolutionStrategy.force "com.google.protobuf:protoc:${gradle.protoc.version}" } implementation "org.scala-lang:scala-library:${gradle.scala.version}" implementation project(':common:scala') diff --git a/settings.gradle b/settings.gradle index 0ba8ae6befd..2230073338c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,7 +16,7 @@ */ plugins { - id "com.gradle.enterprise" version "3.10.2" + id "com.gradle.enterprise" version "3.12.4" } gradleEnterprise { @@ -86,3 +86,5 @@ gradle.ext.curator = [version : '4.3.0'] gradle.ext.kube_client = [version: '4.10.3'] gradle.ext.netty = [version : '4.1.87.Final'] + +gradle.ext.protoc = [version: '3.22.0'] From dcb7228a1f691fddd587b5a5fdf750cddb02a4af Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Mon, 13 Mar 2023 10:14:35 +0100 Subject: [PATCH 2/9] Enable local build caching --- settings.gradle | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/settings.gradle b/settings.gradle index 2230073338c..de6b517ce34 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,6 +27,12 @@ gradleEnterprise { } } +buildCache { + local { + enabled = true + } +} + include 'common:scala' include 'core:controller' From 444885ed423d0a3f290dae85c0b1758abdb8807f Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Mon, 13 Mar 2023 10:16:07 +0100 Subject: [PATCH 3/9] Use mavenCentral instead of jcenter as repository Use archiveFileName instead of deprecated archiveName property --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 89c5e289358..5543eb135c3 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { repositories { - jcenter() + mavenCentral() } dependencies { classpath "cz.alenkacz:gradle-scalafmt:${gradle.scalafmt.version}" @@ -101,7 +101,7 @@ subprojects { if (project.plugins.hasPlugin('application')) { //Ensure that dist archive name does not contain version distTar { - archiveName = "${project.name}.tar" + archiveFileName = "${project.name}.tar" } //Avoid generating the zip files from maven installations From 4de4a825e2328ec2b2b3411256f35ffc44379537 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Mon, 13 Mar 2023 10:27:15 +0100 Subject: [PATCH 4/9] Extract swagger download from copySwagger task Explicitly define inputs and outputs for copyGWActions task --- core/standalone/build.gradle | 53 ++++++++++++++++++++---------------- settings.gradle | 4 ++- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/core/standalone/build.gradle b/core/standalone/build.gradle index 031e529d85a..8eb1409908d 100644 --- a/core/standalone/build.gradle +++ b/core/standalone/build.gradle @@ -22,7 +22,8 @@ plugins { id 'org.scoverage' id 'org.springframework.boot' version '2.1.6.RELEASE' id 'scala' - id 'com.gorylenko.gradle-git-properties' version '2.0.0' + id 'com.gorylenko.gradle-git-properties' version '2.4.1' + id "de.undercouch.download" version "5.3.1" } ext.dockerImageName = 'standalone' @@ -37,30 +38,41 @@ scoverage { scoverageScalaVersion.set("${gradle.scala.scoverageScalaVersion}") } +task downloadSwagger(type: Download) { + src "https://github.com/swagger-api/swagger-ui/archive/v${gradle.swagger.version}.tar.gz" + dest file("$buildDir/tmp/swagger/swagger-ui.tar") + overwrite false +} + + task copySwagger(type: Copy) { - def version = "3.6.0" mkdir("$buildDir/tmp/swagger") def destFile = file("$buildDir/tmp/swagger/swagger-ui.tar") def uiDir = file("$buildDir/tmp/swagger/swagger-ui") - if (!destFile.exists()) { - ant.get(src: "https://github.com/swagger-api/swagger-ui/archive/v${version}.tar.gz", dest: destFile) - } from(tarTree(resources.gzip(destFile))){ - include("swagger-ui-${version}/dist/**") + include("swagger-ui-${gradle.swagger.version}/dist/**") } into(uiDir) includeEmptyDirs = false - project.ext.swaggerUiDir = file("$buildDir/tmp/swagger/swagger-ui/swagger-ui-${version}/dist") + project.ext.swaggerUiDir = file("$buildDir/tmp/swagger/swagger-ui/swagger-ui-${gradle.swagger.version}/dist") } +copySwagger.dependsOn downloadSwagger + def apiGwActions = ['createApi', "deleteApi", "getApi"] -task copyGWActions() { +task copyGWActions { + def routeMgmtDir = new File(project.projectDir, "../routemgmt") + def routeBuildDir = mkdir("$buildDir/tmp/routemgmt") + + apiGwActions.each { + inputs.dir(new File(routeMgmtDir, it)) + outputs.dir(new File(routeBuildDir, it + ".zip")) + } + doLast { - def routeMgmtDir = new File(project.projectDir, "../routemgmt") - def commonDir = new File(routeMgmtDir, "common") - def routeBuildDir = mkdir("$buildDir/tmp/routemgmt") apiGwActions.each { actionName -> + def commonDir = new File(routeMgmtDir, "common") def zipFileName = actionName + ".zip" def actionDir = new File(routeMgmtDir, actionName) def zipFile = new File(routeBuildDir, zipFileName) @@ -88,19 +100,12 @@ task copyGWActions() { } } -task copyGrafanaConfig() { - doLast { - def grafanaDir = new File(project(':core:monitoring:user-events').projectDir, "compose/grafana") - def grafanaBuildDir = mkdir("$buildDir/tmp/grafana") - def zipFileName = "grafana-config.zip" - def zipFile = new File(grafanaBuildDir, zipFileName) - if (!zipFile.exists()) { - ant.zip(destfile:zipFile){ - fileset(dir:grafanaDir) - } - logger.info("Created grafana config zip $zipFileName") - } - } +task copyGrafanaConfig(type: Zip) { + def grafanaBuildDir = mkdir("$buildDir/tmp/grafana") + def grafanaDir = new File(project(':core:monitoring:user-events').projectDir, "compose/grafana") + from grafanaDir + archiveFileName.set("grafana-config.zip") + destinationDirectory.set(grafanaBuildDir) } processResources.dependsOn copySwagger diff --git a/settings.gradle b/settings.gradle index de6b517ce34..c6a36f37545 100644 --- a/settings.gradle +++ b/settings.gradle @@ -93,4 +93,6 @@ gradle.ext.kube_client = [version: '4.10.3'] gradle.ext.netty = [version : '4.1.87.Final'] -gradle.ext.protoc = [version: '3.22.0'] +gradle.ext.protoc = [version : '3.22.0'] + +gradle.ext.swagger = [version : '3.6.0'] From 902ca122b4e0505481f9470496a2b6da84f6da25 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Mon, 13 Mar 2023 10:30:11 +0100 Subject: [PATCH 5/9] Add normalization to ignore property git.build.time in git.properties files --- core/standalone/build.gradle | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/standalone/build.gradle b/core/standalone/build.gradle index 8eb1409908d..8495562b6d6 100644 --- a/core/standalone/build.gradle +++ b/core/standalone/build.gradle @@ -145,6 +145,16 @@ processResources { } } +// This normalization has been added in order to get a cache hit +// when running tasks whose consider as inputs the resources +normalization { + runtimeClasspath { + properties('**/git.properties') { + ignoreProperty 'git.build.time' + } + } +} + task copyBootJarToBin(type:Copy){ from ("${buildDir}/libs") into file("${project.rootProject.projectDir}/bin") From 80959f9832cce44ad64de3bee2a391f00a907e9e Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Wed, 15 Mar 2023 13:26:11 +0100 Subject: [PATCH 6/9] Move dependsOn for copySwagger task into its definition --- core/standalone/build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/standalone/build.gradle b/core/standalone/build.gradle index 8495562b6d6..98e0c379b60 100644 --- a/core/standalone/build.gradle +++ b/core/standalone/build.gradle @@ -46,6 +46,7 @@ task downloadSwagger(type: Download) { task copySwagger(type: Copy) { + dependsOn(downloadSwagger) mkdir("$buildDir/tmp/swagger") def destFile = file("$buildDir/tmp/swagger/swagger-ui.tar") def uiDir = file("$buildDir/tmp/swagger/swagger-ui") @@ -57,8 +58,6 @@ task copySwagger(type: Copy) { project.ext.swaggerUiDir = file("$buildDir/tmp/swagger/swagger-ui/swagger-ui-${gradle.swagger.version}/dist") } -copySwagger.dependsOn downloadSwagger - def apiGwActions = ['createApi', "deleteApi", "getApi"] task copyGWActions { From 0cfbdec4d236dc7d0e23b2bbb894938b3eff1769 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Wed, 15 Mar 2023 14:57:09 +0100 Subject: [PATCH 7/9] Improve unclear comment --- core/standalone/build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/standalone/build.gradle b/core/standalone/build.gradle index 98e0c379b60..b8021bfa5cf 100644 --- a/core/standalone/build.gradle +++ b/core/standalone/build.gradle @@ -144,8 +144,7 @@ processResources { } } -// This normalization has been added in order to get a cache hit -// when running tasks whose consider as inputs the resources +// Ignores the property `git.build.time` in `git.properties` files to allow `compileScala` task to be cached normalization { runtimeClasspath { properties('**/git.properties') { From eb7485c2c1533b461e911e05f2de356709ff3560 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Fri, 17 Mar 2023 16:03:16 +0100 Subject: [PATCH 8/9] Replace force for protoc with a more descriptive module substitution. Downgrade protoc version used to 3.18.0 --- core/scheduler/build.gradle | 4 +++- settings.gradle | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/scheduler/build.gradle b/core/scheduler/build.gradle index 3f47d9edafb..8f5344f7247 100644 --- a/core/scheduler/build.gradle +++ b/core/scheduler/build.gradle @@ -66,7 +66,9 @@ dependencies { resolutionStrategy.force "com.typesafe.akka:akka-http-spray-json_${gradle.scala.depVersion}:${gradle.akka_http.version}" resolutionStrategy.force "com.typesafe.akka:akka-parsing_${gradle.scala.depVersion}:${gradle.akka_http.version}" resolutionStrategy.force "com.typesafe.akka:akka-http_${gradle.scala.depVersion}:${gradle.akka_http.version}" - resolutionStrategy.force "com.google.protobuf:protoc:${gradle.protoc.version}" + resolutionStrategy.dependencySubstitution { + substitute module("com.google.protobuf:protoc") using module("com.google.protobuf:protoc:${gradle.protoc.version}") because "previous versions didn't target M1 architecture" + } } implementation "org.scala-lang:scala-library:${gradle.scala.version}" implementation project(':common:scala') diff --git a/settings.gradle b/settings.gradle index c6a36f37545..585674ee26d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -93,6 +93,6 @@ gradle.ext.kube_client = [version: '4.10.3'] gradle.ext.netty = [version : '4.1.87.Final'] -gradle.ext.protoc = [version : '3.22.0'] +gradle.ext.protoc = [version : '3.18.0'] gradle.ext.swagger = [version : '3.6.0'] From 67447e90339eb2ff18a9092c2fd2051e23a0d310 Mon Sep 17 00:00:00 2001 From: Tommaso Previero Date: Wed, 22 Mar 2023 15:13:15 +0100 Subject: [PATCH 9/9] Remove local build cache configuration as it's enabled by default. Remove normalization on core/standalone for git.properties --- core/standalone/build.gradle | 9 --------- settings.gradle | 6 ------ 2 files changed, 15 deletions(-) diff --git a/core/standalone/build.gradle b/core/standalone/build.gradle index b8021bfa5cf..60800df5217 100644 --- a/core/standalone/build.gradle +++ b/core/standalone/build.gradle @@ -144,15 +144,6 @@ processResources { } } -// Ignores the property `git.build.time` in `git.properties` files to allow `compileScala` task to be cached -normalization { - runtimeClasspath { - properties('**/git.properties') { - ignoreProperty 'git.build.time' - } - } -} - task copyBootJarToBin(type:Copy){ from ("${buildDir}/libs") into file("${project.rootProject.projectDir}/bin") diff --git a/settings.gradle b/settings.gradle index 585674ee26d..9fbc0524f27 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,12 +27,6 @@ gradleEnterprise { } } -buildCache { - local { - enabled = true - } -} - include 'common:scala' include 'core:controller'