我应该将源代码、构建脚本和部署脚本捆绑在一起吗?

Should I bundle the source code, build script and deployment script together?

我应该将源代码、构建脚本和部署脚本捆绑在一起吗?在我之前的公司,他们总是捆绑在一起,但总是有一个问题,当公司添加新服务器时,他们需要更改部署脚本并创建新的构建版本,但是没有更改源代码.我想了解贵公司在源代码控制、构建和部署方面的做法。

部署的最佳做法是为此目的拥有一些标准系统。通常该系统将有一个标准的方法来枚举可用的主机以及每个主机上的软件版本,因此部署所需的任何脚本都与使用中的机器无关。

同样,在许多环境中,部署使用一组标准技术。例如,通常使用 CI 到 运行 测试,然后构建一个或多个部署工件,例如 tarball 或容器,然后所有使用相同技术的部署都使用相同的部署方法(例如,将 tarball 解压缩到以存储库名称命名的目录中),因此在这种情况下甚至可能不需要部署脚本。如果您使用标准方法并且 必需的,那么显然您应该将其包含在您的工件中(这意味着它包含在源代码中)或部署系统的配置中(这也应作为存储库进行维护)。

至于要不要附上源码,要看有没有必要。如果您使用 Python 或 Ruby 之类的语言部署项目,那么显然需要它。但是,如果您正在使用 Go 或 Rust 等编译语言部署项目,那么它可能不是,如果您不包含它并且只构建一个二进制工件,那么您的构建工件将更小且更易于使用CI.