CentOS 7 Gitlab+Jenkins持续集成+自动化部署
基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署
系统管理–>插件管理–>安装以下插件:
Credentials Plugin(默认已经安装) # 签名证书管理插件
Gitlab Plugin # 安装后从gitlab获取代码
Git Plugin 和 Git Client Plugin # 用于jenkins在gitlab中拉取源码
GitLab Hook # gitlab触发jenkins构建项目
gitlab Authentication # gitlab和jenkins认证相关的插件
SSH Plugin # 进程执行shell脚本
Publish Over SSH # 用于通过ssh部署应用
如果可选插件里面没有到已安装的里面查一下
将代码发布到web服务器
通过执行脚本或者命令的方式来发布代码 , 注意权限的问题 , 如果不是root用户要保持所有服务器上的用户ID一致
安装apache
[root@Web ~]# yum -y install httpd [root@Web ~]# systemctl start httpd
准备自劢部署 web代码事项
实现root用户可以无密码直接登录系统
# 在哪台机器上自劢发布代码,就需要让jenkins的root用户可以免密登录到那台服务器上 [root@Jenkins ~]# ssh-copy-id root@192.168.94.33 [root@Jenkins ~]# ssh 192.168.94.33
# 如果使用的不是root用户 , 而是普通用户 ,那么要授予普通用户sudo权限, 例:visudo添加 jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh
创建自动上传web代码的一个简单的脚本 , 实际还需要备份
[root@Jenkins ~]# vim push.sh #!/bin/bash cd /root/damowang.cn-web git pull scp -r ./* root@192.168.94.33:/var/www/html [root@Jenkins ~]# chmod +x push.sh
配置Jenkins
浏览器访问web服务器
实现Gitlib触发Jenkins自动部署
是在公司的测试环境当中,当开发人员向gitlab仓库提交代码后,gitlab自动通知jenkins进行构建项目、代码质量测试然后部署至测试环境,对生生产环境,后期使用手动部署代码
安装Gitlab插件
系统管理-管理插件-可选插件,安装Gitlab Hook Plugin和Build Authorization Token Root 以及 Build Token Trigger
配置身份验证令牌
生成Token
[root@Jenkins ~]# openssl rand -hex 12 8bde00c8584aa806692e69b4
在git项目配置界面设置链接和token
格式 : http://"jenkins地址"/buildByToken/build?job="jenkins项目名"&token="token值"
测试gitlab触发jenkins自动部署
[root@Gitlab ~]# cd damowang.cn-web/ [root@Gitlab damowang.cn-web]# echo "521" >> index.html [root@Gitlab damowang.cn-web]# git add index.html [root@Gitlab damowang.cn-web]# git commit -m "loewife index.html" [master 6c6f9df] loewife index.html 1 file changed, 1 insertion(+) [root@Gitlab damowang.cn-web]# git push -u origin master Counting objects: 5, done. Writing objects: 100% (3/3), 270 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.94.11:damowang/damowang.cn-web.git 8bedbbb..6c6f9df master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。
访问web页面查看代码是否更新
到这已经实现自动拉取Gitlab代码+自动部署代码到测试环境
下面增加Build Pipeline插件以流程图的形式展示各个Job的顺序
这个插件能够以流程图的形式展示各个Job 顺序,依赖关系等等
下载完之后点击新建视图