improve background service handling
This commit is contained in:
parent
d848df35a6
commit
cf925b88e4
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -117,4 +117,42 @@ unset $(env | grep "^GITEA_" | cut -d= -f1)
|
||||||
#################################################
|
#################################################
|
||||||
# run the act runner
|
# run the act runner
|
||||||
#################################################
|
#################################################
|
||||||
|
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"
|
exec act_runner daemon --config "$effective_config_file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue