0

经理授予我们的团队为生产服务器创建自动构建\部署脚本的任务。

脚本要求是:

  1. 从 git 获取 web 应用程序的最新版本 src 代码。
  2. 编译-> WAR
  3. 连接到远程服务器(生产\测试)
  4. 远程关闭tomcat服务器
  5. 在远程数据库服务器上执行模式更新(对于新版本)
  6. 将新战争部署到 tomcat 并启动它。

我的问题是:

  1. 构建\部署区域中的所有 3 个主要参与者都可以做到这一点(ant \ maven \ gradle)吗?
  2. 正在构建一个执行此确切步骤的小型应用程序(java 应用程序)是一种好习惯吗?(可能写一个java应用程序会比在maven \ ant \ gradle中学习要快得多)
  3. 这种工作有什么替代工具吗?
  4. 整个“构建机器”的想法有更好的选择吗?

谢谢!

4

1 回答 1

0

构建/部署领域的所有 3 个主要参与者都可以做到这一点(ant/maven/gradle)吗?

通过对目标/目标的足够定制,这些中的任何一个都可以做你想做的事。

构建一个执行此确切步骤的小型应用程序(java 应用程序)是一种好习惯吗?

您当然可以(或只使用 shell 脚本),这与自定义前面列出的构建工具本质上是一样的。

这种工作是否有任何替代工具?

我的公司专门创建了BuildMaster来解决与部署相关的这些和其他问题,听起来免费版本可能适合您的场景。

基本的解决方案是:

  1. 通过添加 Git 源代码控制提供程序(或者如果您使用 GitHub,GitHub 提供程序)连接到 Git
  2. 将代理连接到目标服务器并将其添加到 BuildMaster(Windows 需要安装,但如果部署到 Linux,它只使用 SSH 连接)
  3. 在您的部署计划中,您将使用以下操作:
    1. “Build Ant Project”或“Execute Maven”来执行实际的构建过程
    2. “创建构建工件”将构建输出(无论是 WAR 文件或其内容)与 BuildMaster 构建相关联
    3. “Stop Service”停止Tomcat
    4. “执行数据库脚本”以在磁盘上执行脚本(无论您是从源代码中提取它们还是其他)或“执行数据库更改脚本”,如果您已将它们上传到 BuildMaster,它们会自动运行
    5. “Deploy Build Artifact”将之前捕获的artifact部署到远程服务器
    6. “启动服务”Tomcat

这种方法的巧妙之处在于,当您创建此部署计划时,它的内容与上述步骤中写出的内容非常相似。

可能与您的确切场景相关或不相关的其他好处可以轻松添加,包括:

  • 批准和签核- 工作流可以指定这些以确保 QA 签核发生在升级之前
  • 发布管理和审计——知道什么构建在什么环境中,什么时候去那里
  • 可变部署- 例如,您可以将分支逻辑添加到部署计划中,以便轻松选择“调试”或“发布”构建是否进行测试。
  • 通知- 用户可以订阅某些事件(部署、发布等)并在这些事件发生时接收电子邮件通知
于 2013-11-08T00:11:44.793 回答