需自行托管服务并配置代码仓库 webhook;需在运行环境中具备 Terraform 及目标云凭证;具体安装与配置以官方文档为准
atlantis
runatlantisApache-2.0活跃维护在 Terraform 的 Pull Request 里自动执行 plan 和 apply,把基础设施变更流程搬进代码评审,省去手动跑命令和审批的麻烦。
Terraform Pull Request Automation
README 未给出安装命令,请参考 www.runatlantis.io/guideREADME 未说明
自托管 Go 应用,通过 webhook 监听 Terraform PR 事件并自动执行 plan/apply
在 Terraform 的 Pull Request 里自动执行 plan 和 apply,把基础设施变更流程搬进代码评审,省去手动跑命令和审批的麻烦。
核心能力
- 通过 webhook 监听 Terraform 拉取请求事件
- 远程运行 terraform plan、import、apply
- 把执行输出以评论形式回写到 PR
- 让非运维工程师也能参与 Terraform 协作
- 统一团队 Terraform 工作流
容易踩的坑
- v0.49.0最新正式版2026-10-25 · 2026-10-25 01:47 UTC
Atlantis v0.49.0
v0.49.0 is a breaking release, for three reasons:
- The Docker images no longer include Terraform or OpenTofu. This was announced in v0.48.0.
- 12 security advisories are fixed here, and several of those fixes change behavior that existing setups may rely on.
- v0.47.1 shipped a breaking change without saying so: the shell-injection fix in #6792. It is listed below so anyone upgrading from v0.47.0 or earlier sees it.
Every behavior change is also documented, in a Behavior change note, on the docs page where you would look for that setting. Read Breaking changes before you upgrade.
Upgrade checklist
- Docker images: set
--default-tf-version(and--default-tf-distribution opentofuif you use OpenTofu) so Atlantis downloads the binary. If downloads are blocked, mount or copy a binary into the image instead. The image no longer ships one. - Upgrading from v0.47.0 or earlier: check workspace names and comment arguments against the v0.47.1 changes below.
- GitHub / GHES: make sure
--gh-hostnamematches the host in your repositories' clone URLs. Webhooks whose clone URL is on a different host are now rejected. - Server-side repo config: if repos use
allow_custom_workflows: truetogether withallowed_workflows, check that every project'sworkflowis in the allow-list. Repo configs that used to pass can now be rejected. - Project dirs: make sure no project
diris a symlink to somewhere outside the repository. - Comment commands: tell users that
-out,-generate-config-out,-state,-state-outand-backupare now blocked after--, and that--blocked-extra-argscan no longer unblock anything. - Comment
-var-file: the allowlist now applies toapply,importandstate rmas well asplan. Paths containing..are refused, and so are repo symlinks that point outside the repository and the allowlist. -
state rm: ifstateis in--allow-commands,state rmnow has to meet the project'sapply_requirementsandimport_requirements. - API: if
--api-secretis set, sendX-Atlantis-TokenonGET /api/locks. Check that/api/planand/api/applycallers send clean, repo-relativepaths[].directoryvalues with no leading/and no globs. - Approvals (GitHub, Gitea):
apply_requirements: [approved]now uses each reviewer's latest review. On Gitea, dismissed and stale approvals no longer count, and any push that changes the diff makes approvals stale. - Apply: plans recorded by v0.49.0 are bound to a hash. A plan file that changes between
planandapplyis rejected and has to be re-planned.
Breaking changes
Docker images
The Docker images no longer include Terraform or OpenTofu
- What changed: the
latest,vX.Y.ZandvX.Y.Z-debianimages no longer bundle Terraform or OpenTofu binaries, and they set no default Terraform version. This was announced in the v0.48.0 release notes. The-alpine-slimand-debian-slimimages from v0.48.0 were the intermediate step toward this and are no longer published. If you pinned one, switch to the unsuffixed,-alpineor-debiantag, which now contain the same thing. If you build the image yourself, use--target alpineor--target debian; the-slimtargets are gone. - Why: every advisory against any bundled Terraform or OpenTofu release showed up in scans of the Atlantis image, whether or not you used that version. Atlantis can't own the security lifecycle of those third-party binaries.
- Who is affected: anyone using the published images who relied on the bundled
terraformortofubinary onPATH, or on the version the image used to set by default. - How to tell: the server refuses to start with
terraform not found in $PATH. Set --default-tf-version .... - What to do:
- Set
--default-tf-version(`ATLANTIS_DEFAULT_TF_VERSION
- Set
- v0.48.22026-10-21 · 2026-10-21 00:39 UTC
查看更新说明
Highlights
Emergency security release for the eMudhra intermediate CA key compromise. The private keys of eight eMudhra (emSign) intermediate certificates were compromised; some of those intermediates are cross-signed by a root that every trust store includes. We recommend all users upgrade.
- Go 1.27.3: Atlantis is now built with go1.27.3, whose
crypto/x509rejects any certificate chain containing the eight compromised keys (CVE-2026-111943). Go does not check revocation, so Atlantis v0.48.1 and earlier, built with go1.27.1, would accept a certificate issued with those keys for any host, including the VCS APIs Atlantis sends credentials to. go1.27.3 also includes the standard library fixes from go1.27.2. - Trust store update in the images:
ca-certificatesis updated to Alpine20261020-r0and Debian20250419+deb13u1. Both removeemSign ECC Root CA - G3, and Debian also removes theComodo AAA Services rootthat cross-signed some of the affected intermediates. This covers the other TLS clients in the image (git, curl, Terraform/OpenTofu and conftest). - Runtime image refresh: Debian curl
8.14.1-2+deb13u7and openssl3.5.7-1~deb13u3security pins, Alpine 3.24.2, Terraform 1.16.5, conftest 0.70.1. - Dependency security updates:
golang.org/x/netv0.60.0 andvitev8.3.3.
If you build Atlantis yourself, rebuild with go1.27.3 or go1.26.10 or later. The
terraform,tofuandconftestbinaries are built by their own projects; update them when their releases with the Go fix are available.What's Changed
Security changes
- fix(deps): update Go to 1.27.3 to distrust compromised eMudhra intermediates (release-0.48) by @jamengual in https://github.com/runatlantis/atlantis/pull/7000
- chore(deps): update module golang.org/x/net to v0.60.0 [security] (release-0.48) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/6976
- chore(deps): update dependency vite to v8.3.3 [security] (release-0.48) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/7002
Full Changelog: https://github.com/runatlantis/atlantis/compare/v0.48.1...v0.48.2
- Go 1.27.3: Atlantis is now built with go1.27.3, whose
- v0.48.12026-10-07 · 2026-10-07 17:37 UTC
查看更新说明
What's Changed
Security changes
- fix: anchor the prefix when a repo allowlist rule has a mid-string wildcard (GHSA-fwc4-2f3p-7qm7) by @jamengual in https://github.com/runatlantis/atlantis/pull/6962
Full Changelog: https://github.com/runatlantis/atlantis/compare/v0.48.0...v0.48.1
Thanks to @arpitjain099 for reporting and reviewing this fix, and to @pseudomorph for reviewing.
- v0.48.02026-09-22 · 2026-09-22 02:55 UTC
查看更新说明
Atlantis v0.48.0
### Terraform and OpenTofu Binaries Removed from Debian and Alpine Images
Starting with Atlantis v0.49.0, the Debian- and Alpine-based Docker images will no longer include bundled Terraform or OpenTofu binaries.
Users can continue to use Atlantis' automatic binary download functionality to fetch and use the Terraform or OpenTofu versions required by their workflows.
This change allows the Atlantis project to focus its security and maintenance efforts on the Atlantis application and its container images, rather than taking responsibility for the security lifecycle, vulnerability management, and distribution of third-party Terraform and OpenTofu binaries.
Users who require pre-installed binaries can continue to build custom Atlantis images based on the official images.
Highlights
- Safer plan/apply lifecycle. Atlantis now hashes the loaded apply plan, persists plan results before reporting success, and applies the verified managed-plan snapshot.
- New slim container images. Alpine and Debian slim images are available without bundled Terraform or OpenTofu, for deployments that provide their own tooling.
- Terraform and runtime compatibility. End-of-life Terraform versions without security support were removed from the standard images. The bundled versions, Debian and Alpine bases, Go toolchain, OpenTofu, Conftest, and Git LFS were refreshed.
- Operational and security hardening. GitLab webhook tokens are omitted from errors, and drainer and workflow-hook status handling is more reliable. The GHSA-rjh2-4xgw-p2hj shell-injection fix is retained from the mainline history; it was already shipped in v0.47.1 and is not presented as new here.
- Documentation and localization. Spanish documentation and translation infrastructure were expanded.
Runtime and compatibility changes
- Standard images now use Terraform 1.16.3 and 1.15.9, with older unsupported Terraform versions removed.
- Alpine and Debian base images were updated, along with the Go 1.27.1 runtime/toolchain, OpenTofu 1.12.6, Conftest 0.70.0, and Git LFS 3.8.0.
- New
alpine-slimanddebian-slimimage targets do not bundle Terraform or OpenTofu.
What's Changed
Exciting New Features 🎉
- feat: Remove end-of-life Terraform versions with no security support by @adampie in https://github.com/runatlantis/atlantis/pull/6826
- New slim Alpine and Debian images without bundled Terraform/OpenTofu by @jamengual in https://github.com/runatlantis/atlantis/pull/6831
Provider GitLab
- fix(events): omit GitLab webhook tokens from errors by @chenrui333 in https://github.com/runatlantis/atlantis/pull/6851
Bug fixes 🐛
- fix: hash apply plan after PlanStore.Load by @daanvinken in https://github.com/runatlantis/atlantis/pull/6790
Security changes
- chore(deps): update module golang.org/x/crypto to v0.56.0 [security] (main) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/6838
Documentation
- Spanish documentation and translation infrastructure by @jamengual in https://github.com/runatlantis/atlantis/pull/6767, https://github.com/runatlantis/atlantis/pull/6863, https://github.com/runatlantis/atlantis/pull/6864, https://github.com/runatlantis/atlantis/pull/6866, and https://github.com/runatlantis/atlantis/pull/6867
- chore(deps): update dependency vue to v3.5.41 in package.json (main) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/6745
- docs(adr): define when an ADR is required and how to propose changes by @ShankyJS in https://github.com/runatlantis/atlantis/pull/6820
- chore(deps): update dependency @playwright/test to v1.62.1 in package.json (main) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/6821
- chore(deps): update dependency vue to v3.5.42 in package.json (main) by @renovate[bot] in https://github.com/runatlantis/atlantis/pull/6823
- chore(deps): update dependency mermaid to v11.
- v0.47.12026-08-20 · 2026-08-20 18:34 UTC
查看更新说明
What's Changed
Security changes
- fix: prevent pull request input from reaching a shell (GHSA-rjh2-4xgw-p2hj) by @jamengual in https://github.com/runatlantis/atlantis/pull/6792
Full Changelog: https://github.com/runatlantis/atlantis/compare/v0.47.0...v0.47.1
Thanks to @krewenki for the security review of this fix, and to @pseudomorph for reviewing.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Atlantis
- Get involved
- Resources
- What is Atlantis?
- What does it do?
- Why should you use it?
- Stargazers over time
Get involved
Help shape Atlantis! Share feedback, discuss ideas, report issues, or contribute code and documentation.
- Community meetings: Join the conversation at an Atlantis community meeting.
- Slack: Join CNCF Slack and find #atlantis for questions and feedback, or #atlantis-contributors to discuss ideas and contributions.
- Issues: Report a bug or suggest an improvement.
- Contributing: See CONTRIBUTING.md to get started.
Resources
- How to get started: www.runatlantis.io/guide
- Full documentation: www.runatlantis.io/docs
- Download the latest release: github.com/runatlantis/atlantis/releases/latest
What is Atlantis?
A self-hosted golang application that listens for Terraform pull request events via webhooks.
What does it do?
Runs terraform plan, import, apply remotely and comments back on the pull request with the output.
Why should you use it?
- Make Terraform changes visible to your whole team.
- Enable non-operations engineers to collaborate on Terraform.
- Standardize your Terraform workflows.