#!/bin/bash # EXAMPLES usage() { echo "usage: " \ "NAME=app " \ "DESCRIPTION=Testapp " \ "EXEPATH=testapp " \ "[USERNAMEGROUP=appuser " \ "EXEARGUMENTS=-v " \ "RUNNER=/bin/dotnet " \ "ENVIROMENTVARS=test HOME " \ "LOGOUTPUT=syslog] " \ "sh service-build.sh" exit 1 } echo "DEB Builder service-file: https://git.blubbfish.net/vs_utils/CI-Scripts/src/branch/master/deb/service-build.sh" if [[ -z "${DESCRIPTION}" ]]; then usage fi if [[ -z "${NAME}" ]]; then usage fi if [ -z "${USERNAMEGROUP}" ]; then USERNAMEGROUP="${NAME}bot" fi if [[ -z "${EXEPATH}" ]]; then usage fi if [[ -z "${EXEARGUMENTS}" ]]; then EXEARGUMENTS=" " fi INSTLOCAL="/usr/local/bin/${NAME}" BINARY="$INSTLOCAL/${EXEPATH}" if [[ -z "${RUNNER}" ]]; then RUNNER="${BINARY}" else EXEARGUMENTS="${BINARY} ${EXEARGUMENTS}" fi 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} do echo "Environment=\"${enviromentvar}\"" >> service-${NAME} done fi 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} echo "Restart=on-failure" >> service-${NAME} if [[ -n "${LOGOUTPUT}" ]]; then echo "StandardOutput=${LOGOUTPUT}" >> service-${NAME} else echo "StandardOutput=null" >> service-${NAME} fi echo "StandardError=journal" >> service-${NAME} echo "" >> service-${NAME} echo "[Install]" >> service-${NAME} echo "WantedBy=multi-user.target" >> service-${NAME} echo "Alias=${NAME}.service" >> service-${NAME}