jenkins 自动化部署之简单实践

环境准备

1、安装Jenkins需要的插件
安装以下插件:Credentials Plugin(默认已经安装) #签名证书管理插件
Gitlab Plugin #安装后从 gitlab 获取代码
Git Plugin 和 Git Client Plugin ##用亍 jenkins 在 gitlab 中拉取源码
GitLab Hook #gitlab 触发 jenkins 构建项目 #hook [hʊk] 钩子 ; plugin ['plʌgɪn] 插件
gitlab Authentication # gitlab 和 jenkins 认证相关的插件
SSH Plugin #进程执行 shell 脚本
Publish Over SSH ##用亍通过 ssh 部署应用
jenkins 自动化部署之简单实践

安装插件方式选择:

方法一.如果服务器可以上网,那边选择在线安装最好丌过了,安装流程为: 系统管理(Configure
System)----插件管理(Manage Jenkins)—选择需要的插件直接安装即可
方法二.如果服务器丌能上网,那么就只能离线安装,首先去
http://updates.jenkins-ci.org/download/plugins/ 下载需要的 plugin,选择匹配的版本号,下载到本
地,然后打开:系统管理()—插件管理—高级—找到” 上传插件”(浏览,找到扩展名为.hpi 的插件,上传之
后默认直接就安装了。重启 jenkins,安装的插件就可以使用了。安装插件依赖解决:
插件安装丌上去,一定是某个地方出现问题。在 Jenkins 的终端日志中,可以查看到对应的错误。需
要针对性的解决。 比如:在安装 subversion 的时候,的错误提示。 一般的情况安装对应的插件,会把
需要依赖的插件安装上。如出现对应的依赖问题,就需要一一安装上对应的依赖包。
2、设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码
<1>部署 key, 让 root 用户可以丌输入密码, 获取 gitlab 上的源代码
jenkins 自动化部署之简单实践

[[email protected] ~]# ssh-****** #生成的公钥。 一路回车,丌要输入保护私钥的密码。
[[email protected] ~]# cat .ssh/id_rsa.pub #查看公钥

jenkins 自动化部署之简单实践
测试:

[[email protected] ~]# rm -rf xuegod-web/
[[email protected] ~]# git clone [email protected]:jenkins/test.git #发现可
以直接下载代码

3、Jenkins添加git用户root的私钥
复制 服务器 中 id_dsa.pub 里面的公钥添加到 Jenkins( private key 选项)

[[email protected] ~]# cat .ssh/id_rsa

jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践
注:这里直接复制/root/.ssh/id_rsa 中的内容。
root 公钥在 gitlab, root 私钥在 jenkins,这样 jenkins 就可以直接拉取 gitlab 上的代码
全局凭证(不受限制) unrestricted [ˌʌnrɪˈstrɪktɪd] 无限制的
jenkins 自动化部署之简单实践
4、新建任务
jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践

手动构建简单范例:

<1>安装 apache 服务

[[email protected] yum.repos.d]# yum install httpd -y
[[email protected] yum.repos.d]# vim /etc/httpd/conf/httpd.conf
改: Listen 80
为: Listen 81
[[email protected] ~]# systemctl restart httpd

访问正常: http://134.98.1.60:81/
<2>准备自劢部署 web 代码事项
1、 实现 root 用户可以无密码直接登录系统:

[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh 192.168.1.63

注:需要在哪台机器上自劢发布代码,就需要让 jenkins 这样机器的 root 用户可以免费密码登录到
那台服务器上。
2、 配置 Jenkins 用户 sudu 权限并写

[[email protected] ~]# visudo #最后添加
jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh

不需要使用密码即可执行 ssh
3、创建自劢上传 web 代码的脚本

[[email protected] ~]# vim deploy.sh #插入以下内容
#!/bin/bash
echo $USER
cd /root/test
git pull
scp -r ./* [email protected]:/var/www/html/
[[email protected] ~]# chmod +x deploy.sh
[[email protected] ~]# ./deploy.sh #确保可以无交互执行成功
[[email protected]  ~]# rm -rf /var/www/html/index.html

#把网页删除一下,一会还要测试
4、在 jenkins 的” 增加构建步骤“写入上传代码脚本
jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践
jenkins 自动化部署之简单实践
5、开始自动部署多台 web 服务器
启动 另一台 虚拟机

[[email protected] ~]# yum install httpd -y
[[email protected] yum.repos.d]# vim /etc/httpd/conf/httpd.conf
改: 42 Listen 81
为: 42 Listen 80
[[email protected] yum.repos.d]# systemctl restart httpd
[[email protected] ~]# iptables -F
登录 xuegod63,上传到 root 用户公钥
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh [email protected] #测试可以直接登录成功[[email protected] ~]# vim deploy.sh #追加一行
#!/bin/bash
echo $USER
cd /root/xuegod-web
git pull
scp -r ./* [email protected]:/var/www/html/
scp -r ./* [email protected]:/var/www/html/