CI-Scripts/deb/service-build.sh

80 lines
2.9 KiB
Bash
Raw Normal View History

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}
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
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}