rusefi-ci/start.sh

86 lines
2.4 KiB
Bash

#!/bin/bash
if [[ "$@" == "bash" ]]; then
exec $@
fi
ulimit -n 1024
export XDG_RUNTIME_DIR=$HOME/.docker/run
export DOCKER_HOST=unix:///home/docker/.docker/run/docker.sock
rm -rf $XDG_RUNTIME_DIR
mkdir -p $XDG_RUNTIME_DIR
PATH=/usr/bin:/sbin:/usr/sbin:$PATH dockerd-rootless.sh >/opt/docker.log 2>/opt/docker.log &
cd /opt/actions-runner
if [[ -z $RUNNER_NAME ]]; then
echo "RUNNER_NAME environment variable is not set, using '${HOSTNAME}'."
export RUNNER_NAME=${HOSTNAME}
fi
if [[ -z $RUNNER_WORK_DIRECTORY ]]; then
echo "RUNNER_WORK_DIRECTORY environment variable is not set, using '_work'."
export RUNNER_WORK_DIRECTORY="_work"
fi
if [[ -z $RUNNER_TOKEN && -z $GITHUB_ACCESS_TOKEN ]]; then
echo "Error : You need to set RUNNER_TOKEN (or GITHUB_ACCESS_TOKEN) environment variable."
exit 1
fi
if [[ -z $RUNNER_REPOSITORY_URL && -z $RUNNER_ORGANIZATION_URL ]]; then
echo "Error : You need to set the RUNNER_REPOSITORY_URL (or RUNNER_ORGANIZATION_URL) environment variable."
exit 1
fi
if [[ -z $RUNNER_REPLACE_EXISTING ]]; then
export RUNNER_REPLACE_EXISTING="true"
fi
CONFIG_OPTS=""
if [ "$(echo $RUNNER_REPLACE_EXISTING | tr '[:upper:]' '[:lower:]')" == "true" ]; then
CONFIG_OPTS="--replace"
fi
if [[ -n $RUNNER_LABELS ]]; then
CONFIG_OPTS="${CONFIG_OPTS} --labels ${RUNNER_LABELS}"
fi
if [[ -f ".runner" ]]; then
echo "Runner already configured. Skipping config."
else
if [[ ! -z $RUNNER_ORGANIZATION_URL ]]; then
SCOPE="orgs"
RUNNER_URL="${RUNNER_ORGANIZATION_URL}"
else
SCOPE="repos"
RUNNER_URL="${RUNNER_REPOSITORY_URL}"
fi
if [[ -n $GITHUB_ACCESS_TOKEN ]]; then
echo "Exchanging the GitHub Access Token with a Runner Token (scope: ${SCOPE})..."
_PROTO="$(echo "${RUNNER_URL}" | grep :// | sed -e's,^\(.*://\).*,\1,g')"
_URL="$(echo "${RUNNER_URL/${_PROTO}/}")"
_PATH="$(echo "${_URL}" | grep / | cut -d/ -f2-)"
RUNNER_TOKEN="$(curl -XPOST -fsSL \
-H "Authorization: token ${GITHUB_ACCESS_TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/${SCOPE}/${_PATH}/actions/runners/registration-token" \
| jq -r '.token')"
fi
./config.sh \
--url $RUNNER_URL \
--token $RUNNER_TOKEN \
--name $RUNNER_NAME \
--work $RUNNER_WORK_DIRECTORY \
$CONFIG_OPTS \
--unattended
fi
exec "$@"