diff --git a/.gitignore b/.gitignore index a73255afd1615af09b43eaad0a3b47f9bc3c9092..808c842adf0cc7235674150537404c8b0fd102c4 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 6a7362e264eda0ab9f70cf694d9018bf47ef9fd1..da90e6e89e1db7d9c15750224905b1a19a2347f6 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 f20a493014601fd4f72e9e8ef5481efcfa84c7fe..51a00dd191ce64923f955fe6d8796c2c57c87a98 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 7048ced418a21cfb7379c212b20022027b0df2d9..a856ff01e781f95b834d8ff827f90a28838bdf96 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 e340aab1876a2301cbd747d057798e4db2c1a143..36d4472c46e90eb7344150ec537398b5d9d355b0 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 0569678ad3e9c17eb02a86b63202586c5ccd9f1e..193991c3f1e1bd029c375d901913c0a1f93e38ae 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 9df57f19dfb2b2c1f9ade54b9c187c622ece97b8..bdbf072dd2c153fdc9a88ab3456ababd90c6713f 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 565276c16a619aacbecc54f16a41ed3eee53b09e..f7475b827f32e513cd5e7b82088abb90106e68ba 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 0000000000000000000000000000000000000000..b3211f544af556522a153837f6e3eeea942321b7 --- /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 e340aab1876a2301cbd747d057798e4db2c1a143..36d4472c46e90eb7344150ec537398b5d9d355b0 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 cd457011730baea8fc4d315c33e8b06d5f99ab93..33c1c7c7c42b8cc4206e27beff12d9e1765a0f9e 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 4793ef1c0f61b5e2e6d8934ba87ccf675f01342e..97d531f2cf89751f0cda7065603f3b9563f71bdf 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 c997d61df31cc838587acbc54f22fbf799cb114d..0f41f48409050391e1582df34365f1a407e7f2cb 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 dbee71c2497d8bb439e35a3ee6342cec4356d292..442ef0bf37067be607e7e86265a3cb71a60fbaa8 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 e340aab1876a2301cbd747d057798e4db2c1a143..36d4472c46e90eb7344150ec537398b5d9d355b0 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