diff --git a/image/run.sh b/image/run.sh index 4087c82..3fc6772 100644 --- a/image/run.sh +++ b/image/run.sh @@ -27,47 +27,4 @@ log INFO "Hostname: $(hostname -f)" log INFO "IP Addresses: " awk '/32 host/ { if(uniq[ip]++ && ip != "127.0.0.1") print " - " ip } {ip=$2}' /proc/net/fib_trie - -################################################################# -# Adjust UID/GID and file permissions based on env var config -################################################################# -if [ -n "${GITEA_RUNNER_UID:-}" ]; then - effective_uid=$(id -u act) - if [ "$GITEA_RUNNER_UID" != "$effective_uid" ]; then - log INFO "Changing UID of user [act] from $effective_uid to $GITEA_RUNNER_UID..." - sudo usermod -o -u "$GITEA_RUNNER_UID" act - fi -fi -if [ -n "${GITEA_RUNNER_GID:-}" ]; then - effective_gid=$(id -g act) - if [ "$GITEA_RUNNER_GID" != "$effective_gid" ]; then - log INFO "Changing GID of user [act] from $effective_gid to $GITEA_RUNNER_GID..." - sudo groupmod -o -g "$GITEA_RUNNER_GID" act - fi -fi -sudo chown -R act:act /data - -if [[ -f /usr/bin/dockerd ]]; then - log INFO "Starting docker engine..." - sudo service docker start - while [[ ! -e /var/run/docker.sock ]]; do sleep 2; done -fi - -docker_group=$(stat -c '%G' /var/run/docker.sock) -if [[ $docker_group == "UNKNOWN" ]]; then - docker_gid=$(stat -c '%g' /var/run/docker.sock) - docker_group="docker$docker_gid" - log INFO "Creating group [$docker_group]..." - sudo addgroup --gid $docker_gid $docker_group -fi - -if ! id -nG act | grep -qw "$docker_group"; then - log INFO "Adding user [act] to group [$docker_group]..." - sudo usermod -aG $docker_group act -fi - - -################################################################# -# Launch the runner with adjusted UID/GID -################################################################# -exec sudo -u act -g act -E bash /opt/run_runner.sh +exec sudo -E bash /opt/run_fixids.sh diff --git a/image/run_fixids.sh b/image/run_fixids.sh new file mode 100644 index 0000000..a92265e --- /dev/null +++ b/image/run_fixids.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# +# SPDX-FileCopyrightText: © Vegard IT GmbH (https://vegardit.com) +# SPDX-FileContributor: Sebastian Thomschke +# SPDX-License-Identifier: Apache-2.0 +# SPDX-ArtifactOfProjectHomePage: https://github.com/vegardit/docker-gitea-act-runner +# +source /opt/bash-init.sh + +################################################################# +# Adjust UID/GID and file permissions based on env var config +################################################################# +if [ -n "${GITEA_RUNNER_UID:-}" ]; then + effective_uid=$(id -u act) + if [ "$GITEA_RUNNER_UID" != "$effective_uid" ]; then + log INFO "Changing UID of user [act] from $effective_uid to $GITEA_RUNNER_UID..." + usermod -o -u "$GITEA_RUNNER_UID" act + fi +fi + +if [ -n "${GITEA_RUNNER_GID:-}" ]; then + effective_gid=$(id -g act) + if [ "$GITEA_RUNNER_GID" != "$effective_gid" ]; then + log INFO "Changing GID of user [act] from $effective_gid to $GITEA_RUNNER_GID..." + groupmod -o -g "$GITEA_RUNNER_GID" act + fi +fi +chown -R act:act /data + +if [[ -f /usr/bin/dockerd ]]; then + log INFO "Starting docker engine..." + service docker start + while [[ ! -e /var/run/docker.sock ]]; do sleep 2; done +fi + +docker_group=$(stat -c '%G' /var/run/docker.sock) +if [[ $docker_group == "UNKNOWN" ]]; then + docker_gid=$(stat -c '%g' /var/run/docker.sock) + docker_group="docker$docker_gid" + log INFO "Creating group [$docker_group]..." + addgroup --gid $docker_gid $docker_group +fi + +if ! id -nG act | grep -qw "$docker_group"; then + log INFO "Adding user [act] to group [$docker_group]..." + usermod -aG $docker_group act +fi + + +################################################################# +# Launch the runner with adjusted UID/GID +################################################################# +exec sudo -u act -g act -E bash /opt/run_runner.sh