构建/部署领域的所有 3 个主要参与者都可以做到这一点(ant/maven/gradle)吗?
通过对目标/目标的足够定制,这些中的任何一个都可以做你想做的事。
构建一个执行此确切步骤的小型应用程序(java 应用程序)是一种好习惯吗?
您当然可以(或只使用 shell 脚本),这与自定义前面列出的构建工具本质上是一样的。
这种工作是否有任何替代工具?
我的公司专门创建了BuildMaster来解决与部署相关的这些和其他问题,听起来免费版本可能适合您的场景。
基本的解决方案是:
- 通过添加 Git 源代码控制提供程序(或者如果您使用 GitHub,GitHub 提供程序)连接到 Git
- 将代理连接到目标服务器并将其添加到 BuildMaster(Windows 需要安装,但如果部署到 Linux,它只使用 SSH 连接)
- 在您的部署计划中,您将使用以下操作:
- “Build Ant Project”或“Execute Maven”来执行实际的构建过程
- “创建构建工件”将构建输出(无论是 WAR 文件或其内容)与 BuildMaster 构建相关联
- “Stop Service”停止Tomcat
- “执行数据库脚本”以在磁盘上执行脚本(无论您是从源代码中提取它们还是其他)或“执行数据库更改脚本”,如果您已将它们上传到 BuildMaster,它们会自动运行
- “Deploy Build Artifact”将之前捕获的artifact部署到远程服务器
- “启动服务”Tomcat
这种方法的巧妙之处在于,当您创建此部署计划时,它的内容与上述步骤中写出的内容非常相似。
可能与您的确切场景相关或不相关的其他好处可以轻松添加,包括:
- 批准和签核- 工作流可以指定这些以确保 QA 签核发生在升级之前
- 发布管理和审计——知道什么构建在什么环境中,什么时候去那里
- 可变部署- 例如,您可以将分支逻辑添加到部署计划中,以便轻松选择“调试”或“发布”构建是否进行测试。
- 通知- 用户可以订阅某些事件(部署、发布等)并在这些事件发生时接收电子邮件通知