improve background service handling

This commit is contained in:
sebthom 2023-05-30 13:13:42 +02:00
parent d848df35a6
commit cf925b88e4
2 changed files with 45 additions and 3 deletions

View File

@ -34,8 +34,9 @@ fi
# start docker deamon (if installed = DinD) # start docker deamon (if installed = DinD)
################################################################# #################################################################
if [[ -f /usr/bin/dockerd ]]; then if [[ -f /usr/bin/dockerd ]]; then
export DOCKER_MODE=dind
log INFO "Starting Docker engine..." log INFO "Starting Docker engine..."
sudo rm -rf /var/run/docker.pid /run/docker/containerd/containerd.pid sudo rm -f /var/run/docker.pid /run/docker/containerd/containerd.pid
sudo /usr/local/bin/dind-hack true sudo /usr/local/bin/dind-hack true
sudo service docker start sudo service docker start
while ! docker stats --no-stream &>/dev/null; do while ! docker stats --no-stream &>/dev/null; do
@ -43,9 +44,12 @@ if [[ -f /usr/bin/dockerd ]]; then
sleep 2 sleep 2
tail -n 1 /var/log/docker.log tail -n 1 /var/log/docker.log
done done
export DOCKER_PID=$(</var/run/docker.pid)
echo "===========================================================" echo "==========================================================="
docker info docker info
echo "===========================================================" echo "==========================================================="
else
export DOCKER_MODE=dood
fi fi
@ -74,5 +78,5 @@ fi
if [[ $fixids == "true" ]]; then if [[ $fixids == "true" ]]; then
exec sudo -E bash /opt/run_fixids.sh exec sudo -E bash /opt/run_fixids.sh
else else
bash /opt/run_runner.sh exec bash /opt/run_runner.sh
fi fi

View File

@ -117,4 +117,42 @@ unset $(env | grep "^GITEA_" | cut -d= -f1)
################################################# #################################################
# run the act runner # run the act runner
################################################# #################################################
exec act_runner daemon --config "$effective_config_file" case $DOCKER_MODE in
dind)
act_runner daemon --config "$effective_config_file" &
act_runner_pid=$!
function shutdown_act() {
log INFO "Stopping act_runner..."
kill -SIGTERM $act_runner_pid || true
}
function shutdown_docker() {
log INFO "Stopping docker engine..."
sudo service docker stop
while [[ -e /proc/$DOCKER_PID ]]; do
log INFO "Waiting for docker engine to shutdown..."
sleep 2
done
}
trap "shutdown_act; shutdown_docker" INT TERM HUP QUIT
# monitoring docker engine/act_runner process status
while [[ -e /proc/$DOCKER_PID && -e /proc/$act_runner_pid ]]; do
sleep 1
done
if [[ -e /proc/$DOCKER_PID ]]; then
shutdown_docker
else
log ERROR "Docker engine unexpectly ended."
shutdown_act
fi
exit 1 # there is no scenario where the background processes should exit on their own
;;
*)
exec act_runner daemon --config "$effective_config_file"
;;
esac