2018-01-16 jenkins配合码云完成自动部署
2018-01-16 本文已影响0人
张大志的博客
1、安装jenkins
在官方网站上下载jenkins的.war文件
https://jenkins.io/download/
安装java-1.8.0-openjdk-devel
安装tomcat,将jenkins.war文件放到tomcat的根目录下
安装nginx,实现用nginx反向代理至tomcat
访问如下网站就可以安装jenkins了
http://www.zhangdazhi.com:88/jenkins
将下面的密码输入即可安装
[root@beijing webapps]#cat /usr/share/tomcat/.jenkins/secrets/initialAdminPassword
0881f080a0c245789dc9d60e0fa37428
2、安装插件
image.png选择性安装如下插件
image.png
image.png
进行安装
image.png
设置登录到jenkins的账号和密码
image.png
3、配置jenkins
设置认证
image.png
image.png
image.png
image.png
添加一个远程主机ssh连接时的用户名和密码
image.png
添加一个jenkins连接到码云时,登录到码云的用户名和密码
image.png
进行管理配置
image.png
image.png
image.png
点击保存即可
4、创建任务
将码云上的代码先同步到jenkins主机,再通过在远程主机上执行命令拷贝到远程主机上,并对之前的版本进行备份
image.png
image.png
image.png
这里要在jenkins主机安装git
image.png
点击保存,注意这里要在远程部署的主机上安装rsync,并且将部署的主机的公钥传给jenkins主机,实现ssh秘钥验证,不然在部署的远程主机上执行命令的时候要输入jenkins主机的密码
5、测试
在码云上上传一个代码1.txt
image.png
[root@beijing app]#cd /usr/share/tomcat/.jenkins/workspace/
[root@beijing workspace]#ls
p1 p1@tmp
[root@beijing workspace]#cd p1
[root@beijing p1]#ls #在jenkins主机发现码云上的代码已经同步到jenkins主机的工作目录中
1.txt README.md
[root@luoshanji p1]#cd /app/p1 #在部署的远程主机上查看已经复制到网站的目录
[root@luoshanji p1]#ls
1.txt README.md
[root@luoshanji p1]#cd /data/backup/
[root@luoshanji backup]#ls #发现之前的版本已经备份
p1.2018-01-15-23:42:19 p1.2018-01-15-23:49:10
使用sync命令可以只复制改变的文件,文件内容没有发生改变的不会复制,达到增量复制的目的。
6、利用webhook实现自动触发任务
当码云上有新代码上传时会自动进行部署,可以用于测试环境,生产环境尽量不要自动触发
在jenkins上安装Generic Webhook Trigger Plugin插件
image.png
image.png
进入用户,查看admin用户的API TOKEN
image.png
进入安全设置
image.png
在码云上的设置
image.png
点击测试出现ok说明成功
image.png
URL地址格式:
image.png
其中admin:为登录jenkins的用户
219e636506d591d97e9d28bde3ad9ea8:为API TOKEN
@47.94.103.240:88/jenkins/:为jenkins主机的地址
generic-webhook-trigger/invoke?:不用变
token=p1: 为触发器中设置的Request parameters
测试
在码云上上传一个代码,看能否自动触发任务
[root@luoshanji yum.repos.d]#cd /app/p1
[root@luoshanji p1]#ls #发现代码已经自动部署到远程主机上
1.txt 2.txt README.md
[root@luoshanji p1]#cd /data/backup/
[root@luoshanji backup]#ls #并且已经备份了
p1.2018-01-15-23:42:19 p1.2018-01-15-23:49:10 p1.2018-01-16-00:45:35 p1.2018-01-16-00:48:49
[root@luoshanji backup]#cd p1.2018-01-16-00:48:49
[root@luoshanji p1.2018-01-16-00:48:49]#ls
1.txt README.md