Skip to content

Commit dc28c86

Browse files
authored
fix(runner): align entrypoint scripts, retrieve agent_id if configured via JIT (#66)
If runner was configured via JIT, the file under `/runner/.runner` which contains the `agent_id` has a different format compared to registering the runner via registration token, so the agent_id reported back to `garm` was `null`. This has been addressed now. Also check_runner did not continue until `max_retry` on non-zero exit or pipefail.
1 parent 43b1c55 commit dc28c86

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

runner/summerwind/Dockerfile

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ FROM summerwind/actions-runner:ubuntu-22.04
44

55
USER root
66

7-
COPY my-entrypoint.sh /usr/local/bin/
7+
RUN apt-get update && apt-get install -y curl && apt-get clean
88

9-
RUN chmod +x /usr/local/bin/my-entrypoint.sh
9+
COPY entrypoint.sh /usr/local/bin/
10+
11+
RUN chmod +x /usr/local/bin/entrypoint.sh
1012

1113
USER 1001
1214

13-
ENTRYPOINT ["/usr/local/bin/my-entrypoint.sh"]
15+
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

runner/summerwind/my-entrypoint.sh renamed to runner/summerwind/entrypoint.sh

+15-11
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ function getRunnerFile() {
7474
}
7575

7676
function check_runner {
77+
set +e
7778
echo "Checking runner health..."
7879
RETRIES=0
7980
MAX_RETRIES=15
@@ -84,8 +85,14 @@ function check_runner {
8485
fail "failed to start runner"
8586
fi
8687

88+
AGENT_ID=""
8789
if [ -f "$RUNNER_HOME"/.runner ]; then
88-
AGENT_ID=$(grep "agentId" "$RUNNER_HOME"/.runner | tr -d -c 0-9)
90+
91+
AGENT_ID=$(grep -io '"[aA]gent[iI]d": [0-9]*' "$RUNNER_HOME"/.runner | sed 's/.*[aA]gent[iI]d": \([0-9]*\).*/\1/')
92+
if [ "$JIT_CONFIG_ENABLED" == "true" ];then
93+
AGENT_ID=$(grep -ioE '"[aA]gent[iI]d":"?[0-9]+"?' "$RUNNER_HOME"/.runner | sed -E 's/.*[aA]gent[iI]d"?: ?"([0-9]+)".*/\1/')
94+
fi
95+
8996
echo "Calling $CALLBACK_URL with $AGENT_ID"
9097
systemInfo "$AGENT_ID"
9198
success "runner successfully installed" "$AGENT_ID"
@@ -96,20 +103,21 @@ function check_runner {
96103
echo "RETRIES: $RETRIES"
97104
sleep 10
98105
done
106+
set -e
99107
}
100108

101-
pushd "$RUNNER_HOME"
102-
103109
shopt -s dotglob
104110
cp -r "$RUNNER_ASSETS_DIR"/* "$RUNNER_HOME"/
105111
shopt -u dotglob
106112

113+
pushd "$RUNNER_HOME"
114+
107115
sendStatus "configuring runner"
108116
if [ "$JIT_CONFIG_ENABLED" == "true" ]; then
109117
sendStatus "downloading JIT credentials"
110-
getRunnerFile "credentials/runner" "/home/runner/.runner" || fail "failed to get runner file"
111-
getRunnerFile "credentials/credentials" "/home/runner/.credentials" || fail "failed to get credentials file"
112-
getRunnerFile "credentials/credentials_rsaparams" "/home/runner/.credentials_rsaparams" || fail "failed to get credentials_rsaparams file"
118+
getRunnerFile "credentials/runner" "$RUNNER_HOME/.runner" || fail "failed to get runner file"
119+
getRunnerFile "credentials/credentials" "$RUNNER_HOME/.credentials" || fail "failed to get credentials file"
120+
getRunnerFile "credentials/credentials_rsaparams" "$RUNNER_HOME/.credentials_rsaparams" || fail "failed to get credentials_rsaparams file"
113121
else
114122
if [ -n "${RUNNER_ORG}" ] && [ -n "${RUNNER_REPO}" ]; then
115123
ATTACH="${RUNNER_ORG}/${RUNNER_REPO}"
@@ -178,10 +186,6 @@ else
178186
set -e
179187
fi
180188

181-
if [ "$JIT_CONFIG_ENABLED" != "true" ]; then
182-
set +e
183-
check_runner
184-
set -e
185-
fi
189+
check_runner &
186190

187191
./run.sh "$@"

runner/upstream/entrypoint.sh

+9-8
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ function getRunnerFile() {
7474
}
7575

7676
function check_runner {
77+
set +e
7778
echo "Checking runner health..."
7879
RETRIES=0
7980
MAX_RETRIES=15
@@ -84,15 +85,14 @@ function check_runner {
8485
fail "failed to start runner"
8586
fi
8687

87-
AGENT_ID=""
88-
if [ "$JIT_CONFIG_ENABLED" == "true" ];then
89-
systemInfo "$AGENT_ID"
90-
success "runner successfully installed" "$AGENT_ID"
91-
break
92-
fi
93-
88+
AGENT_ID=""
9489
if [ -f "$RUNNER_HOME"/.runner ]; then
95-
AGENT_ID=$(grep "agentId" "$RUNNER_HOME"/.runner | tr -d -c 0-9)
90+
91+
AGENT_ID=$(grep -io '"[aA]gent[iI]d": [0-9]*' "$RUNNER_HOME"/.runner | sed 's/.*[aA]gent[iI]d": \([0-9]*\).*/\1/')
92+
if [ "$JIT_CONFIG_ENABLED" == "true" ];then
93+
AGENT_ID=$(grep -ioE '"[aA]gent[iI]d":"?[0-9]+"?' "$RUNNER_HOME"/.runner | sed -E 's/.*[aA]gent[iI]d"?: ?"([0-9]+)".*/\1/')
94+
fi
95+
9696
echo "Calling $CALLBACK_URL with $AGENT_ID"
9797
systemInfo "$AGENT_ID"
9898
success "runner successfully installed" "$AGENT_ID"
@@ -103,6 +103,7 @@ function check_runner {
103103
echo "RETRIES: $RETRIES"
104104
sleep 10
105105
done
106+
set -e
106107
}
107108

108109
shopt -s dotglob

0 commit comments

Comments
 (0)