From 509dd6111a6ba93df5819d9d05f184c2901c6435 Mon Sep 17 00:00:00 2001 From: Eike Cochu <eike@cochu.com> Date: Sat, 4 Jun 2016 15:38:58 +0200 Subject: [PATCH] added build version support --- .gitignore | 3 +- build.sh | 7 +++++ vipra-backend/pom.xml | 19 ++++++++++++ .../de/vipra/rest/resource/InfoResource.java | 1 + .../src/main/resources/buildNumber.properties | 2 ++ vipra-cmd/pom.xml | 27 +++++++++++++++++ .../java/de/vipra/cmd/CommandLineOptions.java | 7 ++++- .../src/main/java/de/vipra/cmd/Main.java | 4 +++ .../de/vipra/cmd/option/VersionCommand.java | 29 +++++++++++++++++++ .../src/main/resources/buildNumber.properties | 2 ++ vipra-ui/app/html/about.html | 6 +++- vipra-util/pom.xml | 27 +++++++++++++++++ .../main/java/de/vipra/util/BuildInfo.java | 6 ++++ .../main/java/de/vipra/util/Constants.java | 1 + .../src/main/resources/buildNumber.properties | 2 ++ 15 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 vipra-cmd/src/main/java/de/vipra/cmd/option/VersionCommand.java diff --git a/.gitignore b/.gitignore index a73255af..808c842a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ *.sublime-workspace .vagrant/ .release/ -/*.tar.gz \ No newline at end of file +/*.tar.gz +/build.properties \ No newline at end of file diff --git a/build.sh b/build.sh index 6a7362e2..da90e6e8 100755 --- a/build.sh +++ b/build.sh @@ -34,6 +34,8 @@ DEPLOY_FRONTEND_TO_VAGRANT=0 ####################################################################################### DIR="$(dirname "$(readlink -f "$0")")" +VERSION=$(git describe) +VERSION_LONG=$(git describe --long) WAR_FILE="vipra.war" VIPRA_BACKEND="$DIR/vipra-backend" @@ -110,6 +112,11 @@ if [ $BUILD_VIPRA_UI -eq 1 ]; then GULP=$(command -v gulp 2>/dev/null) || { echo >&2 "gulp not found"; exit 1; } fi +# insert build number + +echo "git.tag=$VERSION" > $DIR/build.properties +echo "git.longtag=$VERSION_LONG" >> $DIR/build.properties + # build dtm if [ $BUILD_DTM -eq 1 ]; then diff --git a/vipra-backend/pom.xml b/vipra-backend/pom.xml index f20a4930..51a00dd1 100644 --- a/vipra-backend/pom.xml +++ b/vipra-backend/pom.xml @@ -156,6 +156,25 @@ </execution> </executions> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>properties-maven-plugin</artifactId> + <version>1.0.0</version> + <executions> + <execution> + <phase>initialize</phase> + <goals> + <goal>read-project-properties</goal> + </goals> + <configuration> + <files> + <file>../build.properties</file> + </files> + </configuration> + </execution> + </executions> + </plugin> </plugins> <resources> diff --git a/vipra-backend/src/main/java/de/vipra/rest/resource/InfoResource.java b/vipra-backend/src/main/java/de/vipra/rest/resource/InfoResource.java index 7048ced4..a856ff01 100644 --- a/vipra-backend/src/main/java/de/vipra/rest/resource/InfoResource.java +++ b/vipra-backend/src/main/java/de/vipra/rest/resource/InfoResource.java @@ -53,6 +53,7 @@ public class InfoResource { info.put("host.os.version", System.getProperty("os.version")); // app info + info.put("app.gittag", buildInfo.getGitTag()); info.put("app.gitsha1", buildInfo.getGitSHA1()); info.put("app.version", buildInfo.getVersion()); info.put("app.builddate", buildInfo.getBuildDate()); diff --git a/vipra-backend/src/main/resources/buildNumber.properties b/vipra-backend/src/main/resources/buildNumber.properties index e340aab1..36d4472c 100644 --- a/vipra-backend/src/main/resources/buildNumber.properties +++ b/vipra-backend/src/main/resources/buildNumber.properties @@ -1,3 +1,5 @@ +git-tag=${git.tag} +git-longtag=${git.longtag} git-sha-1=${buildNumber} version=${project.version} builddate=${buildDate} \ No newline at end of file diff --git a/vipra-cmd/pom.xml b/vipra-cmd/pom.xml index 0569678a..193991c3 100644 --- a/vipra-cmd/pom.xml +++ b/vipra-cmd/pom.xml @@ -81,6 +81,14 @@ <build> <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skipTests>true</skipTests> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> @@ -131,6 +139,25 @@ </execution> </executions> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>properties-maven-plugin</artifactId> + <version>1.0.0</version> + <executions> + <execution> + <phase>initialize</phase> + <goals> + <goal>read-project-properties</goal> + </goals> + <configuration> + <files> + <file>../build.properties</file> + </files> + </configuration> + </execution> + </executions> + </plugin> </plugins> <resources> diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java b/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java index 9df57f19..bdbf072d 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java @@ -19,6 +19,7 @@ public class CommandLineOptions { public static final Option SILENT = Option.builder("s").longOpt("silent").desc("suppress all output").build(); public static final Option TEST = Option.builder("t").longOpt("test").desc("test database connections").build(); public static final Option ALL = Option.builder("A").longOpt("all").desc("select all models (-S all)").build(); + public static final Option VERSION = Option.builder("v").longOpt("version").desc("print the version number").build(); public static final Option INDEX = Option.builder("i").longOpt("index").desc("create index for models").hasArgs().argName("[models...]") .optionalArg(true).build(); @@ -47,7 +48,7 @@ public class CommandLineOptions { public CommandLineOptions() { final Option[] optionsArray = { CLEAR, DEBUG, HELP, INDEX, LIST, REREAD, SILENT, TEST, ALL, CREATE, DELETE, EDIT, PRINT, IMPORT, MODEL, - SELECT, MESSAGE, BACKUP, RESTORE }; + SELECT, MESSAGE, BACKUP, RESTORE, VERSION }; options = new Options(); for (final Option option : optionsArray) options.addOption(option); @@ -244,4 +245,8 @@ public class CommandLineOptions { return getOptionValue(RESTORE); } + public boolean isVersion() { + return hasOption(VERSION); + } + } diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/Main.java b/vipra-cmd/src/main/java/de/vipra/cmd/Main.java index 565276c1..f7475b82 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/Main.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/Main.java @@ -21,6 +21,7 @@ import de.vipra.cmd.option.ModelingCommand; import de.vipra.cmd.option.PrintModelCommand; import de.vipra.cmd.option.RestoreCommand; import de.vipra.cmd.option.TestCommand; +import de.vipra.cmd.option.VersionCommand; import de.vipra.util.ConsoleUtils; import de.vipra.util.LockFile; import de.vipra.util.ex.LockFileException; @@ -79,6 +80,9 @@ public class Main { final List<Command> commands = new ArrayList<>(); + if (opts.isVersion()) + commands.add(new VersionCommand()); + if (opts.isTest()) commands.add(new TestCommand()); diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/VersionCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/VersionCommand.java new file mode 100644 index 00000000..b3211f54 --- /dev/null +++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/VersionCommand.java @@ -0,0 +1,29 @@ +package de.vipra.cmd.option; + +import java.io.InputStream; +import java.util.Properties; + +import de.vipra.util.ConsoleUtils; +import de.vipra.util.Constants; +import de.vipra.util.FileUtils; + +public class VersionCommand implements Command { + + @Override + public void run() throws Exception { + InputStream in = FileUtils.getResource(Constants.BUILDNUMBER_FILE); + Properties props = new Properties(); + props.load(in); + + ConsoleUtils.info("VIPRA CMD tool"); + ConsoleUtils.info("Version: " + props.getProperty("git-tag")); + ConsoleUtils.info("Commit : " + props.getProperty("git-sha-1")); + ConsoleUtils.info("From : " + props.getProperty("builddate")); + } + + @Override + public boolean requiresLock() { + return false; + } + +} diff --git a/vipra-cmd/src/main/resources/buildNumber.properties b/vipra-cmd/src/main/resources/buildNumber.properties index e340aab1..36d4472c 100644 --- a/vipra-cmd/src/main/resources/buildNumber.properties +++ b/vipra-cmd/src/main/resources/buildNumber.properties @@ -1,3 +1,5 @@ +git-tag=${git.tag} +git-longtag=${git.longtag} git-sha-1=${buildNumber} version=${project.version} builddate=${buildDate} \ No newline at end of file diff --git a/vipra-ui/app/html/about.html b/vipra-ui/app/html/about.html index cd457011..33c1c7c7 100644 --- a/vipra-ui/app/html/about.html +++ b/vipra-ui/app/html/about.html @@ -20,7 +20,11 @@ <table class="table table-bordered table-fixed"> <tbody> <tr> - <th style="width:33%">Git Version</th> + <th style="width:33%">Git Tag</th> + <td ng-bind="::info.app.gittag"></td> + </tr> + <tr> + <th>Git SHA1</th> <td ng-bind="::info.app.gitsha1"></td> </tr> <tr> diff --git a/vipra-util/pom.xml b/vipra-util/pom.xml index 4793ef1c..97d531f2 100644 --- a/vipra-util/pom.xml +++ b/vipra-util/pom.xml @@ -76,6 +76,14 @@ <build> <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skipTests>true</skipTests> + </configuration> + </plugin> + <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> @@ -89,6 +97,25 @@ </execution> </executions> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>properties-maven-plugin</artifactId> + <version>1.0.0</version> + <executions> + <execution> + <phase>initialize</phase> + <goals> + <goal>read-project-properties</goal> + </goals> + <configuration> + <files> + <file>../build.properties</file> + </files> + </configuration> + </execution> + </executions> + </plugin> </plugins> <resources> diff --git a/vipra-util/src/main/java/de/vipra/util/BuildInfo.java b/vipra-util/src/main/java/de/vipra/util/BuildInfo.java index c997d61d..0f41f484 100644 --- a/vipra-util/src/main/java/de/vipra/util/BuildInfo.java +++ b/vipra-util/src/main/java/de/vipra/util/BuildInfo.java @@ -30,17 +30,23 @@ public class BuildInfo { return properties; } + private final String gitTag; private final String gitSHA1; private final String version; private final String buildDate; public BuildInfo() { final Properties props = getProperties(); + gitTag = props.getProperty("git-tag"); gitSHA1 = props.getProperty("git-sha-1"); version = props.getProperty("version"); buildDate = props.getProperty("builddate"); } + public String getGitTag() { + return gitTag; + } + public String getGitSHA1() { return gitSHA1; } diff --git a/vipra-util/src/main/java/de/vipra/util/Constants.java b/vipra-util/src/main/java/de/vipra/util/Constants.java index dbee71c2..442ef0bf 100644 --- a/vipra-util/src/main/java/de/vipra/util/Constants.java +++ b/vipra-util/src/main/java/de/vipra/util/Constants.java @@ -30,6 +30,7 @@ public class Constants { */ public static final String CONFIG_FILE = "config.json"; + public static final String BUILDNUMBER_FILE = "buildNumber.properties"; /* * DATABASE diff --git a/vipra-util/src/main/resources/buildNumber.properties b/vipra-util/src/main/resources/buildNumber.properties index e340aab1..36d4472c 100644 --- a/vipra-util/src/main/resources/buildNumber.properties +++ b/vipra-util/src/main/resources/buildNumber.properties @@ -1,3 +1,5 @@ +git-tag=${git.tag} +git-longtag=${git.longtag} git-sha-1=${buildNumber} version=${project.version} builddate=${buildDate} \ No newline at end of file -- GitLab