Commit e922d689 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Created installation scripts, removed hardcoded configuration

parent ee235930
Pipeline #100 passed with stage
in 29 seconds
/TASMAN-webapp/nb-configuration.xml
/TASMAN-webapp/nbactions.xml
/TASMAN-webapp/faces-config.NavData
/TASMAN-core/target/
/TASMAN-webapp/target/
/TASMAN-core/nb-configuration.xml
/TASMAN-embedded/target/
/TASMAN-core/nbproject/
/TASMAN-bom/target/
config.properties
test.properties
/**/pom.xml.versionsBackup
install.sh
build:
script: "cd TASMAN-core; mvn clean install -P Test -Dmysql_host=localhost -Dmysql_port=3306 -Dmysql_user=tasman_tester -D mysql_password=tasman_tester -Dpostgres_host=localhost -Dpostgres_port=5432 -Dpostgres_user=tasman_tester -Dpostgres_password=tasman_tester -Dpostgres_database=tasman_test"
......@@ -5,41 +5,24 @@ See also the [CHANGELOG](CHANGELOG.md).
## Build
### Build the API
cd TASMAN-core
mvn install
#### WARNING: test
Test suite for the TASMAN-core assumes some hardcoded values. If they
fail simply put an _@Ignore_ in front on the test class.
### Build the Web application
cd TASMAN-webapp
Edit configuration properties file (`src/main/resources/webapp.properties`):
ucd_service_url=<URL for the UCD REST web service>
config_file_path=<location where the web app will store the generated XML configuration>
IA2 UCD service is at http://ia2-vo.oats.inaf.it:8080/ucd/
If the UCD web service is unreachable the web app will work anyway, but without the UCD search functionality.
Then build the web application:
* GlassFish war package (default):
mvn install
* Tomcat war package:
mvn -P Tomcat install
1. Create a `config.properties` file (copy it from `config.properties.example`). In this file it is specified:
* **ucd_service_url**: the URL for the UCD REST web service.
* IA2 UCD service is at http://ia2-vo.oats.inaf.it/ucd/
* if the UCD web service is unreachable the web app will work anyway, but without the UCD search functionality.
* **config_file_path**: the location where the web app will store the generated XML configuration (the location needs to be writable by the application server in which TASMAN will run).
2. `chmod +x build.sh`
3. `./build.sh <command>`, commands are:
* **core** build only TASMAN core
* **test**: run tests; you need to create a `test.properties` file containing a configuration for connecting to a MySQL and a Postgres test database
* **glassfish**: build GlassFish war package
* **tomcat**: build Tomcat war package (using config.properties file)
* **embedded**: build embedded package (to be run _locally!_)
* **installer**: build install script (produce self-extracting install.sh script)
## Supported application servers
The web app was tested with:
The web app has been tested with:
* GlassFish 4.1
* Tomcat 8.0.33
......@@ -51,9 +34,8 @@ Build requires _Ucidy_ and _Unity_ that are not available at central
maven repo. You should have them installed in a local maven repo.
To do this: download the jar files listed in the following
credits section and runn a couple of `mvn install:install-file`
commands based upond the dependencies description in the _TASMAN-webapp_
_pom.xml_ file.
credits section and run a couple of `mvn install:install-file`
commands based upond the dependencies description in the _TASMAN-webapp_ _pom.xml_ file.
## Credits
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.inaf.ia2.tsm</groupId>
<artifactId>tasman-bom</artifactId>
<version>1.3.2</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<netbeans.hint.license>inaf-license-netbeans</netbeans.hint.license>
<maven.test.skip>true</maven.test.skip>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
<show>public</show>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.inaf.ia2.tap</groupId>
<artifactId>tasman-core</artifactId>
<parent>
<groupId>it.inaf.ia2.tsm</groupId>
<artifactId>tasman-bom</artifactId>
<version>1.3.2</version>
</parent>
<artifactId>tasman-core</artifactId>
<packaging>jar</packaging>
<name>tasman-core</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<netbeans.hint.license>inaf-license-netbeans</netbeans.hint.license>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
......@@ -31,36 +30,22 @@
<version>9.3-1104-jdbc41</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>test</id>
<properties>
<maven.test.skip>false</maven.test.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
<show>public</show>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
</plugins>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
</profile>
</profiles>
</project>
\ No newline at end of file
......@@ -28,6 +28,8 @@ import it.inaf.ia2.tsm.datalayer.Credentials;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
......@@ -37,6 +39,7 @@ import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import org.junit.After;
import org.junit.AfterClass;
......@@ -44,7 +47,6 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -66,21 +68,29 @@ public class TestAll {
}
@BeforeClass
public static void setUpClass() throws SQLException {
public static void setUpClass() throws SQLException, IOException {
Properties props = new Properties();
try (InputStream in = TestAll.class.getClassLoader().getResourceAsStream("test.properties")) {
props.load(in);
}
dbWrappers = new ArrayList<>();
// MYSQL
Credentials mysqlCredentials = new Credentials(DatabaseType.MYSQL);
mysqlCredentials.setHostname("localhost");
mysqlCredentials.setUsername("root");
mysqlCredentials.setPassword("root");
mysqlCredentials.setHostname(props.getProperty("mysql_host"));
mysqlCredentials.setPort(Integer.parseInt(props.getProperty("mysql_port")));
mysqlCredentials.setUsername(props.getProperty("mysql_user"));
mysqlCredentials.setPassword(props.getProperty("mysql_password"));
// POSTGRES
Credentials postgresCredentials = new Credentials(DatabaseType.POSTGRES);
postgresCredentials.setHostname("localhost");
postgresCredentials.setUsername("postgres");
postgresCredentials.setPassword("pippo");
postgresCredentials.setHostname(props.getProperty("postgres_host"));
postgresCredentials.setPort(Integer.parseInt(props.getProperty("postgres_port")));
postgresCredentials.setUsername(props.getProperty("postgres_user"));
postgresCredentials.setPassword(props.getProperty("postgres_password"));
postgresCredentials.setDatabase(props.getProperty("postgres_database"));
DBWrapper dbWrapper = new DBWrapper(mysqlCredentials);
dbWrapper.testConnections();
......
......@@ -2,15 +2,16 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.inaf.ia2.tap</groupId>
<parent>
<groupId>it.inaf.ia2.tsm</groupId>
<artifactId>tasman-bom</artifactId>
<version>1.3.2</version>
</parent>
<artifactId>tasman-embedded</artifactId>
<version>1.2.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<jetty.version>9.4.6.v20170531</jetty.version>
</properties>
......@@ -36,6 +37,12 @@
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
......
warFilePath=/home/sonia/git/TASMAN/TASMAN-webapp/target/tasman-webapp-1.3.2.war
warFilePath=${war_file_path}
defaultPort=8080
\ No newline at end of file
......@@ -2,17 +2,17 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.inaf.ia2.tap</groupId>
<artifactId>tasman-webapp</artifactId>
<parent>
<groupId>it.inaf.ia2.tsm</groupId>
<artifactId>tasman-bom</artifactId>
<version>1.3.2</version>
<packaging>war</packaging>
</parent>
<name>tasman-webapp</name>
<artifactId>tasman-webapp</artifactId>
<packaging>war</packaging>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<netbeans.hint.license>inaf-license-netbeans</netbeans.hint.license>
<jersey.version>2.23.2</jersey.version>
<deltaspike.version>1.7.2</deltaspike.version>
<enable.weld.config.start></enable.weld.config.start>
......@@ -128,9 +128,9 @@
<dependencies>
<dependency>
<groupId>it.inaf.ia2.tap</groupId>
<groupId>${project.groupId}</groupId>
<artifactId>tasman-core</artifactId>
<version>1.3.2</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ari.ucidy</groupId>
......@@ -155,17 +155,6 @@
<type>jar</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.deltaspike.modules</groupId>
<artifactId>deltaspike-jsf-module-impl</artifactId>
......@@ -228,6 +217,7 @@
<filtering>true</filtering>
<includes>
<include>**/version.txt</include>
<include>**/webapp.properties</include>
</includes>
</resource>
<!-- Include all other files without filtering them -->
......@@ -236,6 +226,7 @@
<filtering>false</filtering>
<excludes>
<exclude>**/version.txt</exclude>
<exclude>**/webapp.properties</exclude>
</excludes>
</resource>
</resources>
......@@ -245,8 +236,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
......
ucd_service_url=http://ia2-vo.oats.inaf.it/ucd/
config_directory=/home/sonia/.tasman
\ No newline at end of file
# URL for the UCD REST web service
ucd_service_url=${ucd_service_url}
# location where the web app will store the generated XML configuration
config_directory=${config_directory}
\ No newline at end of file
#!/bin/bash
config_file="config.properties"
test_config_file="test.properties"
if [ ! -f "$config_file" ]; then
echo "$config_file doesn't exist!"
exit 1
fi
# Append to a command a list of environment variables defined into a file
function add_properties {
command=$1
properties_file=$2
while read line
do
if [[ ! -z "$line" ]] && [[ ! "$line" =~ ^\# ]]; then
command="$command -D$line"
fi
done <<< "$(cat ../$properties_file)"
echo $command
}
function build_core {
cd TASMAN-core
mvn -q clean install
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-core built"
cd ..
}
function test_core {
cd TASMAN-core
$(add_properties "mvn clean install -P test" $test_config_file)
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
cd ..
}
function build_web_glassfish {
build_core
# build webapp
cd TASMAN-webapp
$(add_properties "mvn -q clean install" $config_file)
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-webapp built"
cd ..
}
function build_web_tomcat {
build_core
# build webapp
cd TASMAN-webapp
$(add_properties "mvn -q clean install -P ServletContainer" $config_file)
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-webapp built"
cd ..
}
function build_web_embedded {
build_core
# build webapp
cd TASMAN-webapp
$(add_properties "mvn -q clean install -P ServletContainer,Jetty" $config_file)
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-webapp built"
cd ..
# build embedded
cd TASMAN-embedded
war_file_path=`dirname ${PWD}`/TASMAN-webapp/target/tasman-webapp-*.war
war_file_path=`ls $war_file_path`
mvn clean -q install -Dwar_file_path=$war_file_path
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-embedded built"
cd ..
}
function build_installer_package {
build_core
# build webapp
cd TASMAN-webapp
mvn -q clean install -P ServletContainer,Jetty
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-webapp built"
cd ..
# build embedded
cd TASMAN-embedded
mvn -q clean install
if [ "$?" -ne 0 ]; then
echo "[ERROR] Error in ${FUNCNAME[0]}"
exit 1
fi
echo "TASMAN-embedded built"
cd ..
# copy TASMAN files
cp TASMAN-webapp/target/tasman-webapp-*.war .
cp TASMAN-embedded/target/tasman-embedded.jar .
mv tasman-webapp-*.war tasman-webapp.war
# create tar for self-extracting installer
tar cfz tasman.tar.gz tasman-webapp.war tasman-embedded.jar
rm tasman-webapp.war
rm tasman-embedded.jar
cp install_template.sh install.sh
cat tasman.tar.gz >> install.sh
rm tasman.tar.gz
echo "TASMAN install.sh built"
}
function print_usage {
echo "USAGE:"
echo " $0 command"
echo " "
echo "COMMANDS:"
echo " core build only TASMAN core"
echo " test run tests (using test.properties file)"
echo " glassfish build GlassFish war package (using config.properties file)"
echo " tomcat build Tomcat war package (using config.properties file)"
echo " embedded build embedded package (using config.properties file)"
echo " installer build install script (produces install.sh as output)"
exit 0
}
if [ "$#" -ne 1 ]; then
print_usage
fi
case "$1" in
"core")
build_core
;;
"test")
if [ ! -f "$test_config_file" ]; then
echo "$test_config_file doesn't exist!"
exit 1
fi
test_core
;;
"glassfish")
build_web_glassfish
;;
"tomcat")
build_web_tomcat
;;
"embedded")
build_web_embedded
;;
"installer")
build_installer_package
;;
*)
print_usage
;;
esac
ucd_service_url=http://ia2-vo.oats.inaf.it/ucd/
config_directory=/home/user/.tasman
\ No newline at end of file
......@@ -12,6 +12,9 @@ echo "# #"
echo "############################################"
echo ""
# Credits for the self-extracting part:
# http://www.linuxjournal.com/node/1005818
echo "Welcome on the TASMAN installer"
# Run as root check
......@@ -20,6 +23,33 @@ if [[ "$(id -u)" != "0" ]]; then
exit 1
fi
# Tasman installation dir
echo -e "Specify TASMAN installation directory [/opt/tasman]: \c"
read install_dir
if [[ -z "$install_dir" ]]; then
install_dir="/opt/tasman"
fi
# Creating installation directory
mkdir -p "$install_dir"
if [ ! $? -eq 0 ]; then
echo "Unable to create installation directory $install_dir"
exit 1
fi
# Add final slash to installation dir if it is necessary
if [[ "$install_dir" != *\/ ]]; then
install_dir="$install_dir/"
fi
# Find __ARCHIVE__ maker, read archive content and decompress it
ARCHIVE=`awk '/^__ARCHIVE__/ {print NR + 1; exit 0; }' $0`
tail -n+$ARCHIVE $0 | tar xzv -C ${install_dir}
if [ ! $? -eq 0 ]; then
echo "Unable to extract installation files"
exit 1
fi