{% extends "projects/base.html" %} {% import "site_shell/_macros.html" as ui %} {% block title %}{{ pipeline.name }} - Pipeline - {{ project.name }} - Pychestrate{% endblock %} {% block content %}
Version
v{{ pipeline.version }}
Stages
{{ pipeline.stages|length }}
Triggers
{% if pipeline.triggers %}{{ pipeline.triggers | join(', ') }}{% else %}manual only{% endif %}
Updated
{{ pipeline.updated_at | format_datetime('%Y-%m-%d %H:%M') }}

Pipeline Stages

{% if pipeline.stages %}
{% for stage in pipeline.stages %} {% endfor %}
# Name Type Approval Required On Failure
{{ loop.index }} {{ stage.name }} {{ stage.type }} {% if stage.requires_approval is defined and stage.requires_approval %} Yes {% else %} No {% endif %} {% if stage.continue_on_failure is defined and stage.continue_on_failure %}Continue{% else %}Stop pipeline{% endif %}
{% else %} {{ ui.empty_state("No stages defined") }} {% endif %}

Recent Runs

{% if recent_runs %}
{% for run in recent_runs %} {% endfor %}
Run Status Triggered By Started Duration
#{{ run.id }} {{ ui.status_badge(run.status) }} {{ run.triggered_by_username }} {{ run.started_at | format_datetime('%Y-%m-%d %H:%M', 'Pending') }} {% if run.started_at and run.completed_at %}{{ (run.completed_at - run.started_at).total_seconds() | int }}s{% elif run.started_at %}running{% else %}-{% endif %}
{% else %} {{ ui.empty_state("No runs recorded.") }} {% endif %}
{% endblock %}