fix: correct error `'/var/run/docker.sock': No such file or directory` when `GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST` is set

This commit is contained in:
MuXiu1997 2023-12-21 16:25:59 +08:00
parent 7e9c085afa
commit 313a4a0a56
No known key found for this signature in database
GPG Key ID: FF066B943A937BD1
2 changed files with 28 additions and 23 deletions

View File

@ -43,22 +43,24 @@ fi
################################################################# #################################################################
# ensure act user has read/write access to /var/run/docker.sock # ensure act user has read/write access to docker socket in GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST
################################################################# #################################################################
if [[ $DOCKER_MODE != "dind-rootless" ]]; then if [[ $DOCKER_MODE != "dind-rootless" ]]; then
docker_sock=/var/run/docker.sock if [[ $GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST == unix://* ]]; then
if runuser -u $act_user -- [ ! -r $docker_sock ] || runuser -u $act_user -- [ ! -w $docker_sock ]; then docker_sock=${GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST#unix://}
docker_group=$(stat -c '%G' $docker_sock) if runuser -u $act_user -- [ ! -r $docker_sock ] || runuser -u $act_user -- [ ! -w $docker_sock ]; then
if [[ $docker_group == "UNKNOWN" ]]; then docker_group=$(stat -c '%G' $docker_sock)
docker_gid=$(stat -c '%g' $docker_sock) if [[ $docker_group == "UNKNOWN" ]]; then
docker_group="docker$docker_gid" docker_gid=$(stat -c '%g' $docker_sock)
log INFO "Creating group [$docker_group]..." docker_group="docker$docker_gid"
addgroup --gid $docker_gid $docker_group log INFO "Creating group [$docker_group]..."
fi addgroup --gid $docker_gid $docker_group
fi
if ! id -nG $act_user | grep -qw "$docker_group"; then if ! id -nG $act_user | grep -qw "$docker_group"; then
log INFO "Adding user [$act_user] to docker group [$(getent group $docker_group)]..." log INFO "Adding user [$act_user] to docker group [$(getent group $docker_group)]..."
usermod -aG $docker_group $act_user usermod -aG $docker_group $act_user
fi
fi fi
fi fi
fi fi

View File

@ -104,19 +104,22 @@ fi
################################################################# #################################################################
# check if act user has read/write access to /var/run/docker.sock # check if act user has read/write access to docker socket in GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST
################################################################# #################################################################
if [[ $DOCKER_MODE != "dind-rootless" ]]; then if [[ $DOCKER_MODE != "dind-rootless" ]]; then
if [[ ! -w /var/run/docker.sock || ! -r /var/run/docker.sock ]]; then if [[ $GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST == unix://* ]]; then
docker_group=$(stat -c '%G' /var/run/docker.sock) docker_sock=${GITEA_RUNNER_JOB_CONTAINER_DOCKER_HOST#unix://}
if [[ $docker_group == "UNKNOWN" ]]; then if [[ ! -w $docker_sock || ! -r $docker_sock ]]; then
docker_gid=$(stat -c '%g' /var/run/docker.sock) docker_group=$(stat -c '%G' $docker_sock)
docker_group="docker$docker_gid" if [[ $docker_group == "UNKNOWN" ]]; then
fix_permissions=true docker_gid=$(stat -c '%g' $docker_sock)
fi docker_group="docker$docker_gid"
fix_permissions=true
fi
if ! id -nG act | grep -qw "$docker_group"; then if ! id -nG act | grep -qw "$docker_group"; then
fix_permissions=true fix_permissions=true
fi
fi fi
fi fi
fi fi