diff --git a/gitea_runner/env.sh b/gitea_runner/env.sh new file mode 100644 index 0000000..98874e8 --- /dev/null +++ b/gitea_runner/env.sh @@ -0,0 +1,11 @@ +SERVICE_NAME="gitea_runner" +USER_SYSTEMD="$HOME/.config/systemd/user" +INSTALL_DIR="$HOME/.local/share/$SERVICE_NAME" +ADDITIONAL_LABLES=( + "linux" + "arm64" + "cloud" +) +CONTAINER_HOST="unix:////run/user/1000/podman/podman.sock" +GITEA_URL="https://gitea.example.com" +GITEA_TOKEN="your_gitea_token" \ No newline at end of file diff --git a/gitea_runner/gitea_runner.service.template b/gitea_runner/gitea_runner.service.template new file mode 100644 index 0000000..f446da9 --- /dev/null +++ b/gitea_runner/gitea_runner.service.template @@ -0,0 +1,14 @@ +[Unit] +Description=Gitea Actions runner +Documentation=https://gitea.com/gitea/act_runner + +[Service] +ExecStart= +ExecReload=/bin/kill -s HUP $MAINPID +WorkingDirectory= +TimeoutSec=0 +RestartSec=10 +Restart=always + +[Install] +WantedBy=default.target \ No newline at end of file diff --git a/gitea_runner/install.sh b/gitea_runner/install.sh new file mode 100755 index 0000000..7238bcb --- /dev/null +++ b/gitea_runner/install.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# This script is used to install gitea act_runner + +. ./env.sh + +set -e + +ARCH=$(uname -m) +echo "Architecture $ARCH" +DOWNLOAD_VARIANT="" +ACT_RUNNER_VERSION="0.2.11" +RUNNER="$INSTALL_DIR/act_runner" + +if [[ "$ARCH" == "amd64" ]]; then + DOWNLOAD_VARIANT="amd64" +elif [[ "$ARCH" == "aarch64" ]]; then + DOWNLOAD_VARIANT="arm64" +else + echo "Unsupported architecture: $ARCH" + exit 1 +fi + +DOWNLOAD_URL="https://dl.gitea.com/act_runner/$ACT_RUNNER_VERSION/act_runner-$ACT_RUNNER_VERSION-linux-$DOWNLOAD_VARIANT" + +mkdir -p "$INSTALL_DIR" + +wget -q "$DOWNLOAD_URL" -O "$RUNNER" || { + echo "Failed to download act_runner from $DOWNLOAD_URL" + exit 1 +} +chmod +x "$INSTALL_DIR/act_runner" +echo "act_runner downloaded and made executable." + +$RUNNER generate-config > "$INSTALL_DIR/config.yaml" + +echo "act_runner config generated." +echo "act_runner config file created at $INSTALL_DIR/config.yaml" + +echo "manually add additional labels to the config file - $INSTALL_DIR/config.yaml" +echo "add the following labels to the config file - $INSTALL_DIR/config.yaml" +for label in "${ADDITIONAL_LABLES[@]}"; do + echo " - $label" +done + +echo "manually add docker socket to the config file - $INSTALL_DIR/config.yaml" +echo "add the following docker socket to the config file - $INSTALL_DIR/config.yaml" +echo " - $CONTAINER_HOST" + +# Create systemd service file +SERVICE_FILE="${SERVICE_NAME}.service" +cp "$SERVICE_FILE.template" "$SERVICE_FILE" + +ESC_RUNNER=$(printf '%s' "$RUNNER" | sed 's:/:\\/:g') +ESC_INSTALL_DIR=$(printf '%s' "$INSTALL_DIR" | sed 's:/:\\/:g') + +sed -i "s|^ExecStart=.*$|ExecStart=${ESC_RUNNER} daemon --config ${ESC_INSTALL_DIR}/config.yaml|" "$SERVICE_FILE" +sed -i "s|^WorkingDirectory=.*$|WorkingDirectory=${ESC_INSTALL_DIR}|" "$SERVICE_FILE" + +mv "$SERVICE_FILE" "$USER_SYSTEMD/$SERVICE_FILE" +systemctl --user daemon-reload +systemctl --user enable "${SERVICE_NAME}.service" + +echo "Gitea act_runner installed and systemd service created." +echo "Before starting the service, please edit the config file - $INSTALL_DIR/config.yaml" +echo "and register the runner with your Gitea instance." \ No newline at end of file diff --git a/gitea_runner/uninstall.sh b/gitea_runner/uninstall.sh new file mode 100755 index 0000000..7ac2d8d --- /dev/null +++ b/gitea_runner/uninstall.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# This script is used to uninstall Gitea act_runner + +. ./env.sh + +if systemctl --user list-units --full --all | grep -q "${SERVICE_NAME}.service"; then + systemctl --user stop "${SERVICE_NAME}.service" +fi + +systemctl --user disable --now "${SERVICE_NAME}.service" +rm "$USER_SYSTEMD/${SERVICE_NAME}.service" +systemctl --user daemon-reload + +echo "Uninstall complete. Manually remove data directory - $INSTALL_DIR if needed." \ No newline at end of file