feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile

- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
Сергей Антропов
2026-02-15 22:59:02 +03:00
parent 23e1a6037b
commit 1fbf9185a2
232 changed files with 38075 additions and 5 deletions

View File

@@ -0,0 +1,42 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}401 - Требуется авторизация - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-user-lock fa-5x text-info mb-3"></i>
<h1 class="display-1 fw-bold text-info">401</h1>
</div>
<h2 class="h3 mb-3">Требуется авторизация</h2>
<p class="text-muted mb-4">
Для доступа к этой странице необходимо войти в систему.
</p>
<div class="alert alert-info mb-4">
<i class="fas fa-info-circle me-2"></i>
Пожалуйста, войдите в систему, чтобы продолжить.
</div>
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/login" class="btn btn-primary">
<i class="fas fa-sign-in-alt me-2"></i>
Войти
</a>
<a href="/" class="btn btn-outline-secondary">
<i class="fas fa-home me-2"></i>
На главную
</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,42 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}403 - Доступ запрещен - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-lock fa-5x text-warning mb-3"></i>
<h1 class="display-1 fw-bold text-warning">403</h1>
</div>
<h2 class="h3 mb-3">Доступ запрещен</h2>
<p class="text-muted mb-4">
У вас нет прав для доступа к этому ресурсу.
</p>
<div class="alert alert-warning mb-4">
<i class="fas fa-exclamation-triangle me-2"></i>
Для доступа к этой странице требуются дополнительные права. Обратитесь к администратору.
</div>
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="history.back()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
Назад
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,42 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}404 - Страница не найдена - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-search fa-5x text-muted mb-3"></i>
<h1 class="display-1 fw-bold text-primary">404</h1>
</div>
<h2 class="h3 mb-3">Страница не найдена</h2>
<p class="text-muted mb-4">
Запрашиваемая страница не существует или была перемещена.
</p>
<div class="alert alert-info mb-4">
<i class="fas fa-info-circle me-2"></i>
Проверьте правильность URL или вернитесь на главную страницу.
</div>
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="history.back()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
Назад
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,52 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}500 - Внутренняя ошибка сервера - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-exclamation-triangle fa-5x text-danger mb-3"></i>
<h1 class="display-1 fw-bold text-danger">500</h1>
</div>
<h2 class="h3 mb-3">Внутренняя ошибка сервера</h2>
<p class="text-muted mb-4">
Произошла непредвиденная ошибка при обработке вашего запроса.
</p>
<div class="alert alert-danger mb-4">
<i class="fas fa-bug me-2"></i>
Мы уже работаем над устранением проблемы. Пожалуйста, попробуйте позже.
</div>
{% if error_detail %}
<div class="alert alert-secondary mb-4 text-start">
<small><strong>Детали ошибки:</strong><br>{{ error_detail }}</small>
</div>
{% endif %}
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="location.reload()" class="btn btn-outline-primary">
<i class="fas fa-redo me-2"></i>
Обновить страницу
</button>
<button onclick="history.back()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
Назад
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,46 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}502 - Ошибка шлюза - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-server fa-5x text-danger mb-3"></i>
<h1 class="display-1 fw-bold text-danger">502</h1>
</div>
<h2 class="h3 mb-3">Ошибка шлюза</h2>
<p class="text-muted mb-4">
Сервер получил неверный ответ от вышестоящего сервера.
</p>
<div class="alert alert-warning mb-4">
<i class="fas fa-exclamation-triangle me-2"></i>
Возможно, один из сервисов временно недоступен. Попробуйте обновить страницу через несколько секунд.
</div>
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="location.reload()" class="btn btn-outline-primary">
<i class="fas fa-redo me-2"></i>
Обновить страницу
</button>
<button onclick="history.back()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
Назад
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,42 @@
{% extends "base.html" %}
{% set hide_sidebar = True %}
{% block title %}503 - Сервис недоступен - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<i class="fas fa-tools fa-5x text-warning mb-3"></i>
<h1 class="display-1 fw-bold text-warning">503</h1>
</div>
<h2 class="h3 mb-3">Сервис недоступен</h2>
<p class="text-muted mb-4">
Сервис временно недоступен из-за технического обслуживания или перегрузки.
</p>
<div class="alert alert-info mb-4">
<i class="fas fa-info-circle me-2"></i>
Мы проводим техническое обслуживание. Пожалуйста, попробуйте позже.
</div>
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="location.reload()" class="btn btn-outline-primary">
<i class="fas fa-redo me-2"></i>
Обновить страницу
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,41 @@
{% extends "base.html" %}
{% block title %}{{ error_code }} - {{ error_title }} - DevOpsLab{% endblock %}
{% block content %}
<div class="container-fluid py-5">
<div class="row justify-content-center">
<div class="col-12 col-md-8 col-lg-6">
<div class="text-center">
<div class="error-code mb-4">
<h1 class="display-1 fw-bold text-primary">{{ error_code }}</h1>
</div>
<h2 class="h3 mb-3">{{ error_title }}</h2>
{% if error_message %}
<p class="text-muted mb-4">{{ error_message }}</p>
{% endif %}
{% if error_description %}
<div class="alert alert-info mb-4">
<i class="fas fa-info-circle me-2"></i>
{{ error_description }}
</div>
{% endif %}
<div class="d-flex gap-2 justify-content-center flex-wrap">
<a href="/" class="btn btn-primary">
<i class="fas fa-home me-2"></i>
На главную
</a>
<button onclick="history.back()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
Назад
</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}