Skip to content

Commit

Permalink
fix(ZNTA-2532) fix liquibase configuration (#853)
Browse files Browse the repository at this point in the history
* Test: ensure build fails if liquibase does
* Configure liquibase and appserver to use basedir/target/documents
* Download mysql/slf4j if required
  • Loading branch information
seanf committed Jun 12, 2018
1 parent 925b277 commit c287e55
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 8 deletions.
4 changes: 3 additions & 1 deletion server/etc/scripts/configure-app-server.js
Expand Up @@ -197,7 +197,9 @@ function parseArgs(args) {
case '--integration-test':
stderr('Enabling test-only configuration')
opts.consoleLogLevel = 'INFO'
opts.fileDir = './target/documents'
// user.dir is Maven's basedir (eg server/functional-test)
// see also LIQUIBASE_JVM_OPTS in functional-test/pom.xml
opts.fileDir = java.lang.System.getProperty('user.dir') + '/target/documents'
opts.zanataHomeDir = '${jboss.server.data.dir}/zanata'
pushAll(opts.configCallbacks, configCallbacksForIntegrationTest())
break
Expand Down
1 change: 1 addition & 0 deletions server/etc/scripts/runJbossCli.groovy
Expand Up @@ -77,6 +77,7 @@ println "Executing $scriptName"

// 'as String[]' coerces any GStrings and Files to Strings
def processBuilder = new ProcessBuilder(args as String[])
processBuilder.directory(project.basedir)
processBuilder.environment().put('JBOSS_HOME', appServerHome)
def resultCode = processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT).redirectError(ProcessBuilder.Redirect.INHERIT).start().waitFor()
if (resultCode) {
Expand Down
1 change: 1 addition & 0 deletions server/etc/scripts/types.d.ts
Expand Up @@ -7,6 +7,7 @@ declare namespace java {
namespace System {
const err: PrintStream
const out: PrintStream
const getProperty: (name: string) => string
}
}
}
Expand Down
5 changes: 5 additions & 0 deletions server/functional-test/pom.xml
Expand Up @@ -735,9 +735,14 @@
<executable>/bin/sh</executable>
<!-- NB this assumes zanata-test-war has been built locally and recently -->
<arguments>
<argument>-e</argument>
<argument>${server.dir}/zanata-test-war/target/zanata-test-war-${project.version}/WEB-INF/liquibase</argument>
<argument>update</argument>
</arguments>
<environmentVariables>
<!-- see also opts.fileDir in configure-app-server.js -->
<LIQUIBASE_JVM_OPTS>-Dzanata.file.directory=${basedir}/target/documents</LIQUIBASE_JVM_OPTS>
</environmentVariables>
<skip>${liquibase.exec.skip}</skip>
<workingDirectory>${basedir}/target/test-classes</workingDirectory>
</configuration>
Expand Down
47 changes: 40 additions & 7 deletions server/zanata-war/src/main/webapp/WEB-INF/liquibase
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh -e
### USAGE
### liquibase [liquibase options] <command>
###
Expand All @@ -13,18 +13,51 @@
### This is a convenience script to run liquibase with suitable
### Zanata settings
### see http://liquibase.org/manual/command_line

# If you need mysql/slf4j jars: yum install mysql-connector-java slf4j
###
### It requires an exploded zanata war.
###
### This script will download mysql-connector-java and slf4j if required, but
### on Fedora/RHEL you can avoid this: yum install mysql-connector-java slf4j

SCRIPT_PATH=`dirname ${BASH_SOURCE[0]}`
war=$SCRIPT_PATH/..

mysql_jar=/usr/share/java/mysql-connector-java.jar
if [[ ! -r ${mysql_jar} ]]; then
mysql_jar=$(mktemp --tmpdir)
trap "rm -f ${mysql_jar}" EXIT
g=mysql
a=mysql-connector-java
v=5.1.46
curl "https://repo1.maven.org/maven2/$g/$a/$v/$a-$v.jar" -o ${mysql_jar}
fi

slf4j_api_jar=/usr/share/java/slf4j/api.jar
if [[ ! -r ${slf4j_api_jar} ]]; then
slf4j_api_jar=$(mktemp --tmpdir)
trap "rm -f ${slf4j_api_jar}" EXIT
g=org/slf4j
a=slf4j-api
v=1.7.25
curl "https://repo1.maven.org/maven2/$g/$a/$v/$a-$v.jar" -o ${slf4j_api_jar}
fi

slf4j_simple_jar=/usr/share/java/slf4j/simple.jar
if [[ ! -r ${slf4j_simple_jar} ]]; then
slf4j_simple_jar=$(mktemp --tmpdir)
trap "rm -f ${slf4j_simple_jar}" EXIT
g=org/slf4j
a=slf4j-simple
v=1.7.25
curl "https://repo1.maven.org/maven2/$g/$a/$v/$a-$v.jar" -o ${slf4j_simple_jar}
fi

classpath=\
$(echo \
$war/WEB-INF/classes/ \
/usr/share/java/mysql-connector-java.jar \
/usr/share/java/slf4j/simple.jar \
/usr/share/java/slf4j/api.jar \
${mysql_jar} \
${slf4j_simple_jar} \
${slf4j_api_jar} \
$war/WEB-INF/lib/*.jar \
| sed 's/ /:/g')

Expand All @@ -37,7 +70,7 @@ else
defs=--defaultsFile=$HOME/.config/liquibase.properties
fi

java $LIQUIBASE_JVM_OPTS \
exec java $LIQUIBASE_JVM_OPTS \
-jar $war/WEB-INF/lib/liquibase-core*.jar \
--classpath $classpath \
--changeLogFile db/db.changelog.xml \
Expand Down

0 comments on commit c287e55

Please sign in to comment.