docker-jenkins-integration-.../06_workspace_mount.sh

44 lines
1.3 KiB
Bash

#!/usr/bin/with-contenv bash
echo "Manage the user's workspace"
workspace_dir='/workspace'
workspace_logdir='/var/log/workspace-lib'
workspace_libdir='/opt/workspace-lib'
workspace_fuse_jar="$workspace_libdir/fuse-workspace.jar"
_decode_base64_url() {
local len=$((${#1} % 4))
local result="$1"
if [ $len -eq 2 ]; then result="$1"'=='
elif [ $len -eq 3 ]; then result="$1"'='
fi
echo "$result" | tr '_-' '/+' | base64 -d
}
# $1 => JWT to decode
# $2 => either 1 for header or 2 for body (default is 2)
decode_jwt() { _decode_base64_url $(echo -n $1 | cut -d "." -f ${2:-2}) | jq .; }
[[ ! -d "$workspace_dir" ]] || [[ -z `ls -A "$workspace_dir"` ]] || mv $workspace_dir ${workspace_dir}.old
mkdir -p $workspace_dir
chown ${USER}:${USER} $workspace_dir
chown -R ${USER}:${USER} $workspace_logdir
_retval=
/bin/rm /home/${USER}/workspace
_retval=$?
if [ $_retval -ne 0 ]; then
echo "The user has a directory named 'workspace' inside their home directory"
echo "Not starting the workspace mount"
exit
else
ln -s /home/${USER}/workspace $workspace_dir
fi
echo "Mount the workspace"
su - "$USER" -c "/usr/bin/java -cp .:${workspace_dir}:${workspace_logdir}/ -Dlogback.configurationFile=${workspace_logdir}/logback.xml -jar $workspace_fuse_jar $SHINYPROXY_OIDC_ACCESS_TOKEN $workspace_dir" >/dev/null 2>&1 &
exit ?$