Winse Blog

走走停停都是风景, 熙熙攘攘都向最好, 忙忙碌碌都为明朝, 何畏之.

Jenkins Start Guide

从原始的Eclipse右键导出打包,到后面使用maven打包,就单自己一个人使用开发部署是完全没问题的。现在的jenkins是对工具的封装、可视化和自动化,对于团队合作还是有一定的作用的,时时刻刻告诉我们代码是可运行的。

但是如果一个很久前的项目,又需要新加/修改功能,一下子还捡不起来,不放心啊还得验证一把。还有就是,测试有时刻他们自己打包,不会的还的教她们使用工具,人家烦自己也累。

jenkins是一个持续集成的工具,原来也接触过,但是都没用起来,都是搞开发,大部分时刻都能自己搞定。当下由于情况比较特殊,很多代码都直接在生产改,测试环境就不顾上了,但是测试环境不能总是旧代码啊,就想着有个自动化的东西来进行部署。

主要就是完成一个代码自动化部署的工作:自己搭建一个jenkins,从oschina上拉代码,编译后部署到tomcat并重启。

安装Jenkins

1
2
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
nohup java -jar jenkins.war --httpPort=8081 >/var/log/jenkins.log 2>&1 & 

建立到oschina的无密钥登录

由于项目是私有的,通过https需要输入密码,还是git方式无密钥登录方式便捷一些。本地linux执行ssh-keygen,然后把 id_rsa.pub 的内容拷贝到项目的公钥处进行配置。可以参考文档: http://git.mydoc.io/?t=154712

也可以结合 本地ssh-agent 和 ssh-forward 来弄。

配置项目

第一次登录需要进行一些配置,默认创建的admin密码会保存在 ~/.jenkins/secrets/initialAdminPassword 。(在初始化页面创建新用户报错,也不知道啥原因。登录后再建吧)

新版本的按照默认安装插件还不够,需要再添加一些。登录成功后,添加如下插件:

  • Deploy to container Plugin 把war发布到容器tomcat…
  • Nexus Artifact Uploader 上传jar到私服
  • Maven Integration plugin 集成maven

  • ThinBackup 备份也是有必要的,用的越久越是必要!!

配置maven:

自己下载个maven解压后,在jenkins - Global Tool Configuration上面配置maven地址即可(把 自动安装 的勾去掉就可以填地址了)

然后配置JOB:

  • 构建一个maven项目:填任务的名称,然后点击左下角的OK
  • 源码管理git: 填写地址,然后新增Credentials - SSH Username with private key - From the Jenkins master ~/.ssh 起一个容易区分的名字
  • 构建触发器: Build periodically - 0 0 * * * 每天一次
  • Build:web/pom.xml ; clean package -Papp,dist -DskipTests 就是mvn命令的一串参数
  • Post Steps: Run only if build succeeds - Execute Shell
1
2
3
4
5
6
/opt/apache-tomcat-8.0.26/bin/shutdown.sh ; sleep 1 
rm -rf /opt/apache-tomcat-8.0.26/webapps/app.war 
cp $WORKSPACE/web/app/target/app.war /opt/apache-tomcat-8.0.26/webapps 
cd /opt/apache-tomcat-8.0.26/webapps ; ./deploy.sh 
BUILD_ID=dontKillMe nohup /opt/apache-tomcat-8.0.26/bin/startup.sh & 
sleep 3

注意:这里的BUILD_ID挺有意思的!!!

也可以配置 构建后操作 把包发布到tomcat manager(呵呵,无奈原始包webapps下的都被我删了),就用脚本弄了。

构建

完成上面的操作后,就可以执行跑一次看看效果了。其他的还有很多功能:权限等。

多节点(集群)

如果只有一台jenkins的时刻,远程发布项目一般都scp或者使用tomcat-manager进行处理,如果把部署的机器作为jenkins node的话,就可以把部署的任务放到该节点本地跑,就不需要考虑远程部署的问题了。

配置节点: windows

1
2
用法   : 只允许运行绑定到这台机器的Job
  启动方法 : Launch slave agents via SSH(在主机配置无密钥登录,填用户、Private key:From the Jenkins master ~/.ssh)

配置好后,在界面点击 Launch agent,会把agent拷贝到机器并启动agent。

然后任务的话,配置 Restrict where this project can be run

参考

–END

Comments