{% extends "base.html.jinja" %} {% block content %}

Continuous deployment

{% if timeline | length > 0 %} {# ── Environment swim lanes ──────────────────────────────── #} {% for lane in lanes %}
{% endfor %} {# ── Release timeline ─────────────────────────────────────── #}
{% for item in timeline %} {% if item.kind == "release" %} {# ── Visible release card ──────────────────────────────── #} {% set release = item.release %}
{# Release header #}
{% if release.branch %} {{ release.branch }} {% endif %} {% if release.commit_sha %} {{ release.commit_sha[:7] }} {% endif %} {{ release.created_at | timeago }} {% if release.source_user %} {{ release.source_user }} {% endif %} {{ release.project_name }}
{# Deployment steps (collapsed by default) #}
Deployed to {% for dest in release.destinations %} {{ dest.environment }} {% endfor %} {% for dest in release.destinations %}
Deployed to {{ dest.environment }} {{ dest.name }} {% if dest.type_name %} ({{ dest.type_name }}{% if dest.type_version %} v{{ dest.type_version }}{% endif %}) {% endif %}
{% endfor %}
{% elif item.kind == "hidden" %} {# ── Hidden commits group ──────────────────────────────── #}
{{ item.count }} hidden commit{{ "s" if item.count != 1 }} · Show commit{{ "s" if item.count != 1 }}
{% for release in item.releases %}
{% if release.commit_sha %} {{ release.commit_sha[:7] }} {% endif %} {{ release.created_at | timeago }} {% if release.source_user %} {{ release.source_user }} {% endif %} {{ release.project_name }}
{% endfor %}
{% endif %} {% endfor %}
{% else %} {# ── Empty state ──────────────────────────────────────────── #}

No releases yet

Releases appear when you deploy with Forest CLI.

Get started with the CLI:

forest release create \
  --org {{ org_name }} \
  --project my-project \
  --dest staging:my-service
{% endif %}
{% endblock %}