- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
235 lines
9.6 KiB
HTML
235 lines
9.6 KiB
HTML
{% 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 %}
|