You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ho...@apache.org on 2022/10/21 15:18:22 UTC

[solr] branch branch_9x updated: Use lazy-evaluated vars in docker gradle build (#1092)

This is an automated email from the ASF dual-hosted git repository.

houston pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 89adf62cf09 Use lazy-evaluated vars in docker gradle build (#1092)
89adf62cf09 is described below

commit 89adf62cf0902f351f65d12df2772d9bfa79327c
Author: Houston Putman <ho...@apache.org>
AuthorDate: Fri Oct 21 10:33:14 2022 -0400

    Use lazy-evaluated vars in docker gradle build (#1092)
    
    (cherry picked from commit 76ff487f4a4796de515c9acb6cb5c446bea711b8)
---
 solr/docker/build.gradle | 44 +++++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/solr/docker/build.gradle b/solr/docker/build.gradle
index 18927c36d9e..b7cf405c0fb 100644
--- a/solr/docker/build.gradle
+++ b/solr/docker/build.gradle
@@ -24,13 +24,13 @@ description = 'Solr Docker image'
 apply plugin: 'base'
 
 // Solr Docker inputs
-def dockerImageRepo = propertyOrEnvOrDefault("solr.docker.imageRepo", "SOLR_DOCKER_IMAGE_REPO", "apache/solr")
-def dockerImageTag = propertyOrEnvOrDefault("solr.docker.imageTag", "SOLR_DOCKER_IMAGE_TAG", "${version}")
-def dockerImageName = propertyOrEnvOrDefault("solr.docker.imageName", "SOLR_DOCKER_IMAGE_NAME", "${dockerImageRepo}:${dockerImageTag}")
-def baseDockerImage = propertyOrEnvOrDefault("solr.docker.baseImage", "SOLR_DOCKER_BASE_IMAGE", 'eclipse-temurin:17-jre')
-def officialDockerImageName = propertyOrEnvOrDefault("solr.docker.imageName", "SOLR_DOCKER_IMAGE_NAME", "${dockerImageRepo}-official:${dockerImageTag}")
+def dockerImageRepo = "${ -> propertyOrEnvOrDefault("solr.docker.imageRepo", "SOLR_DOCKER_IMAGE_REPO", "apache/solr") }"
+def dockerImageTag = "${ -> propertyOrEnvOrDefault("solr.docker.imageTag", "SOLR_DOCKER_IMAGE_TAG", project.version) }"
+def dockerImageName = "${ -> propertyOrEnvOrDefault("solr.docker.imageName", "SOLR_DOCKER_IMAGE_NAME", "${dockerImageRepo}:${dockerImageTag}") }"
+def baseDockerImage = "${ -> propertyOrEnvOrDefault("solr.docker.baseImage", "SOLR_DOCKER_BASE_IMAGE", 'eclipse-temurin:17-jre') }"
+def officialDockerImageName = "${ -> propertyOrEnvOrDefault("solr.docker.imageName", "SOLR_DOCKER_IMAGE_NAME", "${dockerImageRepo}-official:${dockerImageTag}") }"
 
-def releaseGpgFingerprint = propertyOrDefault('signing.gnupg.keyName',propertyOrDefault('signing.keyId',''));
+def releaseGpgFingerprint = "${ -> propertyOrDefault('signing.gnupg.keyName',propertyOrDefault('signing.keyId','')) }"
 
 // Build directory locations
 def imageIdFile = "$buildDir/image-id"
@@ -138,9 +138,9 @@ task dockerBuild(dependsOn: configurations.solrTgz) {
     exec {
       standardInput = configurations.solrTgz.singleFile.newDataInputStream()
       commandLine "docker", "build",
-              "-f", "solr-${version}/docker/Dockerfile",
+              "-f", "solr-${ -> project.version }/docker/Dockerfile",
               "--iidfile", imageIdFile,
-              "--build-arg", "BASE_IMAGE=${inputs.properties.baseDockerImage}",
+              "--build-arg", "BASE_IMAGE=${ -> inputs.properties.baseDockerImage}",
               "-"
     }
   }
@@ -149,9 +149,9 @@ task dockerBuild(dependsOn: configurations.solrTgz) {
   doLast {
     def dockerImageId = file(imageIdFile).text
     project.logger.lifecycle("Solr Docker Image Created")
-    project.logger.lifecycle("\tID: \t$dockerImageId")
-    project.logger.lifecycle("\tBase Image: \t$baseDockerImage")
-    project.logger.lifecycle("\tSolr Version: \t$version")
+    project.logger.lifecycle("\tID: \t${ -> dockerImageId }")
+    project.logger.lifecycle("\tBase Image: \t${ -> baseDockerImage }")
+    project.logger.lifecycle("\tSolr Version: \t${ -> project.version }")
   }
 
   outputs.files(imageIdFile)
@@ -272,7 +272,7 @@ ext {
 
       // NOTE: SHA is lazy computed...
       'SOLR_TGZ_SHA': "${ -> checksum(configurations.solrTgz.singleFile) }",
-      'RELEASE_MANAGER_GPG_FINGERPRINT': "${releaseGpgFingerprint}"
+      'RELEASE_MANAGER_GPG_FINGERPRINT': "${ -> releaseGpgFingerprint}"
     ]
   ]
 }
@@ -292,15 +292,17 @@ The final Dockerfiles are merely the snippet headers combined with the snippet b
   def fileName = "Dockerfile.${ -> details.name.toLowerCase(Locale.ROOT) }"
   def outFile = file("$dockerfilesDirPath/${fileName}")
   
-  def props = [
-    // Values defined here should be common (and consistent) across both Dockerfiles
-    'BASE_IMAGE': baseDockerImage,
-    'SOLR_VERSION': version,
-    * : details.props
-  ]
+
   tasks.create("createDockerfile${details.name}", Copy) {
     description "Creates ${details.desc}"
-    
+
+    def props = [
+          // Values defined here should be common (and consistent) across both Dockerfiles
+          'BASE_IMAGE': baseDockerImage,
+          'SOLR_VERSION': "${ -> project.version}",
+          * : details.props
+      ]
+
     dependsOn tasks.createBodySnippetDockerfile
     inputs.properties(props)
     inputs.file("$buildDir/snippets/Dockerfile.body.snippet")
@@ -408,8 +410,8 @@ task testBuildDockerfileOfficial(type: Copy) {
             '--add-host', "mock-solr-dl-server:${mockServerIp}",
             '--no-cache', // force fresh downloads from our current network
             "--iidfile", imageIdFileOfficial,
-            '--build-arg', "SOLR_CLOSER_URL=http://mock-solr-dl-server:9876/solr-${version}.tgz",
-            '--build-arg', "SOLR_ARCHIVE_URL=http://mock-solr-dl-server:9876/solr-${version}.tgz",
+            '--build-arg', "SOLR_CLOSER_URL=http://mock-solr-dl-server:9876/solr-${ -> project.version}.tgz",
+            '--build-arg', "SOLR_ARCHIVE_URL=http://mock-solr-dl-server:9876/solr-${ -> project.version}.tgz",
             '--tag', officialDockerImageName,
             '-'
         }