#!/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"