Add jq installation check and systemd service setup for act_runner
This commit is contained in:
91
install.sh
91
install.sh
@@ -9,6 +9,49 @@ check_version() {
|
||||
echo $act_runner_version
|
||||
}
|
||||
|
||||
# Ensure jq is installed (attempt auto-install on common distros)
|
||||
ensure_jq() {
|
||||
if check_command jq; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "jq not found. Attempting to install..."
|
||||
|
||||
SUDO=""
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
if check_command sudo; then
|
||||
SUDO="sudo"
|
||||
else
|
||||
echo "Error: jq is required and sudo is not available. Please install jq manually and re-run."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_command apt-get; then
|
||||
$SUDO apt-get update -y && $SUDO apt-get install -y jq
|
||||
elif check_command dnf; then
|
||||
$SUDO dnf install -y jq
|
||||
elif check_command yum; then
|
||||
$SUDO yum install -y jq
|
||||
elif check_command apk; then
|
||||
$SUDO apk add --no-cache jq
|
||||
elif check_command pacman; then
|
||||
$SUDO pacman -Sy --noconfirm jq
|
||||
elif check_command zypper; then
|
||||
$SUDO zypper install -y jq
|
||||
else
|
||||
echo "Error: Unsupported package manager. Please install 'jq' manually and re-run."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! check_command jq; then
|
||||
echo "Error: Failed to install 'jq'. Please install it manually and re-run."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_jq
|
||||
|
||||
if check_command act_runner; then
|
||||
current_version=$(check_version)
|
||||
echo "Current act_runner version: $current_version"
|
||||
@@ -37,6 +80,7 @@ filename=$(basename $url_binary)
|
||||
if [ -z "$current_version" ] || [ "$current_version" != "$latest_version" ]; then
|
||||
echo "Updating act_runner to version: $latest_version"
|
||||
wget $url_binary
|
||||
wget $url_checksum
|
||||
sha256sum -c $checksum_filename
|
||||
rm $checksum_filename
|
||||
unxz $filename
|
||||
@@ -47,3 +91,50 @@ if [ -z "$current_version" ] || [ "$current_version" != "$latest_version" ]; the
|
||||
else
|
||||
echo "act_runner is up to date."
|
||||
fi
|
||||
|
||||
# Generate default configuration after install and before setting up systemd
|
||||
mkdir -p /etc/act_runner /var/lib/act_runner
|
||||
if [ ! -f /etc/act_runner/config.yaml ]; then
|
||||
echo "Generating default configuration at /etc/act_runner/config.yaml"
|
||||
/usr/local/bin/act_runner generate-config >/etc/act_runner/config.yaml
|
||||
else
|
||||
echo "Existing configuration detected at /etc/act_runner/config.yaml, skipping generation"
|
||||
fi
|
||||
|
||||
# Install systemd service for act_runner
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
if ! id -u act_runner >/dev/null 2>&1; then
|
||||
useradd --system --home-dir /var/lib/act_runner --shell /usr/sbin/nologin act_runner
|
||||
fi
|
||||
|
||||
mkdir -p /var/lib/act_runner /etc/act_runner
|
||||
chown -R act_runner:act_runner /var/lib/act_runner /etc/act_runner
|
||||
|
||||
service_path="/etc/systemd/system/act-runner.service"
|
||||
cat >"$service_path" <<'EOF'
|
||||
[Unit]
|
||||
Description=Gitea Actions runner
|
||||
Documentation=https://gitea.com/gitea/act_runner
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
WorkingDirectory=/var/lib/act_runner
|
||||
TimeoutSec=0
|
||||
RestartSec=10
|
||||
Restart=always
|
||||
User=act_runner
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable act-runner
|
||||
if [ -f /etc/act_runner/config.yaml ]; then
|
||||
systemctl start act-runner
|
||||
else
|
||||
echo "Systemd service installed. Create /etc/act_runner/config.yaml then run: systemctl start act-runner"
|
||||
fi
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user