2021-06-02 19:29:04 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# EXAMPLES
|
|
|
|
usage() {
|
|
|
|
echo "usage: " \
|
|
|
|
"NAME=app " \
|
|
|
|
"DESCRIPTION=Testapp " \
|
2022-01-19 22:00:22 +01:00
|
|
|
"EXEPATH=testapp " \
|
|
|
|
"[USERNAMEGROUP=appuser " \
|
|
|
|
"EXEARGUMENTS=-v " \
|
|
|
|
"RUNNER=/bin/dotnet " \
|
|
|
|
"ENVIROMENTVARS=test HOME " \
|
|
|
|
"LOGOUTPUT=syslog] " \
|
2021-06-02 19:29:04 +02:00
|
|
|
"sh service-build.sh"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "DEB Builder service-file: https://git.blubbfish.net/vs_utils/CI-Scripts/src/branch/master/deb/service-build.sh"
|
2021-06-02 19:29:04 +02:00
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
if [[ -z "${DESCRIPTION}" ]]; then
|
2021-06-02 19:29:04 +02:00
|
|
|
usage
|
|
|
|
fi
|
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
if [[ -z "${NAME}" ]]; then
|
2021-06-02 19:29:04 +02:00
|
|
|
usage
|
|
|
|
fi
|
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
if [ -z "${USERNAMEGROUP}" ]; then
|
|
|
|
USERNAMEGROUP="${NAME}bot"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z "${EXEPATH}" ]]; then
|
2021-06-02 19:29:04 +02:00
|
|
|
usage
|
|
|
|
fi
|
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
if [[ -z "${EXEARGUMENTS}" ]]; then
|
|
|
|
EXEARGUMENTS=" "
|
2021-06-02 19:29:04 +02:00
|
|
|
fi
|
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
INSTLOCAL="/usr/local/bin/${NAME}"
|
|
|
|
BINARY="$INSTLOCAL/${EXEPATH}"
|
2021-06-02 19:29:04 +02:00
|
|
|
|
2022-01-19 22:00:22 +01:00
|
|
|
if [[ -z "${RUNNER}" ]]; then
|
|
|
|
RUNNER="${BINARY}"
|
2021-06-02 20:36:21 +02:00
|
|
|
else
|
2022-01-19 22:00:22 +01:00
|
|
|
EXEARGUMENTS="${BINARY} ${EXEARGUMENTS}"
|
2021-06-02 20:25:43 +02:00
|
|
|
fi
|
|
|
|
|
2022-01-19 22:00:22 +01: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=${USERNAMEGROUP}" >> service-${NAME}
|
|
|
|
echo "Group=${USERNAMEGROUP}" >> service-${NAME}
|
|
|
|
echo "WorkingDirectory=${INSTLOCAL}" >> service-${NAME}
|
|
|
|
if [[ -n "${ENVIROMENTVARS}" ]]; then
|
|
|
|
for enviromentvar in ${ENVIROMENTVARS}
|
2021-06-02 19:29:04 +02:00
|
|
|
do
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "Environment=\"${enviromentvar}\"" >> service-${NAME}
|
2021-06-02 19:29:04 +02:00
|
|
|
done
|
|
|
|
fi
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "PermissionsStartOnly=true" >> service-${NAME}
|
|
|
|
echo "ExecStartPre=setcap 'cap_net_bind_service=+ep' ${RUNNER}" >> service-${NAME}
|
|
|
|
echo "ExecStart=${RUNNER} ${EXEARGUMENTS}" >> service-${NAME}
|
|
|
|
echo "KillMode=control-group" >> service-${NAME}
|
2022-01-20 18:05:56 +01:00
|
|
|
echo "KillSignal=SIGINT" >> service-${NAME}
|
|
|
|
echo "TimeoutStopSec=30" >> service-${NAME}
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "Restart=on-failure" >> service-${NAME}
|
|
|
|
if [[ -n "${LOGOUTPUT}" ]]; then
|
|
|
|
echo "StandardOutput=${LOGOUTPUT}" >> service-${NAME}
|
2021-06-02 19:29:04 +02:00
|
|
|
else
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "StandardOutput=null" >> service-${NAME}
|
2021-06-02 19:29:04 +02:00
|
|
|
fi
|
2022-01-19 23:48:40 +01:00
|
|
|
echo "StandardError=journal" >> service-${NAME}
|
2022-01-19 22:00:22 +01:00
|
|
|
echo "" >> service-${NAME}
|
|
|
|
echo "[Install]" >> service-${NAME}
|
|
|
|
echo "WantedBy=multi-user.target" >> service-${NAME}
|
|
|
|
echo "Alias=${NAME}.service" >> service-${NAME}
|