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

mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new d9d9d4a515 IGNITE-19383 Add git last commit hash to version (#3925)
d9d9d4a515 is described below

commit d9d9d4a5153b0105d922144e3cbc19c52d1ed35f
Author: Mikhail <[email protected]>
AuthorDate: Mon Jun 24 16:47:12 2024 +0300

    IGNITE-19383 Add git last commit hash to version (#3925)
---
 buildscripts/generate-version-file.gradle          | 42 ++++++++++++++++++++++
 modules/runner/build.gradle                        |  1 +
 .../apache/ignite/internal/app/IgnitionImpl.java   | 17 +++++++--
 packaging/db/build.gradle                          |  7 ++--
 4 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/buildscripts/generate-version-file.gradle 
b/buildscripts/generate-version-file.gradle
new file mode 100644
index 0000000000..19209b9e02
--- /dev/null
+++ b/buildscripts/generate-version-file.gradle
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+def createVersionFile = tasks.register('createVersionFile') {
+    onlyIf {
+        project.hasProperty("lastCommitHash")
+    }
+
+    def versionFileName = "ignite.version.full"
+    def versionFile = file("$buildDir/$versionFileName")
+
+    if (versionFile.exists()) {
+        versionFile.delete()
+    }
+
+    doLast {
+        def versionProp = project.property("lastCommitHash")
+
+        versionFile << project.version + "-sha1:" + versionProp
+    }
+
+    outputs.file versionFile
+}
+
+// make  processResources depends on createExtraFilesIndex task
+processResources {
+    from createVersionFile
+}
diff --git a/modules/runner/build.gradle b/modules/runner/build.gradle
index 454e2a49a5..407f847df4 100644
--- a/modules/runner/build.gradle
+++ b/modules/runner/build.gradle
@@ -20,6 +20,7 @@ apply from: "$rootDir/buildscripts/publishing.gradle"
 apply from: "$rootDir/buildscripts/java-junit5.gradle"
 apply from: "$rootDir/buildscripts/java-test-fixtures.gradle"
 apply from: "$rootDir/buildscripts/java-integration-test.gradle"
+apply from: "$rootDir/buildscripts/generate-version-file.gradle"
 
 description = 'ignite-runner'
 
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
index 5ba9a99409..bd00bd207c 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
@@ -20,6 +20,9 @@ package org.apache.ignite.internal.app;
 import static java.lang.System.lineSeparator;
 
 import com.google.auto.service.AutoService;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
@@ -236,8 +239,18 @@ public class IgnitionImpl implements Ignition {
 
         String padding = " ".repeat(22);
 
-        String version = "Apache Ignite ver. " + 
IgniteProductVersion.CURRENT_VERSION;
+        String version;
 
-        LOG.info("{}" + lineSeparator() + "{}{}" + lineSeparator(), banner, 
padding, version);
+        try (InputStream versionStream = 
IgnitionImpl.class.getClassLoader().getResourceAsStream("ignite.version.full")) 
{
+            if (versionStream != null) {
+                version = new String(versionStream.readAllBytes(), 
StandardCharsets.UTF_8);
+            } else {
+                version = IgniteProductVersion.CURRENT_VERSION.toString();
+            }
+        } catch (IOException e) {
+            version = IgniteProductVersion.CURRENT_VERSION.toString();
+        }
+
+        LOG.info("{}" + lineSeparator() + "{}{}" + lineSeparator(), banner, 
padding, "Apache Ignite ver. " + version);
     }
 }
diff --git a/packaging/db/build.gradle b/packaging/db/build.gradle
index ccb30a04dd..682f4bd05b 100644
--- a/packaging/db/build.gradle
+++ b/packaging/db/build.gradle
@@ -24,6 +24,8 @@ plugins {
     alias(libs.plugins.setupbuilder)
 }
 
+apply from: "$rootDir/buildscripts/generate-version-file.gradle"
+
 java {
     sourceCompatibility = JavaVersion.VERSION_11
     targetCompatibility = JavaVersion.VERSION_11
@@ -163,6 +165,7 @@ distributions {
                 from "$buildDir/zip/${zipStartScriptTokensWin.VARS_FILE_NAME}"
                 from generateConfigDefaults
                 from "$buildDir/zip/ignite.java.util.logging.properties"
+                from createVersionFile
             }
             into('bin') {
                 fileMode 0755
@@ -280,6 +283,7 @@ ospackage {
             from "$buildDir/linux/service/vars.env"
             from "$buildDir/linux/ignite.java.util.logging.properties"
             from generateConfigDefaults
+            from createVersionFile
         }
 
         into('etc') {
@@ -290,8 +294,6 @@ ospackage {
     link "/opt/ignite3db", "${packageTokens.INSTALL_DIR}"
 }
 
-
-
 if (project.hasProperty('prepareRelease')) {
     artifacts {
         dbRelease(file("$buildDir/distributions")) {
@@ -348,6 +350,7 @@ setupBuilder {
         }
         into('etc') {
             from generateConfigDefaults
+            from createVersionFile
         }
         into('etc') {
             from("ignite.java.util.logging.properties")

Reply via email to