CI-Scripts/deb/service-build.sh

71 lines
2.5 KiB
Bash
Raw Normal View History

2021-06-02 19:29:04 +02:00
#!/bin/bash
# EXAMPLES
usage() {
echo "usage: " \
"NAME=app " \
"DESCRIPTION=Testapp " \
"EXEPATH=testapp" \
"EXEARGUMENTS=-v" \
"sh service-build.sh"
exit 1
}
echo "DEB Builder service-file: https://github.com/linksmart/ci-scripts/blob/master/deb/service-build.sh"
if [[ -z "$DESCRIPTION" ]]; then
usage
fi
if [[ -z "$NAME" ]]; then
usage
fi
if [[ -z "$EXEPATH" ]]; then
usage
fi
if [[ -z "$EXEARGUMENTS" ]]; then
usage
fi
INSTLOCAL="/usr/local/bin/$NAME"
BINARY="$INSTLOCAL/$EXEPATH"
2021-06-02 20:25:43 +02:00
if[[ -z "$RUNNER" ]]; then
EXEARGUMENTS="$BINARY $EXEARGUMENTS"
else
RUNNER="$BINARY"
fi
2021-06-02 19:29:04 +02:00
echo "[Unit]" > service-$NAME
echo "Description=$DESCRIPTION" >> service-$NAME
echo "After=network-online.target" >> service-$NAME
echo "Wants=network-online.target" >> service-$NAME
echo "" >> service-$NAME
echo "[Service]" >> service-$NAME
echo "User=${NAME}bot" >> service-$NAME
echo "Group=${NAME}bot" >> service-$NAME
echo "WorkingDirectory=$INSTLOCAL" >> service-$NAME
if [[ -n "$ENVIROMENTVARS" ]]; then
for enviromentvar in $ENVIROMENTVARS
do
echo "Environment=\"${enviromentvar}\"" >> service-$NAME
done
fi
echo "PermissionsStartOnly=true" >> service-$NAME
2021-06-02 20:25:43 +02:00
echo "ExecStartPre=setcap 'cap_net_bind_service=+ep' $RUNNER" >> service-$NAME
echo "ExecStart=$RUNNER $EXEARGUMENTS" >> service-$NAME
2021-06-02 19:29:04 +02:00
echo "KillMode=control-group" >> service-$NAME
echo "TimeoutStopSec=5" >> service-$NAME
echo "Restart=on-failure" >> service-$NAME
if [[ -n "$LOGOUTPUT" ]]; then
echo "StandardOutput=$LOGOUTPUT" >> service-$NAME
else
echo "StandardOutput=null" >> service-$NAME
fi
echo "StandardError=syslog" >> service-$NAME
echo "" >> service-$NAME
echo "[Install]" >> service-$NAME
echo "WantedBy=multi-user.target" >> service-$NAME
echo "Alias=$NAME.service" >> service-$NAME