mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
49 lines
1.5 KiB
Bash
49 lines
1.5 KiB
Bash
#!/usr/bin/env sh
|
|
set -eux
|
|
# Sleep for a good long while before exiting.
|
|
# This is to allow folks to exec into a failed workspace and poke around to
|
|
# troubleshoot.
|
|
waitonexit() {
|
|
echo "=== Agent script exited with non-zero code. Sleeping 24h to preserve logs..."
|
|
sleep 86400
|
|
}
|
|
trap waitonexit EXIT
|
|
BINARY_DIR="${BINARY_DIR:-$(mktemp -d -t coder.XXXXXX)}"
|
|
BINARY_NAME=coder
|
|
BINARY_URL=${ACCESS_URL}bin/coder-linux-${ARCH}
|
|
cd "$BINARY_DIR"
|
|
# Attempt to download the coder agent.
|
|
# This could fail for a number of reasons, many of which are likely transient.
|
|
# So just keep trying!
|
|
while :; do
|
|
# Try a number of different download tools, as we don not know what we
|
|
# will have available.
|
|
status=""
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fsSL --compressed "${BINARY_URL}" -o "${BINARY_NAME}" && break
|
|
status=$?
|
|
elif command -v wget >/dev/null 2>&1; then
|
|
wget -q "${BINARY_URL}" -O "${BINARY_NAME}" && break
|
|
status=$?
|
|
elif command -v busybox >/dev/null 2>&1; then
|
|
busybox wget -q "${BINARY_URL}" -O "${BINARY_NAME}" && break
|
|
status=$?
|
|
else
|
|
echo "error: no download tool found, please install curl, wget or busybox wget"
|
|
exit 127
|
|
fi
|
|
echo "error: failed to download coder agent"
|
|
echo " command returned: ${status}"
|
|
echo "Trying again in 30 seconds..."
|
|
sleep 30
|
|
done
|
|
|
|
if ! chmod +x $BINARY_NAME; then
|
|
echo "Failed to make $BINARY_NAME executable"
|
|
exit 1
|
|
fi
|
|
|
|
export CODER_AGENT_AUTH="${AUTH_TYPE}"
|
|
export CODER_AGENT_URL="${ACCESS_URL}"
|
|
exec ./$BINARY_NAME agent
|