gitlab+jenkins持续集成

环境:centos7.4 jdk1.8 jenkins-2.93-1.1.noarch.rpm
由于centos7.4自带openjdk1.8,无需安装jdk
cd /etc/yum.repos.d/
wget http://pkg.jenkins.io/redhat/jenkins.repo
rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
此处采用rpm包安装2.93-1版

1.1环境准备
新版 GitLab 的服务端口为 8080,为了丌和 GitLab 的服务端口相冲突,修改Jenkins 的默认端口 8080 为 198
vim /etc/sysconfig/jenkins 配置文件路径
/var/log/jenkins/jenkins.log 日志路径
修改port为198

centos 6上
[root@xuegod63 ~]# /etc/init.d/jenkins start #启劢
[root@xuegod63 ~]# chkconfig jenkins on #设置开机启劢
[root@xuegod63 ~]# chkconfig --list jenkins

centos7上systemctl
开始报错
Caused by: java.net.SocketException: 权限不够
Jenkins 默认使用的是 jenkins 用户,因此也就出现日志中的权限问题了。修改 Jenkins 的默认用户为 root。
vim /etc/sysconfig/jenkins 修改用户为root

jenkins安装插件
会提示版本太低升级版本,这里在线自动升级版本
localization-zh-cn #中文补丁
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 部署应用

1.1.2部署秘钥
在gitlab的设置版本库里添加公钥
ssh-keygen一路回车,cat id_rsa.pub
粘贴进去

在Jenkins的凭据-系统-全局凭据中添加ssh私钥
cat /root/.ssh/id_rsa
粘贴进去

Jenkins新建项目-自由风格
项目名:xuegod-web-test
源代码管理选git
添加git@10.10.10.27:xuegod/xuegod-web.git
选择刚添加的私钥的用户admin
保存

安装httpd
修改端口为81
实现 root 用户可以无密码直接登录系统
ssh-copy-id root@10.10.10.27
如果你的Jenkins是普通用户运行的,还需要在visudo里添加无密码ssh
visudo
jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh
开启httpd服务访问一下81端口,确认服务正常运行

2.1.1 编写自动上传代码脚本

mkdir /script
[root@master01 script]# cat deploy.sh
#!/bin/bash
echo $USER
cd /root/test/xuegod-web
git pull
scp -r ./* root@10.10.10.27:/var/www/html/
[root@master01 script]# ./deploy.sh 
root
Already up-to-date.
index.html                                           100%   13     4.3KB/s   00:00    

访问10.10.10.27:81,确保可以无交互执行成功

2.2.1使用jenkins自动上传代码
rm -rf /var/www/html/index.html 删除
在 jenkins 的”增加构建步骤“写入上传代码脚本
进入项目-配置-构建环境-增加构建步骤
选择shell,写入
sudo ssh root@10.10.10.27 ./script/deploy.sh
保存
点击立即构建,即可构建

当前页下有 last build(#1)之类的操作日志,点击倒三角
选择控制台,可以看到日志操作

2.2.2 实现 gitlib 触发 Jenkins 自动部署
1、安装 Gitlab Hook Plugin 插件:

系统管理-管理插件-可选插件,安装这两个插件:Gitlab Hook Plugin 和 Build Authorization

Token Root 和 Build Token Trigger
2.配置身份验证令牌
生成 Token ,openssl rand 生成随机密码
[root@xuegod63 ~]# openssl rand -hex 12
c8533923fcfaa8bd2b54ac35
在jenkins里
构建触发器,勾上“GitHub hook trigger for GITScm polling”
在 git 项目配置界面设置链接和 token
项目-设置-集成
使用这个:
http://10.10.10.27:198/buildByToken/build?job=xuegod-web-test&token=c8533923f
cfaa8bd2b54ac35
格式:http://jenkins 地址/buildByToken/build?job=jenkins 项目名&token=token 值
增加钩子
test钩子 201即成功

2.2.3 测试 gitlab 触发 jenkins 自动部署
向 git 服务器提交代码,验证是否可以自动部署:
[root@xuegod63 xuegod-web]# cd /test/xuegod-web/
[root@xuegod63 xuegod-web]# echo "token test" >> index.html
[root@xuegod63 xuegod-web]# git add index.html
[root@xuegod63 xuegod-web]# git commit -m "modify index.html"
[root@xuegod63 xuegod-web]# git push -u origin master
访问 web 界面验证代码是否最新的:

总结步骤: gitlab 创建代码项目-》gitlab 部署公钥-》jenkins 安装插件-》创建新项目-》绑定私钥-》添加触发器-》测试部署

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容