在 Windows 下实现 Java + Tomcat 项目自动化构建与部署

Zadig 不仅仅是一个发布工具,更是一个打通开发与部署环节的关键利器,为团队的软件开发和交付流程注入了新的活力和效率。

在现代软件开发实践中,DevOps 理念已被广泛采纳,团队通过自动化、持续集成(CI)和持续部署(CD)等方法来提升软件交付的效率和质量。然而,由于不同团队和企业的技术环境和技术栈多样化,DevOps 解决方案必须能够适应这种异构环境,满足各种特定需求。

Zadig 作为一款全面的 DevOps 平台,提供了强大的功能和工具支持,能够适配多种操作系统和部署环境。这使得团队能够轻松实现持续交付、自动化测试和灰度发布等 DevOps 实践,显著提高软件开发和交付的效率与质量。正如我们在「Zadig 支持 Android、iOS App 自动化发布」一文中所见,Zadig 不仅支持 Kubernetes 构建基础设施,还能在 Linux、MacOS 主机上编译和发布应用。接下来,我们将进一步探讨如何在 Windows 环境下利用 Zadig 平台实践 Java + Tomcat 项目的构建与部署。

下面我们将以项目 java-tomcat-demo 为例,介绍如何使用 Zadig 在 Windows 上构建发布应用,项目源码参考:java-tomcat-demo (opens new window)

# 管理员配置

# 步骤 1:集成 Windows 主机

需要先在 Zadig 上集成主机资源,Zadig 工作流任务才可以使用主机作为构建节点,具体集成过程如下:

  1. 在 Zadig 上 「资源配置」-> 「主机管理」添加主机,填写以下必要信息。

    • 连接方式:选择 Agent 接入
    • 主机名称:用于识别主机的名称
    • 标签:工作流可以通过标签来限制任务执行的主机

  1. 在 Windows 主机上安装 Zadig Agent。根据主机的实际系统和架构选择对应的命令在主机上执行。

# 步骤 2:项目初始化配置

  1. 创建主机项目,在项目向导中配置服务的构建和部署脚本。

  1. 配置 java-tomcat 服务的构建和部署脚本。

    构建配置如下:

    • 构建环境:选择「主机」,并选择预设的 「windows」 标签
    • 代码信息:选择服务代码仓库信息
    • 通用构建脚本:选择 「Power Shell 脚本」,构建脚本供参考:
    $ErrorActionPreference = "Stop"
    
    cd zadig/examples/java-tomcat-demo
    mvn package
    tar cvf $env:PKG_FILE target
    
    • 二进制包存储:上传二进制包到对象存储,用于后续的部署任务

    部署配置如下:

    • 部署环境:选择「主机」,并选择预设的 「windows」 标签
    • 部署脚本:选择「批处理脚本」,脚本内容供参考:
    @echo off
    
    mv %ARTIFACT%  .
    tar xvf %PKG_FILE%
    %TOMCAT_HOME%\bin\shutdown.bat
    cp -r target %TOMCAT_HOME%/webapps
    %TOMCAT_HOME%\bin\startup.bat
    

  2. 创建环境 dev 和 prod,分别用于测试和生产发布。

  3. 系统自动生成两条工作流 。

    1. java-tomcat-demo-workflow-dev :用于研发联调自测
    2. java-tomcat-workflow-ops:用于生产发布,进入项目后可对工作流进行微调,加上必要的审批过程,使得生产发布更安全可靠。

# 工程师使用

# 场景一:开发工程师测试联调

开发工程师代码实现完毕后需要测试联调时,执行 java-tomcat-demo-workflow-dev 工作流,选择对应的代码信息,自动执行构建部署过程。

# 场景二:发布工程师生产发布

版本验证通过后,发布工程师执行 java-tomcat-workflow-ops 工作流,选择对应版本进行自动化发布。鉴于生产发布的严肃性,需要相关责任人对发布内容进行审批,审批人员可以通过 Zadig 工作流任务信息详细了解本次任务的具体改动,来保障发布内容的正确性和可靠性。

# 场景三:发布工程师生产回滚操作

如果生产发布的版本出现异常,可以通过访问 java-tomcat-workflow-ops 工作流历史列表页面,选择先前的发布任务,然后点击“克隆”任务来快速进行版本回滚。

# 小结

Zadig 为发布流程提供更多选择,不仅支持容器构建发布、还全面支持主机构建发布,涵盖多种操作系统,包括 Linux、MacOS、Windows 等,同时支持 AMD 和 ARM 架构,适配各种异构环境,以满足不同团队的需求。Zadig 不仅仅是一个发布工具,更是一个打通开发与部署环节的关键利器,为团队的软件开发和交付流程注入了新的活力和效率。

Background Image

作为一名软件工程师,我们一直给各行各业写软件提升效率,但是软件工程本身却是非常低效,为什么市面上没有一个工具可以让研发团队不这么累,还能更好、更快地满足大客户的交付需求?我们是否能够打造一个面向开发者的交付平台呢?我们开源打造 Zadig 正是去满足这个愿望。

—— Zadig 创始人 Landy