diff --git a/laucher.sh b/laucher.sh new file mode 100644 index 0000000..7849776 --- /dev/null +++ b/laucher.sh @@ -0,0 +1,62 @@ +#!/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" \ No newline at end of file