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.
Plan Summary
A plan summary includes resource counts as inline badges, destruction warnings, and a collapsible resource list:
## Plan: `vpc` in `plat-ue2-dev`
[](#)
[](#)
[](#)
> [!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>
Multi-component Plan Summary
When atmos terraform plan runs more than one component through the dependency graph in CI
(--all, --components, or --query), Atmos writes one deterministic aggregate summary after all
scheduler workers finish. This avoids concurrent writes to $GITHUB_STEP_SUMMARY while preserving
per-component detail.
The aggregate summary includes:
- Total component counts grouped as changed, failed, no changes, and skipped
- Total resource counts across successful, non-skipped components
- Failed, changed, no-change, and skipped component groups
- A per-component table with stack, component, status, summary, resource counts, and duration
- Collapsible details for failed and changed components
Skipped dependency-blocked components are shown separately from failed components. If any component
fails, the aggregate CI exit code is 1; otherwise it is 2 when any component changed and 0
when every component completed with no changes.
Apply Summary
Apply summaries show the result of the apply operation, including resource counts and any terraform outputs that were produced.
Configuration
ci.summary.enabledEnable or disable job summaries.
Default:
trueci.summary.templateOverride 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
ci.templates.base_pathDirectory containing custom template files, relative to the repository root.
Default:
.atmos/ci/templatesci.templates.terraform.planFilename of the custom plan summary template within the base path.
Default:
plan.md(built-in)ci.templates.terraform.applyFilename 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
| Variable | Type | Description |
|---|---|---|
.Component | string | Component name |
.Stack | string | Stack name |
.Command | string | Terraform command (plan) |
.HasChanges | bool | Whether the plan has changes |
.Additions | int | Number of resources to create |
.Changes | int | Number of resources to change |
.Destructions | int | Number of resources to destroy |
.Imports | int | Number of resources to import |
.Summary | string | One-line plan summary |
.Resources | object | Resource lists by action type |
.Warnings | []string | Terraform warning messages |
Apply Template Variables
| Variable | Type | Description |
|---|---|---|
.Component | string | Component name |
.Stack | string | Stack name |
.Command | string | Terraform command (apply) |
.Success | bool | Whether apply succeeded |
.Summary | string | One-line apply summary |
.Resources | object | Resource lists by action type |
.Outputs | map | Terraform outputs |
.Warnings | []string | Terraform warning messages |
Example Custom Template
Related
- Native CI Overview - Feature overview
- CI Configuration - Full configuration reference