Skip to main content

Job Summaries

When CI mode is enabled, Atmos writes rich Markdown summaries to $GITHUB_STEP_SUMMARY with resource badges, collapsible diffs, and clear warnings about destructive changes.

Experimental

Plan Summary

A plan summary includes resource counts as inline badges, destruction warnings, and a collapsible resource list:

## Plan: `vpc` in `plat-ue2-dev`

[![create](https://shields.io/badge/CREATE-3-success?style=for-the-badge)](#)
[![change](https://shields.io/badge/CHANGE-1-warning?style=for-the-badge)](#)
[![destroy](https://shields.io/badge/DESTROY-2-critical?style=for-the-badge)](#)

> [!CAUTION]
> **Terraform will delete resources!**

<details>
<summary>Plan: 3 to add, 1 to change, 2 to destroy</summary>

### Create
- `aws_vpc.main`
- `aws_subnet.public[0]`
- `aws_subnet.public[1]`

### Change
- `aws_security_group.web`

### Destroy
- `aws_security_group.deprecated`
- `aws_route.legacy`

</details>

Apply Summary

Apply summaries show the result of the apply operation, including resource counts and any terraform outputs that were produced.

Configuration

ci.summary.enabled

Enable or disable job summaries.

Default: true

ci.summary.template

Override the default summary template with a custom template file path.

Template Customization

Override the default plan and apply summary templates with your own Markdown templates. Templates use Go template syntax with access to plan/apply context data.

Custom Template Configuration

atmos.yaml

ci:
templates:
base_path: ".atmos/ci/templates"
terraform:
plan: "plan.md"
apply: "apply.md"
ci.templates.base_path

Directory containing custom template files, relative to the repository root.

Default: .atmos/ci/templates

ci.templates.terraform.plan

Filename of the custom plan summary template within the base path.

Default: plan.md (built-in)

ci.templates.terraform.apply

Filename of the custom apply summary template within the base path.

Default: apply.md (built-in)

Template Context

Templates receive a context object with plan/apply data. The built-in templates are located at pkg/ci/plugins/terraform/templates/ in the Atmos source.

Plan Template Variables

VariableTypeDescription
.ComponentstringComponent name
.StackstringStack name
.CommandstringTerraform command (plan)
.HasChangesboolWhether the plan has changes
.AdditionsintNumber of resources to create
.ChangesintNumber of resources to change
.DestructionsintNumber of resources to destroy
.ImportsintNumber of resources to import
.SummarystringOne-line plan summary
.ResourcesobjectResource lists by action type
.Warnings[]stringTerraform warning messages

Apply Template Variables

VariableTypeDescription
.ComponentstringComponent name
.StackstringStack name
.CommandstringTerraform command (apply)
.SuccessboolWhether apply succeeded
.SummarystringOne-line apply summary
.ResourcesobjectResource lists by action type
.OutputsmapTerraform outputs
.Warnings[]stringTerraform warning messages

Example Custom Template

.atmos/ci/templates/plan.md

## {{ .Component }} / {{ .Stack }}

{{ if .HasChanges }}
**Changes detected:** {{ .Additions }} to add, {{ .Changes }} to change, {{ .Destructions }} to destroy

{{ if gt .Destructions 0 }}
> **Warning:** This plan destroys resources!
{{ end }}
{{ else }}
No changes. Infrastructure is up-to-date.
{{ end }}