Skip to main content

CI Job Summaries

The ci.summary section configures rich Markdown job summaries that are written after plan, apply, deploy, and destroy operations. On GitHub Actions, these are written to $GITHUB_STEP_SUMMARY.

Configuration​

atmos.yaml
ci:
summary:
enabled: true
ci.summary.enabled

Write rich summaries with resource badges, collapsible diffs, and terraform outputs. On GitHub Actions, writes to $GITHUB_STEP_SUMMARY. On GitLab CI, creates job artifacts.

Default: true

ci.summary.template

Override the name of the summary template that a native command loads from the templates base path. Terraform, Helm, and Helmfile commands load <template> in place of the command name (plan, apply, and so on), and native Kubernetes components load <base_path>/kubernetes/<template>.md.

Only the summaries Atmos writes for its own commands read this key. Scripts that call ci.summary name their template in the call with template=, so changing this key never affects a script and a script never needs it. See script report templates.

Default: The command name (for example plan), or summary for native Kubernetes components

Plan Summary Format​

Plan summaries include 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 Format​

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

Custom Templates​

Override the default summary templates with your own Markdown. See Templates for configuration and template variables.

Local Testing​

Test summaries locally by setting the summary output path:

export ATMOS_CI_SUMMARY=/tmp/summary.md
atmos terraform plan mycomponent -s dev --ci
cat /tmp/summary.md

Destroy Summaries​

Single-component Terraform destroy summaries report success or failure and the destroyed resource count. They use the terraform.destroy template (destroy.md by default) and are written to the same summary destination as plan and apply.