白癜风怎么看好 http://m.39.net/pf/a_4692532.html文章来源网络
点击蓝字:波哥的IT人生,
通过gitlab+Jenkins实现代码的自动更新同步代码到web服务器站点目录。此处示例后端web服务器使用nginx。本次项目示例使用码云上面的一个html项目(
首先我们在gitlab上面创建一个群组,并创建一个dev开发用户(用于提交代码等),同时在Jenkins服务器上面生成ssh秘钥并将key添加到新建用户dev的ssh认证下面,并创建一个代码仓库,并将代码copy进去。
具体操作步骤:
(1)登录gitlab点击项目,然后点击创建一个群组
(2)点击新建群组
(3)输入新建群组的相关信息并点击创建
(4)点击设置选择新建用户
(5)输入账号相关信息并点击创建用户
(6)点击编辑,为上面新创建的用户设置密码
(7)给这个账号设置密码并保存
(8)将上面创建的用户添加到devops组中并给与开发者权限
(9)找到刚刚创建的dev用户并给予开发人员权限,然后增加用户到群组
(10)回到Jenkins上面生成ssh秘钥
[root
jenkins~]#ssh-keygen[rootjenkins~]#cat.ssh/id_rsa.pubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCt9+3rxKFGTEeT4F4q4AEc+So3A4jMBMpW6Ojoy5h1VQhNVV6meuOGp7ltJXtmY0Bm7tw8S/KDVXPSCvDi3QQgzWe2ZQmG+Y62SKcXpDxOJue98OHDNoxcm2kJl/xeFZddQZd6eohbBA9Au4SPMINLsGR6MEYXH4JHM6rXzf9QN4Q5GYYEFTTZvu/PxoDq46+A/mkO5aklBjaih6YSH3q7nr2rEhQJ64b6wEkfBjptfzKm54TZBJAPzycHrXe5P68tPZ2CNgJN+40XGrkg/MVjf9D9EwjyvsNcdLzTHDsClc3Jh8/8tfSFFzVFonyKyjal9amCvzdVbnUEqQSgRTWTrootjenkins
(11)回到gitlab服务器上面使用dev用户登录,然后点击头像选择设置
(12)上面的设置点进来后,选择SSH秘钥,然后复制Jenkins服务器上生成的秘钥然后点击增加秘钥
(13)切回root用户,新建一个项目
(14)选择导入项目并输入相关信息,然后点击创建项目
(15)导入成功后可以看见代码和导入成功提示,至此gitlab暂时部署到此
Jenkins配置
说明:
还是使用前面示例创建的My-freestyle-job项目,配置导入上面gitlab创建的项目
具体操作步骤:
(1)点击项目名称开始配置
(2)上面点击进去后点击配置
(3)选择源码管理,选Git,输入仓库URL地址(如果下方出现红色及表示出错了),然后选择保存
(4)立即构建
(5)查看构建详细信息
(6)进入到服务器中查看项目目录是否将代码拉取成功
[root
jenkins~]#cd/var/lib/jenkins/workspace/My-freestyle-job/[rootjenkinsMy-freestyle-job]#ls.htmlefficiencyAnalysis.htmljsother-
此处我们直接yum安装nginx,站点目录就用默认的/usr/share/nginx/html目录。
详细操作步骤:
(1)安装nginx并修改测试页面
[root
web-nginx~]#yuminstallnginx-y[rootweb-nginx~]#ll/usr/share/nginx/总用量0drwxr-xr-x.2rootroot月:13html[rootweb-nginx~]#echo"h1WebServer/h1"/usr/share/nginx/html/index.html[rootweb-nginx~]#systemctlstartnginx[rootweb-nginx~]#curl-IlocalhostHTTP/1.OKServer:nginx/1.12.2Date:Wed,27Mar:37:45GMTContent-Type:text/htmlContent-Length

ast-Modified

ue,06Mar:26:21GMTConnection:keep-aliveETag:"5a9e5ebd-e74"Accept-Ranges:bytes
(2)访问nginx服务器
nginx站点部署ok,接下来就是实现如何构建够自动同步到nginx服务器
自动化同步代码
说明:
上面已经完成了Jenkins从gitlab上面拉取代码,及nginxweb服务器站点的布置,现在需要实现的是如何Jenkins上面构建后自动同步到web服务器。想一下,在上面我们可以执行shell命令,那么一定也就可以执行shell脚本。so我们编辑一个同步脚本,然后构建触发脚本同步到web服务器上面。
具体操作步骤:
(1)在Jenkins服务器上面编写同步脚本,由于是通过脚本拷贝到web服务器的站点目录,所以需要先做一个ssh秘钥认证
[root
jenkins~]#ssh-copy-id-i..1.26[rootjenkins~]#mkdir/server/scripts-p[rootjenkins~]#cd/server/scripts/[rootjenkinsscripts]#vimdeploy.sh#!/bin/bashCODE_DIR="/var/lib/jenkins/workspace/My-freestyle-job/"#项目目录DATE_TIME=`date+%Y-%m-%d-%H-%M-%S`#时间格式TAR_NAME=web-${DATE_TIME}.tar.gz#打包后的名字WEB_ADDR=..1.26#web服务器地址WEB_DIR="/usr/share/nginx/"#web服务器站点目录的上一级"/usr/share/nginx/html"WEB_NEWDIR_NAME=web-${DATE_TIME}#web服务器新建的站点目录名字#进入到项目目录并进行打包代码tarcf_code(){cd$CODE_DIRtarczf/opt/$TAR_NAME./*}#拷贝到web服务器的站点目录的上一级scp_code(){scp/opt/$TAR_NAME$WEB_ADDR

WEB_DIR}#连接web服务器进行解压压缩包到新的一个已时间命名的站点目录tarxf_code(){ssh$WEB_ADDR"cd$WEB_DIRmkdir$WEB_NEWDIR_NAMEtarxf$TAR_NAME-C$WEB_NEWDIR_NAME"}#将新建的站点目录与html站点目录做一个软链接ln_code(){ssh$WEB_ADDR"cd$WEB_DIRrm-rfhtmlln-s$WEB_NEWDIR_NAMEhtml"}del_code(){ssh$WEB_ADDR"cd$WEB_DIRrm-rf$TAR_NAME"}main(){tarcf_code;scp_code;tarxf_code;ln_code;del_code;}main
(2)配置Jenkins,使用Jenkins调用部署脚本(此处写脚本全路径脚本名称)
(3)配置自动触发构建、需要设置安全令牌Secrettoken,进入项目选择配置,设置相关信息,然后生成token,复制token(需要填写到gitlab上面)和Buildwhenachang上面提示的URL地址(