2018-01-16 jenkins配合码云完成自动部署

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

image.png

将下面的密码输入即可安装

[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