62 lines
No EOL
2.5 KiB
Bash
62 lines
No EOL
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Установим уровень логирования
|
|
log() {
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
|
|
}
|
|
|
|
ensure_https() {
|
|
local url="$1"
|
|
if [[ ! "$url" =~ ^https?:// ]]; then
|
|
log "Добавление 'https://' к адресу: $url"
|
|
url="https://$url"
|
|
fi
|
|
echo "$url"
|
|
}
|
|
|
|
run_docker_runner() {
|
|
local registration_token="$1"
|
|
local instance_url="$2"
|
|
local runner_name="$3"
|
|
local runner_labels="$4"
|
|
local container_name="zhs-code-runner"
|
|
|
|
# Остановка и удаление контейнера, если он существует
|
|
log "Остановка контейнера '$container_name' (если он существует)..."
|
|
docker stop "$container_name" || true
|
|
docker rm "$container_name" || true
|
|
|
|
# Формируем команду для запуска контейнера
|
|
local command="docker run -d --name $container_name --restart always -v /var/run/docker.sock:/var/run/docker.sock -e GITEA_RUNNER_REGISTRATION_TOKEN=$registration_token -e GITEA_INSTANCE_URL=$instance_url -e GITEA_RUNNER_NAME=$runner_name"
|
|
|
|
# Добавляем метки, если они указаны
|
|
if [ -n "$runner_labels" ]; then
|
|
command+=" -e GITEA_RUNNER_LABELS=$runner_labels"
|
|
fi
|
|
|
|
command+=" gitea/act_runner:latest"
|
|
|
|
# Выполняем команду
|
|
log "Запуск команды: $command"
|
|
eval $command
|
|
exit_code=$?
|
|
|
|
if [ $exit_code -eq 0 ]; then
|
|
log "Исполнитель успешно запущен."
|
|
else
|
|
log "Ошибка при запуске исполнителя контейнера: Код ошибки $exit_code"
|
|
fi
|
|
}
|
|
|
|
# Основной скрипт
|
|
read -p "Введите имя исполнителя: " runner_name
|
|
|
|
# Запрашиваем URL, используя значение по умолчанию
|
|
read -p "Введите URL адрес (по умолчанию https://code.zhs.one): " instance_url_input
|
|
instance_url=${instance_url_input:-"https://code.zhs.one"} # Используем URL по умолчанию, если ввод пустой
|
|
instance_url=$(ensure_https "$instance_url") # Убедимся, что URL содержит https
|
|
|
|
read -p "Введите секретный ключ: " access_token
|
|
read -p "Введите метки, разделенные запятыми (оставьте пустым, если нет меток): " runner_labels
|
|
|
|
run_docker_runner "$access_token" "$instance_url" "$runner_name" "$runner_labels" |