从构建服务器中删除“.git”文件夹

Remove ".git" folder from build server

我正在将最新版本从 bitbucket 推送到构建服务器 (bamboo)

然后推送到 artifactory,然后在 Octopus 中创建版本。

每次构建要发布的包时,都会包含 .git 文件夹。

在构建服务器构建并发布到 artifactory 和 Octopus 之前,是否有一种明智的方法来删除 .git 文件夹?

我认为问题是您的构建过程主要(完全?)是一个打包过程,并在源目录中运行 "in place"。

这不是每个人都会遇到的问题的原因是,构建过程通常首先构建一个 "target" 或 "distribution" 目录,然后采取任何必要的步骤使其看起来 完全喜欢应该部署什么,然后打包分发目录而不是源目录

这解决了很多问题。在使用编译语言时,最大的可能是 "how do I keep from accidentally deploying source files"(反之,"how do I keep from accidentally committing build artifacts into source control")。

但也许您的应用程序主要是 HTML 和 javascript,并且您没有编译任何东西,因此似乎没有理由将源目录和分发目录分开。我仍然鼓励您考虑转向这种类型的构建,即使唯一的 "build step" 是将所需的文件从源复制到分发目录。这有两个原因:

一是解决了眼前的问题。请注意,.git 目录可能只是最明显的症状。 (您现在可能拥有,或者将来可能会发现您需要其他 git 元数据文件 - 比如 .gitignore,.gitattributes,... - 你可能不会'也不希望部署那些。)

其次,它为您将来无缝添加更复杂的源到分发转换做好准备。 (也许你决定减少生产构建的资源。也许你决定使用网络捆绑器。也许你合并了更少的样式表。也许你开始使用基于模块的依赖管理系统......)

在硬币的另一面,删除您的 git 文件夹(无论您如何 "sane" 找到这样做的方式)可能会产生副作用。取决于您的构建作业的配置方式,但通常 repo 从一个构建保存到下一个构建以节省时间(不必在每次构建时从原始 repo 获取那么多)。

综上所述,如果您仍然想删除 .git 文件夹...那么将第一个构建步骤设为 rm 文件夹的脚本有什么问题?