Добавление лаунчера для запуска исполнителя
This commit is contained in:
parent
248d4f8398
commit
a03e6eda0d
1 changed files with 63 additions and 0 deletions
63
launcher.py
Normal file
63
launcher.py
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
import os
|
||||||
|
import logging
|
||||||
|
|
||||||
|
# Настройка логирования
|
||||||
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_https(url):
|
||||||
|
"""Проверяет, содержит ли URL схему, и добавляет https:// по умолчанию."""
|
||||||
|
if not (url.startswith("http://") or url.startswith("https://")):
|
||||||
|
logging.info(f"Добавление 'https://' к адресу: {url}")
|
||||||
|
url = "https://" + url
|
||||||
|
return url
|
||||||
|
|
||||||
|
|
||||||
|
def run_docker_runner(registration_token, instance_url, runner_name, runner_labels):
|
||||||
|
container_name = "gitea-runner"
|
||||||
|
|
||||||
|
# Остановка и удаление контейнера, если он существует
|
||||||
|
logging.info(f"Остановка контейнера '{container_name}' (если он существует)...")
|
||||||
|
os.system(f"docker stop {container_name} || true")
|
||||||
|
os.system(f"docker rm {container_name} || true")
|
||||||
|
|
||||||
|
# Формируем команду для запуска контейнера
|
||||||
|
command = [
|
||||||
|
"docker", "run", "-d",
|
||||||
|
"--name", container_name,
|
||||||
|
"--restart", "always",
|
||||||
|
"-v", "/var/run/docker.sock:/var/run/docker.sock",
|
||||||
|
"-e", f"GITEA_RUNNER_REGISTRATION_TOKEN={registration_token}",
|
||||||
|
"-e", f"GITEA_INSTANCE_URL={instance_url}",
|
||||||
|
"-e", f"GITEA_RUNNER_NAME={runner_name}",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Добавляем метки, если они указаны
|
||||||
|
if runner_labels:
|
||||||
|
command.extend(["-e", f"GITEA_RUNNER_LABELS={runner_labels}"])
|
||||||
|
|
||||||
|
command.append("gitea/act_runner:latest")
|
||||||
|
|
||||||
|
# Преобразуем команду в строку и выполняем
|
||||||
|
cmd_str = ' '.join(command)
|
||||||
|
logging.info(f"Запуск команды: {cmd_str}")
|
||||||
|
|
||||||
|
exit_code = os.system(cmd_str)
|
||||||
|
if exit_code == 0:
|
||||||
|
logging.info("Исполнитель успешно запущен.")
|
||||||
|
else:
|
||||||
|
logging.error(f"Ошибка при запуске исполнителя контейнера: Код ошибки {exit_code}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
runner_name = input("Введите имя исполнителя: ")
|
||||||
|
|
||||||
|
# Запрашиваем URL, используя значение по умолчанию
|
||||||
|
instance_url_input = input("Введите URL адрес (по умолчанию https://codes.zhs.one): ")
|
||||||
|
instance_url = instance_url_input.strip() or "https://codes.zhs.one" # Используем URL по умолчанию, если ввод пустой
|
||||||
|
instance_url = ensure_https(instance_url) # Убедимся, что URL содержит https
|
||||||
|
|
||||||
|
access_token = input("Введите секретный ключ: ")
|
||||||
|
runner_labels = input("Введите метки, разделенные запятыми (оставьте пустым, если нет меток): ")
|
||||||
|
|
||||||
|
run_docker_runner(access_token, instance_url, runner_name, runner_labels)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue