菜单

基础设施和 DevOps 模板

相关源文件

目的与范围

本页面记录了专为基础设施即代码 (IaC) 工具、构建系统和DevOps相关技术设计的gitignore模板。这些模板通过排除不应提交到版本控制的临时文件、构建产物、本地配置和敏感数据,帮助基础设施工程师和DevOps从业者维护整洁的代码仓库。

有关开发环境特定模式,请参阅开发环境模板。有关操作系统特定模式,请参阅操作系统特定模式

基础设施和DevOps模板概述

GitHub gitignore 仓库包含多个专用于现代基础设施工具和构建系统的模板。这些模板满足了基础设施供应、配置管理和应用程序构建过程的独特要求。

模板类型分布

来源:Terraform.gitignore Packer.gitignore Maven.gitignore Gradle.gitignore Global/Linux.gitignore community/Terragrunt.gitignore PlayFramework.gitignore

基础设施即代码模板

基础设施即代码 (IaC) 工具生成各种本地文件,这些文件不应提交到版本控制。这包括状态文件、本地变量定义和缓存文件。

Terraform 模板

Terraform gitignore 模板处理以下几类文件:

类别模式目的
本地状态目录**/.terraform/*本地插件缓存和模块
状态文件*.tfstate, *.tfstate.*基础设施状态数据
变量文件*.tfvars, *.tfvars.json可能包含敏感值
覆盖文件override.tf, *_override.tf, 等。本地资源覆盖
锁文件.terraform.tfstate.lock.info临时锁信息
配置.terraformrc, terraform.rcCLI配置文件
崩溃日志crash.log, crash.*.log调试信息

来源:Terraform.gitignore1-37

Packer 模板

Packer 是另一个 HashiCorp 工具,用于创建机器镜像,它有自己的 gitignore 模式:

类别模式目的
缓存对象packer_cache/缓存的产物和下载文件
变量文件*.pkrvars.hcl可能包含秘密的变量文件
崩溃日志crash.log调试信息
输出产物*.box构建的机器镜像

来源:Packer.gitignore1-16

Terragrunt 模板

Terragrunt 是 Terraform 的一个轻量级包装器,提供额外功能,它有一个特定的模式来忽略其缓存:

.terragrunt-cache

此目录包含 Terragrunt 生成的缓存 Terraform 配置。

来源:community/Terragrunt.gitignore1-4

基础设施工具关系和忽略的文件

来源:Terraform.gitignore1-37 Packer.gitignore1-16 community/Terragrunt.gitignore1-4

构建工具和依赖管理

构建工具生成许多临时文件和目录,这些文件和目录应从版本控制中排除。该仓库包含了针对流行构建系统(如Maven和Gradle)的模板。

Maven 模板

Maven 的 gitignore 模板处理以下文件类型:

类别模式目的
构建目录target/编译代码和打包产物
版本控制pom.xml.tag, pom.xml.releaseBackup, 等。发布期间创建的临时文件
构建属性release.properties, buildNumber.properties在构建过程中生成
依赖信息dependency-reduced-pom.xml在依赖管理期间生成
Maven 包装器.mvn/timing.propertiesMaven 包装器配置
IDE集成.project, .classpathEclipse m2e 集成文件

来源:Maven.gitignore1-18

Gradle 模板

Gradle 模板处理 Gradle 构建的类似问题:

类别模式目的
Gradle 目录.gradleGradle 系统目录
构建目录**/build/跨项目的构建输出
GUI 配置gradle-app.settingGradle GUI 配置
异常处理!gradle-wrapper.jar, !gradle-wrapper.properties尽管存在其他模式仍需包含的文件
缓存.gradletasknamecache任务名称缓存以提高性能
IDE集成.project, .classpathEclipse 集成文件

来源:Gradle.gitignore1-22

Play Framework 模板

Play Framework 模板排除与 Play 应用程序相关的各种目录和文件:

类别模式目的
工作目录bin/, /db, /lib/, 等。框架特定目录
日志/logs/应用程序日志
临时文件tmp/, test-result在开发/测试期间生成
进程信息server.pid服务器进程ID文件
发行版/dist/分发包
缓存.cache本地缓存文件

来源:PlayFramework.gitignore1-17

构建工具生态系统和忽略的文件

来源:Maven.gitignore1-18 Gradle.gitignore1-22 PlayFramework.gitignore1-17

操作系统特定注意事项

DevOps 工作流通常跨越多个操作系统,每个系统都有自己应忽略的文件集。

Linux特定模式

Linux gitignore 模板处理以下几类Linux系统特有的文件:

类别模式目的
备份文件*~编辑器创建的临时备份文件
文件系统产物.fuse_hidden*, .nfs*由文件系统操作创建
文件管理器元数据.directory由Dolphin等文件管理器创建
垃圾文件夹.Trash-*可能出现在任何分区上的垃圾文件
命令输出nohup.outnohup 命令的默认日志文件

来源:Global/Linux.gitignore1-17

跨平台DevOps关注点

操作系统特定和工具特定gitignore模式的组合在DevOps环境中尤为重要,因为工程师经常在不同平台和工具链之间工作。

与DevOps工作流集成

Gitignore 模板在 DevOps 工作流中扮演着关键角色,它确保只有必要文件被提交到版本控制。

典型DevOps工作流和Gitignore集成

来源:Terraform.gitignore1-37 Maven.gitignore1-18 Gradle.gitignore1-22 Global/Linux.gitignore1-17

基础设施和DevOps模板的最佳实践

在使用基础设施和DevOps工具时,请考虑以下gitignore模板的最佳实践:

  1. 始终排除状态文件:像 Terraform 的.tfstate文件等状态文件可能包含敏感信息,绝不应提交。

  2. 排除包含秘密的变量文件:包含变量的文件(如.tfvars.pkrvars.hcl)通常包含密码、API密钥和其他秘密。

  3. 包含包装器文件:构建工具包装器文件(如gradle-wrapper.jar)通常应被包含,尽管其他.jar文件被排除。

  4. 平衡共享配置:考虑哪些配置文件应在团队成员之间共享,哪些应保留在本地。

  5. 记录例外情况:当包含原本会被排除的文件时(使用!pattern),记录这些例外为何是必需的。

有关基础设施和DevOps相关特定gitignore模板的更多详细信息,请参阅:

有关可能与这些工具一起使用的开发环境模板,请参阅开发环境模板