Skip to content

Commit

Permalink
Merge branch 'dev' into feature/304_forward_case_and_step_results
Browse files Browse the repository at this point in the history
  • Loading branch information
Tobias Schneck committed Mar 13, 2018
2 parents 1702b6b + a8eaffd commit 8fbdbc2
Show file tree
Hide file tree
Showing 54 changed files with 7,141 additions and 263 deletions.
3 changes: 3 additions & 0 deletions 318-todo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* check sakuli-go-wrapper not deployed? => fix sakuli-ui feature branche
* change sakuli-ui project to new plugin
* cleanup not used tags, files and dockerimages
6,557 changes: 6,557 additions & 0 deletions consoleText.txt

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docker/.build/delete_dockerhub_tags.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ IMAGES=(
"consol/sakuli-centos-xfce-java"
"consol/sakuli-centos-icewm"
"consol/sakuli-centos-icewm-java"
"consol/sakuli-ui"
"consol/omd-labs-ubuntu-sakuli"
"consol/omd-labs-centos-sakuli"
"consol/omd-labs-debian-sakuli"
Expand Down
1 change: 1 addition & 0 deletions docker/.build/tag_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ IMAGES=(
"consol/sakuli-centos-xfce-java"
"consol/sakuli-centos-icewm"
"consol/sakuli-centos-icewm-java"
"consol/sakuli-ui"
)

#Loop
Expand Down
1 change: 1 addition & 0 deletions docker/.build/trigger_dockerhub.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ echo "trigger dockerhub builds for Tag $GIT_TAG:"

URLS=(
"https://registry.hub.docker.com/u/consol/sakuli-ubuntu-xfce/trigger/76b9b474-97e7-472a-a807-fa1829ef4b93/"
"https://registry.hub.docker.com/u/consol/sakuli-ui/trigger/afb8b1c4-66a9-43dd-8787-e30f1007e513/"
"https://registry.hub.docker.com/u/consol/omd-labs-ubuntu-sakuli/trigger/6cdc0a55-5926-4fd7-81ce-d97e97aee63c/"
"https://registry.hub.docker.com/u/consol/sakuli-ubuntu-xfce-java/trigger/62342ff8-d1cb-4111-b298-e43ffdf3d4f7/"
"https://registry.hub.docker.com/u/consol/sakuli-ubuntu-icewm/trigger/453572ea-3272-46b6-a8fb-9ef95c4e655d/"
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.centos.icewm
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ RUN $INST_SCRIPTS/sakuli.sh

### configure startup
ADD ./sakuli-client/src/common/scripts $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.centos.icewm.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
### configure startup
ADD ./sakuli-client/src/common/scripts/ $STARTUPDIR
ADD ./sakuli-client/src_java/common/scripts/ $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME $SAKULI_TEST_SUITE
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.centos.xfce
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ RUN $INST_SCRIPTS/sakuli.sh

### configure startup
ADD ./sakuli-client/src/common/scripts $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.centos.xfce.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
### configure startup
ADD ./sakuli-client/src/common/scripts/ $STARTUPDIR
ADD ./sakuli-client/src_java/common/scripts/ $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME $SAKULI_TEST_SUITE
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.ubuntu.icewm
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ RUN $INST_SCRIPTS/sakuli.sh

### configure startup
ADD ./sakuli-client/src/common/scripts $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.ubuntu.icewm.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
### configure startup
ADD ./sakuli-client/src/common/scripts/ $STARTUPDIR
ADD ./sakuli-client/src_java/common/scripts/ $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME $SAKULI_TEST_SUITE
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.ubuntu.xfce
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ RUN $INST_SCRIPTS/sakuli.sh

### configure startup
ADD ./sakuli-client/src/common/scripts $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.sakuli.ubuntu.xfce.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
### configure startup
ADD ./sakuli-client/src/common/scripts/ $STARTUPDIR
ADD ./sakuli-client/src_java/common/scripts/ $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME $SAKULI_TEST_SUITE
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR
# use headless user for startup
USER 1984

Expand Down
48 changes: 48 additions & 0 deletions docker/Dockerfile.sakuli.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# This Dockerfile is used to build a sakuli image based on Ubuntu

FROM openjdk:8-jre

MAINTAINER Tobias Schneck "tobias.schneck@consol.de"
ENV REFRESHED_AT 2018-03-02

#### currently not supported
#LABEL io.k8s.description="Sakuli UI container for managing Sakuli tests" \
# io.k8s.display-name="Sakuli UI container" \
# io.openshift.expose-services="8080:http" \
# io.openshift.tags="sakuli, java, sakuli-ui" \
# io.openshift.non-scalable=true

### INST config
ENV SAKULI_UI_INST_DIR=/app \
TERM=xterm \
STARTUPDIR=/dockerstartup \
INST_SCRIPTS=/root/install

### Environment config (overwritable)
ENV HTTP_PORT=8080 \
SAKULI_UI_USER=admin \
SAKULI_UI_PW=sakuli \
SAKULI_UI_DOCKER_USER_ID=1000 \
SAKULI_ROOT_DIR=/opt/sakuli-ui-root

ADD ./sakuli-ui/src/common/install/ $INST_SCRIPTS/
RUN find $INST_SCRIPTS -name '*.sh' -exec chmod a+x {} +

### Intsall basics for jvm & docker
RUN $INST_SCRIPTS/add_jvm_options.sh
RUN $INST_SCRIPTS/docker.sh
RUN $INST_SCRIPTS/docker-compose.sh

### Install Sakuli UI
ARG SAKULI_VERSION=1.2.0-SNAPSHOT-308-sakuli-ui
RUN $INST_SCRIPTS/sakuli_ui.sh

#### configure startup
ADD ./sakuli-ui/src/common/scripts/ $STARTUPDIR
RUN $INST_SCRIPTS/set_user_permission.sh $STARTUPDIR $HOME

## Connection port for Web Application:
EXPOSE $HTTP_PORT
USER $SAKULI_UI_DOCKER_USER_ID

ENTRYPOINT ["/dockerstartup/startup.sh"]
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@
</com.izforge.izpack.panels.target.TargetPanel>
<com.izforge.izpack.panels.packs.PacksPanel id="PacksPanel_3">
<pack index="0" selected="true"/>
<pack index="1" selected="true"/>
<pack index="1" selected="false"/>
<pack index="2" selected="true"/>
<pack index="3" selected="true"/>
<pack index="4" selected="true"/>
<pack index="5" selected="false"/>
<pack index="5" selected="true"/>
<pack index="6" selected="false"/>
</com.izforge.izpack.panels.packs.PacksPanel>
<com.izforge.izpack.panels.summary.SummaryPanel id="SummaryPanel_4"/>
<com.izforge.izpack.panels.install.InstallPanel id="InstallPanel_5"/>
Expand Down
4 changes: 4 additions & 0 deletions docker/sakuli-client/src/common/install/sakuli.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
### every exit != 0 fails the script
set -e
set -u

### Install Sakuli in the $SAKULI_VERSION and create the example testsuite
### under $SAKULI_TEST_SUITE
Expand Down Expand Up @@ -28,5 +29,8 @@ echo "add to $HOME/.bashrc: use correct UMASK '${SAKULI_UMASK:-0000}'"
# files can be deleted afterwards
echo 'umask ${SAKULI_UMASK:-0000} && echo umask set to $(umask)' >> $HOME/.bashrc

echo "set correct permissions"
$INST_SCRIPTS/set_user_permission.sh $SAKULI_ROOT

echo -e "\n\nInstalled Sakuli:"
$SAKULI_HOME/bin/sakuli -version
5 changes: 4 additions & 1 deletion docker/sakuli-client/src_java/common/install/maven.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,7 @@ wget http://www-eu.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-
| tar -xzC $MAVEN_HOME --strip-components=1

echo '$MAVEN_HOME/bin/mvn $MAVEN_OPTS "$@"' > /usr/bin/mvn
chmod +x /usr/bin/mvn
chmod +x /usr/bin/mvn

echo "set correct permissions"
$INST_SCRIPTS/set_user_permission.sh $MAVEN_HOME
5 changes: 4 additions & 1 deletion docker/sakuli-client/src_java/common/install/sakuli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ mvn test clean -Duser.home=$HOME -Dtest=TriggerDownload -DfailIfNoTests=false -D

echo "add -Dsakuli.version=$SAKULI_VERSION to Maven startup"
echo "export MAVEN_OPTS=-Dsakuli.version=$SAKULI_VERSION" >> $HOME/.bashrc
echo 'echo MAVEN_OPTS=$MAVEN_OPTS' >> $HOME/.bashrc
echo 'echo MAVEN_OPTS=$MAVEN_OPTS' >> $HOME/.bashrc

echo "set correct permissions"
$INST_SCRIPTS/set_user_permission.sh $HOME $SAKULI_TEST_SUITE
9 changes: 9 additions & 0 deletions docker/sakuli-ui/src/common/install/add_jvm_options.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
### every exit != 0 fails the script
set -e
set -u

echo "Add JVM options"

# add source jvm_options.sh script to set correct java JVM options on startup
echo 'source $STARTUPDIR/jvm_options.sh' >> $HOME/.bashrc
12 changes: 12 additions & 0 deletions docker/sakuli-ui/src/common/install/docker-compose.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -e

version=1.19.0
echo "install latest docker-compose $version"
curl -L https://github.com/docker/compose/releases/download/$version/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

echo "------------ docker-compose version -----------"
docker-compose version

echo ".... done!"
11 changes: 11 additions & 0 deletions docker/sakuli-ui/src/common/install/docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
### every exit != 0 fails the script
set -e
set -u

echo "Install Docker CLI from Docker Inc. repositories."
curl -sSL https://get.docker.com/ | sh \
&& useradd $SAKULI_UI_DOCKER_USER_ID -m -s /bin/bash \
&& usermod -aG docker $SAKULI_UI_DOCKER_USER_ID

apt-get clean -y
22 changes: 22 additions & 0 deletions docker/sakuli-ui/src/common/install/sakuli_ui.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
### every exit != 0 fails the script
set -e
set -u

LABS_URL=https://labs.consol.de/sakuli/install/sakuli-v${SAKULI_VERSION}.zip
dest=${SAKULI_UI_INST_DIR}
echo "Download and Install Sakuli UI: $dest"

tmpdir=/tmp/sakuli-ui
mkdir -p $tmpdir && cd $tmpdir

mkdir -p "$dest"

echo "DOWNLOAD URL: $LABS_URL"
wget $LABS_URL
unzip -j *.zip '*/sakuli-ui-web.jar' -d "$dest/"

echo "set correct permissions"
$INST_SCRIPTS/set_user_permission.sh $dest

rm -rf $tmpdir
14 changes: 14 additions & 0 deletions docker/sakuli-ui/src/common/install/set_user_permission.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
### every exit != 0 fails the script
set -e
if [[ -z $DEBUG ]]; then
verbose="-v"
fi

for var in "$@"
do
echo "fix permissions for: $var"
find "$var"/ -name '*.sh' -exec chmod $verbose a+x {} +
find "$var"/ -name '*.desktop' -exec chmod $verbose a+x {} +
chgrp -R 0 "$var" && chmod -R $verbose a+rw "$var" && find "$var" -type d -exec chmod $verbose a+x {} +
done
61 changes: 61 additions & 0 deletions docker/sakuli-ui/src/common/scripts/jvm_options.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# Return reasonable JVM options to run inside a Docker container where memory and
# CPU can be limited with cgroups.
# https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html
#
# The script can be used in a custom CMD or ENTRYPOINT
#
# source jvm_options

# Options:
# JVM_HEAP_RATIO=0.5 Ratio of heap size to available memory

# If Xmx is not set the JVM will use by default 1/4th (in most cases) of the host memory
# This can cause the Kernel to kill the container if the JVM memory grows over the cgroups limit
# because the JVM is not aware of that limit and doesn't invoke the GC
# Setting it by default to 0.5 times the memory limited by cgroups, customizable with JVM_HEAP_RATIO

echo "---------------------- Resolve _JAVA_OPTIONS -----------------------------------"
if [ -z "$JVM_HEAP_XMX" ] ; then
CGROUPS_MEM=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)
echo CGROUPS_MEM: $CGROUPS_MEM bytes, $(($CGROUPS_MEM/1024/1024)) MB

MEMINFO_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo)*1024))
echo MEMINFO_MEM: $MEMINFO_MEM bytes, $(($MEMINFO_MEM/1024/1024)) MB

MEM_USABLE=$(($MEMINFO_MEM>$CGROUPS_MEM?$CGROUPS_MEM:$MEMINFO_MEM))
# prevent float issue if $CGROUPS_MEM > bash max value, see https://github.com/ConSol/sakuli/issues/280
MEM_USABLE=$(($CGROUPS_MEM>$MEMINFO_MEM?$MEMINFO_MEM:$MEMINFO_MEM))
echo ""
echo MEM_USABLE: $MEM_USABLE bytes, $(($MEM_USABLE/1024/1024)) MB

JVM_HEAP_RATIO=${JVM_HEAP_RATIO:-0.5}
echo "JVM_HEAP_RATIO $JVM_HEAP_RATIO of MEM $(($MEM_USABLE/1024/1024)) MB"
JVM_HEAP_XMX=$(awk '{printf("%d",$1*$2/1024^2)}' <<<" ${MEM_USABLE} ${JVM_HEAP_RATIO} ")

JVM_HEAP_XMX_MAX=${JVM_HEAP_XMX_MAX:-300}
JVM_HEAP_XMX_MIN=${JVM_HEAP_XMX_MIN:-96}
if [ $JVM_HEAP_XMX -gt $JVM_HEAP_XMX_MAX ]; then
echo "calculated JVM_HEAP_XMX $JVM_HEAP_XMX MB is too high, choose JVM_HEAP_XMX_MAX: $JVM_HEAP_XMX_MAX MB"
JVM_HEAP_XMX=$JVM_HEAP_XMX_MAX
fi
if [ $JVM_HEAP_XMX -lt $JVM_HEAP_XMX_MIN ]; then
echo "calculated JVM_HEAP_XMX $JVM_HEAP_XMX MB is too small, try to use at the JVM_HEAP_XMX_MIN ($JVM_HEAP_XMX_MIN MB)"
if [ $MEM_USABLE -lt $JVM_HEAP_XMX_MIN ]; then
echo "Container need at least $JVM_HEAP_XMX_MIN MB memory for the JVM! Stop container starup!"
exit -1
fi
JVM_HEAP_XMX=$JVM_HEAP_XMX_MIN
fi

fi
echo ""
echo "JVM_HEAP_XMX: $JVM_HEAP_XMX MB"

# set correct java startup
export _JAVA_OPTIONS="-Duser.home=$HOME -Xmx${JVM_HEAP_XMX}m"
# add docker jvm flags, can maybe removed with JDK9, see https://github.com/ConSol/sakuli/issues/291
export _JAVA_OPTIONS="$_JAVA_OPTIONS -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"

echo "set _JAVA_OPTIONS: $_JAVA_OPTIONS"
echo "--------------------------------------------------------------------------------"
24 changes: 24 additions & 0 deletions docker/sakuli-ui/src/common/scripts/sakuli_startup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash
###
# Startup Script for the Sakuli headless testing container
###

# have to be added to hold all env vars correctly
# also will source $STARTUPDIR/generate_container_user
source $HOME/.bashrc
set -e
set -u

echo -e "\n\n------------------ START SAKULI UI CONTAINER ---------------------------"

args="$@"
if [[ "$1" == -* ]]; then
args="${SAKULI_ROOT_DIR} $@"
fi

javaARG="-Djava.security.egd=file:/dev/./urandom -Dsakuli.ui.root.directory=$args -jar ${SAKULI_UI_INST_DIR-/app}/sakuli-ui-web.jar"

echo "Executing: 'java $javaARG'"
java -Dsecurity.default-username=${SAKULI_UI_USER} -Dsecurity.default-password=${SAKULI_UI_PW} $javaARG

echo -e "\n\n------------------ FINISHED SAKULI UI CONTAINER ------------------------"
26 changes: 26 additions & 0 deletions docker/sakuli-ui/src/common/scripts/startup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash
# have to be added to hold all env vars correctly

main() {
export SAKULI_UI_DOCKER_USER_ID=$(id -u)
# If arg 1 is not for sakuli ui jar, execute as it is.
if [[ "$1" == /* ]] || [[ "$1" == -* ]]; then
$STARTUPDIR/sakuli_startup.sh "$@"
else
# execute any other command
echo -e "\n\n------------------ EXECUTE COMMAND ------------------"
echo "Executing command: '$@'"
exec "$@"
fi
}

if [ $# -gt 0 ]; then
# pass all parameters
main "$@"
else
# no parameters
# - run the Sakuli UI at $SAKULI_UI_ROOT, if set
# or
# - run at /opt/sakuli-ui(fallback)
main "${SAKULI_UI_ROOT-/opt/sakuli-ui-root}"
fi

0 comments on commit 8fbdbc2

Please sign in to comment.