构建和部署的区别是什么?

47

build and deployre-deploy 的区别是什么? 当只有一些 HTML 改变而没有 Java 代码改变时,应该做什么? 我应该做一个 build and deploy 还是只做一个 re-deploy


你使用了哪些技术?JSP?还有其他动态的技术吗? - Nix
你的问题/问题很令人困惑,因此无法回答。请澄清您要比较什么。构建和部署与仅“打补丁”(即将我更改的文件复制到服务器)之间的区别。 - Nix
我正在使用Velocity模板语言(VTL)。我的问题实际上是什么时候进行构建,什么时候进行重新部署。我的项目中存在这两个选项。我不确定何时应该进行完整的构建,何时需要重新部署。为了保险起见,我同时进行构建和重新部署。 - pushya
构建需要很长时间吗? - Nix
不完全是这样。但我有一个疑惑,构建和部署项目有什么区别? - pushya
@FirstHearty 这些是相对的术语,意味着它们可以根据公司的实践而变化。 - Nix
5个回答

67

免责声明:定义构建和部署的含义非常主观。


我将从部署开始。 部署应该意味着获取我所有的构件并将它们复制到服务器上,或在服务器上执行它们。 这应该是一个真正简单的过程。

构建的意思是,处理我所有的代码/构件,并为部署做好准备。 意味着编译、生成代码、打包等。

这有帮助吗? 有些人确实将部署视为“构建过程”的一部分,对此我并不太争论,因为通常为了测试或运行,必须将其部署在某个地方


通常规则是如果是动态代码,则需要进行构建/重新部署。

如果您只是编辑静态html、css、图像等,则可以简单地进行补丁更新(最好还要重启服务器)。


如常“打补丁”存在风险,因为您可能没有部署整个代码库,或者某人可能会做错。

个人喜欢进行完整的构建/重新部署,因为您总是知道与源控件同步。 但是,部署可能出现问题,无论是构建部分还是安装部分。 如果您的构建需要很长时间,或者您不必要地需要部署许多移动部件,则可以考虑将它们拆分为更小的可部署组件,或创建更完整的部署计划。

像往常一样,这里没有银弹。


29

Build 的意思是编译项目

Deploy 的意思是编译项目并发布输出

  1. 对于 Web 应用程序,客户端无需部署或执行任何操作,只需要一个简单的带有 URL 的浏览器。 所有 Web 应用程序都仅部署在服务器机器(IIS)上,该应用程序可由所有客户机访问(任何浏览器均可)。

  2. 对于桌面应用程序,需要将其部署/安装在要使用该应用程序的系统上。


2

观看这个部署过程:

------ Build started: Project: AdventureWorks, Configuration: Release ------
Skipping 'belyaev_db.rds'. Item is up to date.
Skipping 'Sales Rep.rdl'. Item is up to date.
Skipping 'Top_10.rsd'. Item is up to date.
Build complete -- 0 errors, 0 warnings

------ Deploy started: Project: AdventureWorks, Configuration: Release ------
Deploying to http://...
Deploying data source '/Data Sources/belyaev_db'.
Warning : ...
Deploying data set '/Datasets/Top_10'.
Warning : ...
Error ...
Deploy complete -- 1 errors, 2 warnings
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

在这种情况下,我有一些问题,但正如你所看到的 - 第一步是建立 - 验证数据源和报告,只有在此之后才会部署。


1
构建和部署是背靠背的过程! 只有在有任何JAVA代码更改时才能进行构建。 对于仅HTML或CSS文件更新,不需要新构建。 属性文件更改需要服务器重启。 不需要部署未更改的构建ear/tar文件。 对于已更新的ear构建,在服务器上应该开始部署流程。

0

要点:

  SOURCE DEPLOYMENT MODEL
┌──────────────────────────────────────────────────────────────────────┐
│                                                                      │
│                       BINARY DEPLOYMENT MODEL                        │
│                     ┌─────────────────────────────────────────────┐  │
│                     │                                             │  │
│                     │                                             │  │
│  ┌────────┐         │  ┌─────────────┐           ┌─────────────┐  │  │
│  │ source │  BUILD  │  │ application │  DELIVER  │  installed  │  │  │
│  │  code  ├─────────┼─►│   binary    ├──────────►│ application │  │  │
│  └────────┘         │  └─────────────┘           └─────────────┘  │  │
│                     │                                             │  │
│                     │                                             │  │
│                     └─────────────────────────────────────────────┘  │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

为了更好地理解:

  BINARY DEPLOYMENT MODEL
┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│                BUILD MACHINE                                                 │
│                 ( OR FARM )                             TARGET MACHINE       │
│    ______________________________________            _____________________   │
│   /                                     /│          /                    /│  │
│  ┌─────────────────────────────────────┐ │         ┌────────────────────┐ │  │
│  │                                     │ │         │                    │ │  │
│  │ ┌────────┐          ┌─────────────┐ │ │         │   ┌─────────────┐  │ │  │
│  │ │ source │  BUILD   │ application │ │ │ DELIVER │   │  installed  │  │ │  │
│  │ │  code  ├─────────►│   binary    ├─┼─┼─────────┼──►│ application │  │ │  │
│  │ └────────┘          └─────────────┘ │ │         │   └─────────────┘  │ │  │
│  │                                     │/          │                    │/   │
│  └─────────────────────────────────────┘           └────────────────────┘    │
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

  SOURCE DEPLOYMENT MODEL
┌───────────────────────────────────────────────────────────────────────────────┐
│                                                                               │
│     BUILD MACHINE                                                             │
│      ( OR FARM )                                  TARGET MACHINE              │
│   _______________              _____________________________________________  │
│  /              /│            /                                            /│ │
│ ┌──────────────┐ │           ┌────────────────────────────────────────────┐ │ │
│ │              │ │           │                                            │ │ │
│ │  ┌────────┐  │ │           │   ┌─────────────┐         ┌─────────────┐  │ │ │
│ │  │ source │  │ │  DELIVER  │   │ application │  BUILD  │  installed  │  │ │ │
│ │  │  code  ├──┼─┼───────────┼──►│   binary    ├────────►│ application │  │ │ │
│ │  └────────┘  │ │           │   └─────────────┘         └─────────────┘  │ │ │
│ │              │/            │                                            │/  │
│ └──────────────┘             └────────────────────────────────────────────┘   │
│                                                                               │
└───────────────────────────────────────────────────────────────────────────────┘

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接