svn+jenkins自动部署
- 需求:项目经理想要将原型图修改完后直接发布
前置条件:
-
已经有了svn服务器,并正常使用
-
已经有了jenkins服务器,之前搭建的gitlab+jenkins,
- 如需搭建jenkins,参考 https://www.cnblogs.com/lz0925/p/10858278.html,
- 如需自动部署到远程服务器,参考 https://www.cnblogs.com/lz0925/p/10860460.html
步骤
-
1、首先在jenkins上添加svn凭据,配置svn权限
-
点击凭据,然后点击任一(global)进入凭据管理
-
点击左侧的添加凭据
-
其中的用户名密码,是svn的账号密码,填错的话,创建jenkins任务时会提示
-
-
2、创建一个自由风格的jenkins项目
- General部分,根据自己需求设置,也可以不设置
- 源码管理 ,这里的Credentials就是我们刚添加的svn账号密码,Repository URL 填写项目地址
- 然后保存,在任务列表中找到刚建立的任务并点击进入,点击左侧立即构建测试一下,如果正常,进行下一步
-
3、配置svn的钩子
- 进入svn服务器,进入svn的钩子目录,我的目录是/home/svn/MyRepository/hooks
- 下载jenkins命令行客户端 wget http://172.168.50.41:9999/jnlpJars/jenkins-cli.jar,(如遇到权限问题,尝试修改文件所属用户和组,我的用户和组都是root)
- 复制一份post-commit.tmpl模板,名称改为post-commit,赋予777权限
- vim post-commit
#!/bin/bash
# source /etc/profile
java -jar /home/svn/MyRepository/hooks/jenkins-cli.jar -s http://172.168.50.41:9999/ -auth admin:jinglan build svn_test
保存退出
其中
-s http://172.168.50.41:9999/ 是jenkins服务器
-auth admin:admin 是jenkins用户名和密码
-build svn_test 是指定构建jenkins的任务名称,
其实这里还需要指定svn中的哪个项目的commit动作,触发哪个jenkins的任务 ,
通过REPOS="$1" 判断即可,
我这自动部署的项目都在gitlab上,svn仅部署项目经理用的这个文件夹,所以没有进行判断
- 现在可以在本地修改文件,通过svn的commit即可部署到指定服务器的指定目录了。
- 如有jenkins不会用的,参考文章开头的两篇博客,如需构建后删除旧文件的,可以自己写文本,然后执行,或者直接将脚本写到jenkins中
知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。
所谓诚其意者,毋自欺也。