完整的流程应该是:
1. 拉取Git源代码
2. 通过参数选择构建的分支/标签
3. Maven构建项目
4. 归档构建构件
5. Git Publisher推送代码
6. (可选)创建构建版本的Git标签并推送
7. 保存并运行构建
8. 将构建的程序包如war/jar文件通过如rsync部署到远程服务器
9. 在服务器上备份旧的程序包文件,或者直接删除
10. 将新的程序包文件重命名并替换旧的程序包
11. 重启应用,加载新部署的程序包
所以相比之前的步骤,我们新增了:
8. 添加构建后操作“Execute shell script”来使用rsync(或其他工具)将构建的程序包部署到服务器
9. 在脚本中,通过SFTP等在远程服务器上备份现有的程序包文件
10. 重命名新程序包文件,并替换现有程序包文件
11. 重新加载应用,载入新部署的程序包
这样,我们通过Jenkins构建Maven项目,同时部署了最新构建的程序包更新到服务器上并重启应用。
整个部署流程变为:
持续集成(CI,Jenkins构建项目) -> 持续交付(CD,部署新的程序包) -> 持续部署(更新应用)
这就是一个基本的CI/CD流程。当有新代码提交时,通过Jenkins自动构建,并将新编译的程序包部署到服务器上,重启应用,完成代码的自动化构建、部署上线。
以下为图示:
这里列出了Jenkins Git参数化构建过程中可能用到的参数:
Name:参数名称
Description: 参数描述
Parameter Type: 参数类型,可以是String, Choice, Boolean等
Tag: 参数标签,用于标记参数,方便过滤
Branch: 构建的分支,可以输入分支名称或正则表达式来过滤分支
Branch filter:同上,另一种选择分支的方式
Tag filter:构建的Tag,可以输入Tag名称或正则表达式
Sort mode: 构建记录的排序方式,如按时间升序或降序等
Quick filter:快速过滤器,用于过滤构建记录
下面是一个示例:
Name Description Parameter Type Tag
Branch Name Branch to build String branch
Tag Name Tag to build String tag
Commit ID Specific commit to build String commit
Build Mode Mode to use for build Choice: FULL,INCREMENTAL mode
Run Tests Run unit tests Boolean test
Debug Build Enable debug option Boolean debug
Branch Name: master
Tag Name:
Commit ID:
Build Mode: FULL
Run Tests: true
Debug Build: false
Default Value: 分支或标签的默认构建值
Selected value: 选中的值,从Default Value中选择
NONE:无默认值或选择值
TOP: 最新构建
DEFAULT: 默认构建
ASCENDING: 升序排序
DESCENDING: 降序排序
SMART:智能排序,新的构建记录会置顶
所以,在Jenkins Git参数化构建中,我们可以定义各种参数,选择分支、标签、提交ID等来触发构建,并且可以设置各种过滤及排序方式,实现更加灵活复杂的构建策略
添加jks服务器账户密码,用来推送代码,以及执行一一些脚本命名
添加打包参数,以及安装Maven插件,安装rsync进行程序包同步
安装maven,jdk,git,并指定绝对路径。
输入pom文件,以及打包参数
Maven clean和package命令有很多 useful的参数,常用的有:
-P或者–activate-profiles :激活指定的profile。
-pl或者–projects
-am或者–also-make:如果一个项目产生的构建结果是其他项目运行所必需的,这个选项可以在构建时生成所需要的子项目。
-amd或者–also-make-dependents:像-am而且构建子项目所依赖的项目。
-N或者–Non-recursive:构建本项目,而不构建子项目。
-rf或者–resume-from :从指定的生命周期阶段恢复构建。
-U或者–update-snapshots:触发创建最新的snapshot版本。
-T或者–threads :设置线程数。
-D或者-define :定义系统属性。
-f或者–file :指定POM文件。
你提到的两个参数:
-P test :激活test profile。
-Dmaven.test.skip=true :定义maven.test.skip系统属性为true,跳过测试。
所以,那条命令的意思是:
使用clean package令,激活test profile,同时定义maven.test.skip=true属性以跳过测试。
这相当于执行了一条干净的打包命令,而无需执行测试。
除了这两个参数,我们还经常会使用的参数有:
-pl 指定构建某个子模块
-am/-amd 构建依赖项目
-N 非递归构建,只构建自己不构建子模块
-rf 从指定生命周期阶段恢复构建
-T 设置线程个数
等等。
所以通过搭配使用各种Maven参数,我们可以实现比较灵活和强大的构建配置。
构建出war包、或者jar包。然后把程序包推送到服务器,并重启
构建后的操作,以上即是maven项目构建流程。