幽门梗阻

注册

 

发新话题 回复该主题

GitLabJenkins持续集成自 [复制链接]

1#
白癜风怎么看好 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[root

jenkins~]#cat.ssh/id_rsa.pubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCt9+3rxKFGTEeT4F4q4AEc+So3A4jMBMpW6Ojoy5h1VQhNVV6meuOGp7ltJXtmY0Bm7tw8S/KDVXPSCvDi3QQgzWe2ZQmG+Y62SKcXpDxOJue98OHDNoxcm2kJl/xeFZddQZd6eohbBA9Au4SPMINLsGR6MEYXH4JHM6rXzf9QN4Q5GYYEFTTZvu/PxoDq46+A/mkO5aklBjaih6YSH3q7nr2rEhQJ64b6wEkfBjptfzKm54TZBJAPzycHrXe5P68tPZ2CNgJN+40XGrkg/MVjf9D9EwjyvsNcdLzTHDsClc3Jh8/8tfSFFzVFonyKyjal9amCvzdVbnUEqQSgRTWTroot

jenkins

(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/[root

jenkinsMy-freestyle-job]#ls.htmlefficiencyAnalysis.htmljsother-
  此处我们直接yum安装nginx,站点目录就用默认的/usr/share/nginx/html目录。

详细操作步骤:

(1)安装nginx并修改测试页面

[root

web-nginx~]#yuminstallnginx-y[root

web-nginx~]#ll/usr/share/nginx/总用量0drwxr-xr-x.2rootroot月:13html[root

web-nginx~]#echo"h1WebServer/h1"/usr/share/nginx/html/index.html[root

web-nginx~]#systemctlstartnginx[root

web-nginx~]#curl-IlocalhostHTTP/1.OKServer:nginx/1.12.2Date:Wed,27Mar:37:45GMTContent-Type:text/htmlContent-Lengthast-Modifiedue,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[root

jenkins~]#mkdir/server/scripts-p[root

jenkins~]#cd/server/scripts/[root

jenkinsscripts]#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_ADDRWEB_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地址(

分享 转发
TOP
发新话题 回复该主题