feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
234
app/templates/pages/roles/detail.html
Normal file
234
app/templates/pages/roles/detail.html
Normal file
@@ -0,0 +1,234 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ role.name }} - DevOpsLab{% endblock %}
|
||||
{% block page_title %}{{ role.name }}{% endblock %}
|
||||
|
||||
{% block header_actions %}
|
||||
<div class="d-flex gap-2">
|
||||
<a href="/roles/{{ role.name }}/test" class="btn btn-success btn-sm">
|
||||
<i class="fas fa-vial me-2"></i>
|
||||
Тестировать
|
||||
</a>
|
||||
<a href="/roles/{{ role.name }}/edit" class="btn btn-primary btn-sm">
|
||||
<i class="fas fa-edit me-2"></i>
|
||||
Редактировать
|
||||
</a>
|
||||
<a href="/roles" class="btn btn-secondary btn-sm">
|
||||
<i class="fas fa-arrow-left me-2"></i>
|
||||
Назад
|
||||
</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if role.description %}
|
||||
<div class="alert alert-info mb-3">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
{{ role.description }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Вкладки -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<ul class="nav nav-tabs card-header-tabs" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button
|
||||
class="nav-link active"
|
||||
id="overview-tab"
|
||||
data-bs-toggle="tab"
|
||||
data-bs-target="#overview"
|
||||
type="button"
|
||||
role="tab"
|
||||
>
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
Обзор
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button
|
||||
class="nav-link"
|
||||
id="tasks-tab"
|
||||
data-bs-toggle="tab"
|
||||
data-bs-target="#tasks"
|
||||
type="button"
|
||||
role="tab"
|
||||
>
|
||||
<i class="fas fa-tasks me-2"></i>
|
||||
Задачи
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button
|
||||
class="nav-link"
|
||||
id="defaults-tab"
|
||||
data-bs-toggle="tab"
|
||||
data-bs-target="#defaults"
|
||||
type="button"
|
||||
role="tab"
|
||||
>
|
||||
<i class="fas fa-sliders-h me-2"></i>
|
||||
Переменные
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button
|
||||
class="nav-link"
|
||||
id="readme-tab"
|
||||
data-bs-toggle="tab"
|
||||
data-bs-target="#readme"
|
||||
type="button"
|
||||
role="tab"
|
||||
>
|
||||
<i class="fas fa-book me-2"></i>
|
||||
Документация
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Содержимое вкладок -->
|
||||
<div class="card-body">
|
||||
<div class="tab-content" id="role-tabs-content">
|
||||
<!-- Вкладка: Обзор -->
|
||||
<div class="tab-pane fade show active" id="overview" role="tabpanel">
|
||||
<h5 class="mb-4">Информация о роли</h5>
|
||||
|
||||
<div class="row g-4 mb-4">
|
||||
<div class="col-12 col-md-6">
|
||||
<h6 class="fw-semibold mb-3">Структура</h6>
|
||||
<ul class="list-unstyled">
|
||||
{% if role.has_tasks %}
|
||||
<li class="mb-2">
|
||||
<i class="fas fa-check-circle text-success me-2"></i>
|
||||
tasks/main.yml
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="mb-2 text-muted">
|
||||
<i class="fas fa-times-circle me-2"></i>
|
||||
tasks/main.yml
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if role.has_defaults %}
|
||||
<li class="mb-2">
|
||||
<i class="fas fa-check-circle text-success me-2"></i>
|
||||
defaults/main.yml
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="mb-2 text-muted">
|
||||
<i class="fas fa-times-circle me-2"></i>
|
||||
defaults/main.yml
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if role.has_handlers %}
|
||||
<li class="mb-2">
|
||||
<i class="fas fa-check-circle text-success me-2"></i>
|
||||
handlers/main.yml
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="mb-2 text-muted">
|
||||
<i class="fas fa-times-circle me-2"></i>
|
||||
handlers/main.yml
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if role.has_meta %}
|
||||
<li class="mb-2">
|
||||
<i class="fas fa-check-circle text-success me-2"></i>
|
||||
meta/main.yml
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="mb-2 text-muted">
|
||||
<i class="fas fa-times-circle me-2"></i>
|
||||
meta/main.yml
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-6">
|
||||
<h6 class="fw-semibold mb-3">Метаданные</h6>
|
||||
{% if role.author %}
|
||||
<p class="mb-2">
|
||||
<strong>Автор:</strong> {{ role.author }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if role.platforms %}
|
||||
<p class="mb-2"><strong>Платформы:</strong></p>
|
||||
<ul class="list-unstyled">
|
||||
{% for platform in role.platforms %}
|
||||
<li class="mb-1">
|
||||
<i class="fas fa-server me-2 text-muted"></i>
|
||||
{{ platform.name }}
|
||||
{% if platform.versions %}
|
||||
<span class="text-muted">({{ platform.versions|join(", ") }})</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<h6 class="fw-semibold mb-3">Быстрые действия</h6>
|
||||
<div class="d-flex gap-2 flex-wrap">
|
||||
<a href="/roles/{{ role.name }}/test" class="btn btn-success">
|
||||
<i class="fas fa-vial me-2"></i>
|
||||
Запустить тест
|
||||
</a>
|
||||
<a href="/roles/{{ role.name }}/deploy" class="btn btn-primary">
|
||||
<i class="fas fa-rocket me-2"></i>
|
||||
Деплой
|
||||
</a>
|
||||
<a href="/roles/{{ role.name }}/export" class="btn btn-outline-primary">
|
||||
<i class="fas fa-upload me-2"></i>
|
||||
Экспорт
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Вкладка: Задачи -->
|
||||
<div class="tab-pane fade" id="tasks" role="tabpanel">
|
||||
<h5 class="mb-4">Задачи (tasks/main.yml)</h5>
|
||||
{% if tasks_content %}
|
||||
<pre class="bg-dark text-light p-3 rounded"><code>{{ tasks_content }}</code></pre>
|
||||
{% else %}
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-triangle me-2"></i>
|
||||
Файл tasks/main.yml не найден
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Вкладка: Переменные -->
|
||||
<div class="tab-pane fade" id="defaults" role="tabpanel">
|
||||
<h5 class="mb-4">Переменные (defaults/main.yml)</h5>
|
||||
{% if defaults_content %}
|
||||
<pre class="bg-dark text-light p-3 rounded"><code>{{ defaults_content }}</code></pre>
|
||||
{% else %}
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-triangle me-2"></i>
|
||||
Файл defaults/main.yml не найден
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Вкладка: Документация -->
|
||||
<div class="tab-pane fade" id="readme" role="tabpanel">
|
||||
<h5 class="mb-4">Документация (README.md)</h5>
|
||||
{% if readme_content %}
|
||||
<div class="border rounded p-3 bg-light">
|
||||
<pre class="mb-0" style="white-space: pre-wrap;">{{ readme_content }}</pre>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-triangle me-2"></i>
|
||||
Файл README.md не найден
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user