ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

tfnotify×GitHub Actions集成指南:Terraform plan通知完整配置(附CircleCI、CloudBuild、CodeBuild方案)

tfnotify×GitHub Actions集成指南:Terraform plan通知完整配置(附CircleCI、CloudBuild、CodeBuild方案) tfnotify×GitHub Actions集成指南Terraform plan通知完整配置附CircleCI、CloudBuild、CodeBuild方案【免费下载链接】tfnotifyA CLI command to parse Terraform execution result and notify it to GitHub项目地址: https://gitcode.com/gh_mirrors/tf/tfnotifytfnotify是一款开源的 Terraform 通知工具它解析terraform plan/terraform apply的执行结果包括退出码与错误详情并自动以评论形式发布到 GitHub 的 Pull Request、Issue 或 Commit 页面。结合 GitHub Actions 使用你无需再手动翻 CI 日志——每次 Terraform 执行后plan 结果会直接出现在 PR 里还能自动打上destroy、no-changes等标签。什么是 tfnotify解决去哪里看 Terraform 结果的痛点Terraform 的plan和apply命令通常跑在 CI 里结果要登进 CI 页面才能看到非常不便。tfnotify 的定位很简单智能解析基于正则引擎从 Terraform 输出中提取关键信息如Plan: 1 to add、No changesPR 评论通知将结果以 Go 模板渲染后发布为 GitHub 评论支持更新已有评论避免刷屏️标签管理根据 plan 结果自动给 PR 打标签新增/更新、销毁、无变更、报错⚠️删除资源警告plan 包含资源销毁时可自动附加醒目警告AI 摘要可选调用 OpenAI / Anthropic / LiteLLM 等生成变更摘要脱敏内置 mask 机制防止敏感信息外泄安装 tfnotify一行命令搞定$ go get -u github.com/mercari/tfnotify也可以从 Releases 下载二进制。tfnotify 是纯 CLI 工具它直接从标准输入读取 Terraform 的输出因此使用方式是把 terraform 命令管道给 tfnotify 的子命令$ tfnotify plan -- terraform plan $ tfnotify apply -- terraform apply配置文件默认为当前目录下的tfnotify.yaml可用--config指定其他路径参考 example.tfnotify.yaml。GitHub Actions 集成最快配置方法第 1 步准备 tfnotify.yaml在项目根目录创建配置核心只需两段ci: owner: my-org repo: my-infra terraform: plan: template: | ## Plan Result {{if .Result}} precode{{ .Result }} /pre/code {{end}} detailssummaryDetails (Click me)/summary precode{{ .CombinedOutput }} /pre/code/detailsowner/repo支持环境变量替换在 CI 中它们会自动从当前平台的环境变量补齐无需手写。第 2 步在 workflow 中运行- name: Terraform Plan with tfnotify env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | tfnotify plan -pr ${{ github.event.number }} -- terraform plan几个关键点Token 只写环境变量名如$GITHUB_TOKEN不要硬编码真实值 tfnotify 会自动识别 GitHub Actions 环境GITHUB_SERVER_URL、GITHUB_RUN_ID等{{ .Link }}占位符会渲染成对应的 Actions 运行页面链接️ 加上when_destroy: label: destroy等配置即可实现plan 有销毁操作 → PR 自动打红色 destroy 标签完整示例见 example-with-destroy-and-result-labels.tfnotify.yaml模板中若用代码块展示原始输出建议开启use_raw_output: true避免 HTML 转义见 example-use-raw-output.tfnotify.yaml常用模板占位符速查占位符含义{{ .Title }}标题如## Plan result{{ .Result }}解析出的结果如Plan: 1 to add{{ .Body }}/{{ .CombinedOutput }}Terraform 完整输出{{ .Link }}CI 构建页面链接{{ .HasDestroy }}布尔值是否包含资源销毁CircleCI、CloudBuild、CodeBuild 集成方案tfnotify 通过 pkg/platform/ci.go 自动探测 9 种 CI 平台并适配各自的构建链接CI 平台构建链接来源说明GitHub ActionsGITHUB_SERVER_URLGITHUB_RUN_ID自动拼装运行页链接CircleCICIRCLE_BUILD_URL环境变量直接可用AWS CodeBuildCODEBUILD_BUILD_URL环境变量直接可用Google Cloud BuildBUILD_IDPROJECT_ID_REGION需通过 substitutions 注入 CircleCI 方案CircleCI 的环境变量开箱即用tfnotify.yaml中把ci段写为ci: circleci即可其余配置与 GitHub Actions 完全一致{{ .Link }}会自动指向 CircleCI 构建页。☁️ Google Cloud Build 方案CloudBuild 需要通过substitutions注入以下变量README 有详细说明COMMIT_SHA、BUILD_ID、PROJECT_ID_PR_NUMBERPR 号、_REGION可选缺省为global检测与链接拼装逻辑见 pkg/platform/google_cloud_build.go。官方推荐的触发策略terraform planPull Request触发terraform apply分支推送触发 AWS CodeBuild 方案CodeBuild 下仅需确保CODEBUILD_BUILD_URL存在平台默认提供tfnotify 会自动读取CODEBUILD_BUILD_URL作为{{ .Link }}。若环境无法自动识别仓库信息可在配置中显式写出ci.owner/ci.repo或用全局参数--owner、--repo、--pr、--sha、--build-url兜底。进阶AI 摘要让 plan 结果更易读给plan/apply加上--summary参数tfnotify 会把变更清单创建/更新/删除/替换的资源交给 AI 生成简短摘要与风险提示$ tfnotify plan --summary --summary-provider openai -- terraform plan默认提示词模板见 templates/default.md可通过--summary-template或配置的ai_summary段自定义相关实现在 pkg/ai/。常见问题速查❓没有变更时不想刷屏使用--skip-no-changes此时只更新标签不发评论有 warning 时加--ignore-warning❓多次运行评论太多开启--patch或plan_patch: true更新已有评论而不是新建❓Terragrunt 多模块评论太散加--consolidated合并为单条评论❓不想发 GitHub只想存文件tfnotify --output result.md可直接输出到本地文件相关文件参考文件作用README.md完整文档与 CloudBuild 注意事项example.tfnotify.yaml基础配置示例pkg/platform/ci.goCI 平台探测与链接拼装pkg/config/config.go配置结构与校验逻辑templates/default.mdAI 摘要默认提示词按照以上步骤配置完成后你的 PR 页就会变成plan 结果展示板新增/销毁一目了然危险操作自动警告并打标签团队审查 Terraform 变更的效率会显著提升 【免费下载链接】tfnotifyA CLI command to parse Terraform execution result and notify it to GitHub项目地址: https://gitcode.com/gh_mirrors/tf/tfnotify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表