之前对Jenkins管理SVN源码的逻辑不太清楚,简单研究了一下。对于一般的开发通常会有以下三个环境:
1、svn服务器
2、Jenkins服务器
3、开发服务器(部署测试版web应用或者其他应用)
当然以上三者也可以在同一个服务器上,只是不同的工作目录
简要阐述一下Jenkins的工作原理:
a,首先更新svn上面的源代码或其他文件到Jenkins指定的工作区间
b,在Jenkins工作区做一定的加工,例如:简单的打包(mvn打包)或压缩文件。
c,将目标产物部署到开发或者生产服务器。通常的做法是远程ssh目标服务器,上传产物(war包或者其他文件),远程启动服务。
- 配置SVN,下面👇的图配置的是svn的信息,注意Local module directory指的是相对于Jenkins工作目录的,如果这里是.代表该job在Jenkins的工作目录,作为svn更新的目录。此处的配置和步骤a设置对应。
- 配置在工作区执行任务(通常为打war/jar包压缩等工作),下图为简单的压缩归档打包,--exclude-vcs为不包括svn的配置文件。此步骤和上面的步骤b对应。
对于maven项目来说,这一步为打包,如下图:
- 第三部通常是传输目标产物到服务器(开发或者生产),然后启动服务等操作。通常是通过ssh到远程服务器进行。下图的name为实现配置好的ssh连接,也就是要ssh的服务器。下面的Transfer为目标产物传输步骤。
Source files:代表当前Jenkins工作目录步骤b处理好的产物
Remove prefix:字面意思就是移除目录前缀,比如:jenkins中目标产物的全路径是biz-web/target/*.war,但是只想把war拷贝过去,这个时候Remove prefix就填biz-web/target
Remote directory:是相对于ssh目录的,如果不存在则会在远程服务器相对于ssh根目录创建改目录。
Exec command:就是在远程server在执行的命令,比如启动web服务,我们这里有一个用法定期执行服务器上的集计job(由shell调用kettle执行job)