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
添加[email protected]:xuegod/xuegod-web.git
选择刚添加的私钥的用户admin
保存

安装httpd
修改端口为81
实现 root 用户可以无密码直接登录系统
ssh-copy-id [email protected]
如果你的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 ./* [email protected]:/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 [email protected] ./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 安装插件-》创建新项目-》绑定私钥-》添加触发器-》测试部署

你可能感兴趣的:(gitlab+jenkins持续集成)