-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathentrypoint.sh
More file actions
81 lines (65 loc) · 2.34 KB
/
entrypoint.sh
File metadata and controls
81 lines (65 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
if [[ "$@" == "bash" ]]; then
exec $@
fi
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-)"
_GITHUB_API="https://api.github.com"
if ! [[ ${_URL} =~ "github.com" ]]; then
_HOSTNAME="$(echo "${_URL}" | grep / | cut -d / -f1)"
_GITHUB_API="https://${_HOSTNAME}/api/v3"
fi
RUNNER_TOKEN="$(curl -XPOST -fsSL \
-H "Authorization: token ${GITHUB_ACCESS_TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
"${_GITHUB_API}/${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 "$@"