持续集成Jenkins+Gitlab

持续集成Jenkins+Gitlab

0.1 2018.04.21 15:11* 字数 1203 阅读 760评论 3喜欢 17

1、相关概念

1.1 持续集成:

持续集成(Continuous Integration),简称CI,是指开发者在代码的开发过程当中,能够频繁的将代码部署集成到主干,并进程自动化测试。java

 
CI

1.2 持续交付:

持续交付(Continuous Delivery),指的是在持续集成的环境基础之上,将代码部署到预生产环境node

 
CD

1.3 持续部署:

持续部署(Continuous Deployment),是指在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的。nginx

 
Continuous Deployment
 

PS:目前大部分公司都是作到持续交付,作到持续部署的还不多,由于上生产环境,还要有不少步骤须要作。git

1.4上线基本流程:

1.代码获取(直接了拉取最新代码,使用tag标签获取某个版本代码)
2.编译 (可选)
3.配置文件放进去
4.打包
5.scp到目标服务器
6.将目标服务器移除集群
7.解压并放置到Webroot
8.Scp 差别文件
9.重启 (可选)
10.测试
11.加入集群web

 

2、Gitlab

2.1Gitlab简介

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可经过Web界面进行访问公开的或者私人项目。
GitLab拥有与Github相似的功能,可以浏览源代码,管理缺陷和注释。能够管理团队对仓库的访问,它很是易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片断收集功能能够轻松实现代码复用,便于往后有须要的时候进行查找redis

2.2Gitlab部署

#环境准备
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core) 
[root@node1 ~]# uname -r
3.10.0-693.el7.x86_64

#更换阿里yum源
[root@node1 yum.repos.d]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 
[root@node1 ~]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@node1 ~]# yum update -y

#更换gitlabyum源为清华大学
[root@node1 ~]# vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@node1 ~]# yum makecache
[root@node1 ~ ]#  yum install -y gitlab-ce

#安装依赖
[root@node1 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix -y

#启动postfix
[root@node1 ~]# systemctl start postfix

#安装gitlab-ce   版本为gitlab-ce.x86_64 0:10.6.4-ce.0.el7
[root@node1 ~]# yum install -y gitlab-ce

#配置并启动gitlab   比较久,须要耐心等待一下,在此以前须要保证80端口不被占用
[root@node1 ~]# gitlab-ctl reconfigure

#等待完成,看到以下结果,说明配置成功
Running handlers:
Running handlers complete
Chef Client finished, 387/552 resources updated in 01 minutes 55 seconds
gitlab Reconfigured!

#查看启动状态 所有为run说明正常启动
[root@node1 ~]# gitlab-ctl status
run: gitaly: (pid 15333) 182s; run: log: (pid 14995) 225s
run: gitlab-monitor: (pid 15350) 181s; run: log: (pid 15153) 213s
run: gitlab-workhorse: (pid 15318) 182s; run: log: (pid 14876) 239s
run: logrotate: (pid 14928) 231s; run: log: (pid 14927) 231s
run: nginx: (pid 14895) 237s; run: log: (pid 14894) 237s
run: node-exporter: (pid 15132) 219s; run: log: (pid 15131) 219s
run: postgres-exporter: (pid 15387) 180s; run: log: (pid 15240) 199s
run: postgresql: (pid 14634) 273s; run: log: (pid 14633) 273s
run: prometheus: (pid 15370) 181s; run: log: (pid 15191) 205s
run: redis: (pid 14574) 279s; run: log: (pid 14573) 279s
run: redis-exporter: (pid 15175) 207s; run: log: (pid 15174) 207s
run: sidekiq: (pid 14858) 245s; run: log: (pid 14857) 245s
run: unicorn: (pid 14820) 247s; run: log: (pid 14819) 247s

至此最基本的gitlab已经正常运行起来了!sql

2.3Gitlab使用

2.3.1 此时咱们在浏览器中访问http://192.168.66.129vim

Web页面提示须要设置一个密码(最少8位数)我这里设置密码为:12345678浏览器

 
 
image.png
 

登陆系统,默认用户名为root服务器

 
 
image.png

关闭自动注册 由于为内部使用不须要用户本身注册,由管理员分配用户便可
点击Admin Area 进入管理区域
 
image.png
 

点击settings 把Sign-up enabled的钩去掉便可

 
 
image.png

保存便可

2.3.2 建立组,建立项目

进去管理区域,点击New group

 
 
image.png
 

输入相关信息,并选择Private

 
 
image.png

点击Create group便可,以下说明建立成果
 
image.png
 

相似上面的方法,建立一个项目,并选择web组

 
 
image.png

看到以下,说明项目建立成功
 
image.png

测试一下
新建一个Readme,并随意输入
 
image.png

2.3.3 在客户端测试,并配置ssh免秘

[root@node1 ~]# useradd www
[root@node1 ~]# passwd www
更改用户 www 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
从新输入新的 密码:
passwd:全部的身份验证令牌已经成功更新。
[root@node1 ~]# su www
[www@node1 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/www/.ssh/id_rsa): 
Created directory '/home/www/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/www/.ssh/id_rsa.
Your public key has been saved in /home/www/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:J5Ja/RLAE4KPv70zz1YMmrz7r5ojLPfchGThH9hBdI8 yuanjy@juweitu.com
The key's randomart image is:
+---[RSA 2048]----+
|   .. ..o .      |
|  .  o o . o     |
|   o  = . E .    |
|  . .. O..       |
|   . .OoSo.      |
|    .=++ *o      |
|   ..o..+..      |
|  . =.*=..       |
|   o oB@*o.      |
+----[SHA256]-----+
[www@node1 root]$ cd 
[www@node1 ~]$ cd .ssh/
[www@node1 .ssh]$ ll
总用量 8
-rw------- 1 www www 1679 4月  21 16:40 id_rsa
-rw-r--r-- 1 www www  400 4月  21 16:40 id_rsa.pub
[www@node1 .ssh]$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGS5bnpPvBPLkh/j3OJ8j3Z0dkxgUgLMT2ebeL0U/c7cQ6xGRgKajfLLb2xp+U4XCgU6kKBncXvFWh4PY7/eBPpVbpstJmtf/13gAYB/skHen+jl58k1JP4m/9W/aB6KW3PBRuWF9BA3ki0fHt624R2qSHoaveHiP2YK/9hsYhAizzdN3Y6JMCfSxZ7/FluLb+tXuASLuVQqyilxxZGkAjY0/15zntXyNTovAfseeRrmyAktvMgjK9ZfdGZp/nzS3LXclw2/QhAyT4mLL9FzLLWE2adYuBxj/42UrVZrc7bfkTMUllYvSq4Qkg0VS/8n5FLxEjAIKwPDTkbeTFVKan yuanjy@juweitu.com
[www@node1 .ssh]$

上面建立了一个www用户,并生产了秘钥文件,在浏览器中点击我的头像,点击settings进入设置,点击SSH keys

 
 
 
image.png
 

输入刚刚生成的公钥,点击Add key既可

 
 
 
image.png

获取项目路径,复制相关路径
 
 
image.png
 

在客户端测试

[www@node1 ~]$ git clone git@gitlab.example.com:web/web-demo.git
正克隆到 'web-demo'...
ssh: Could not resolve hostname gitlab.example.com: Name or service not known
fatal: Could not read from remote repository.

#PS 由于我这里是虚拟机没有配置相关域名,也没有修改hosts,这里就临时把gitlab.example.com改为IP既可,后面能够修改配置文件
Please make sure you have the correct access rights
and the repository exists.
[www@node1 ~]$ git clone git@192.168.66.129:web/web-demo.git
正克隆到 'web-demo'...
The authenticity of host '192.168.66.129 (192.168.66.129)' can't be established.
ECDSA key fingerprint is SHA256:wJyF35WdLaQJxzWYaVgjv61ujKzHcTw1DpR789UPUQ8.
ECDSA key fingerprint is MD5:3c:96:f6:ad:15:ba:73:fd:67:ac:54:52:84:4d:0a:b3.
Are you sure you want to continue connecting (yes/no)? yes       
Warning: Permanently added '192.168.66.129' (ECDSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
接收对象中: 100% (6/6), done.
[www@node1 ~]$ ll
总用量 0
drwxrwxr-x 3 www www 35 4月  21 16:49 web-demo
[www@node1 ~]$ cd web-demo/
[www@node1 web-demo]$ ll
总用量 4
-rw-rw-r-- 1 www www 44 4月  21 16:49 README.md
[www@node1 web-demo]$ cat README.md 
测试专用 测试 。。。。。。。。[www@node1 web-demo]$

至此Gitlab基本使用已经完成

3、Jenkins

3.1 Jenkins简介

Jenkins只是一个平台,真正运做的都是插件。这就是jenkins流行的缘由,由于jenkins什么插件都有
Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工做,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson
Jenkins官网:https://jenkins.io/

3.2 Jenkins部署

Jenkins 是由java语言编写,因此咱们这里须要java环境,我事先已经安装好了1.8.0_161
PS:由于gitlab中的unicorn组件会监听8080端口,而Jenkins默认也是监听8080,这里咱们采用node2来部署jenkins

#jenkins本身提供了yum源,这里采用yum方式,也能够采用源码编译的方式

[root@node2 ~]# cd /etc/yum.repos.d/
[root@node2 yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo
[root@node2 ~]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
[root@node2 ~]# yum install -y jenkins
[root@node2 ~]# systemctl start jenkins

在浏览器端访问http://192.168.66.130:8080,看到以下界面就说明启动成功

 
 
image.png
 

查看输入密码,登陆进入,会看到以下页面

 
 
image.png

选择安装推荐插件便可,等待安装完成
 
image.png
 

填写要建立的管理用户这里使用Admin 密码为12345678,点击保存并完成便可。

 
 
image.png

点击开始使用Jenkins便可
 
 
image.png

至此基本的Jenkins已经正常的运行了

3.3 Jenkins插件安装

由于咱们要和gitlab结合,因此这里须要安装gitlab的插件
在系统管理中,进入插件管理,搜索gitlab

 
 
 
image.png
 

按实际状况,选择须要的插件,点击下载待重启后安装既可

 
 
 
image.png

等待安装完成,并重启Jenkins

4、实现持续集成

点击建立一个新任务,输入任务名字,选择自由风格,点击肯定既可

 
 
 
image.png
 

在源码管理添加源码路径,点击Add,添加认证,这里是git,若是是svn,须要安装svn相关插件

 
 
image.png

选择SSH认证方式
 
image.png
 

在Gitlab上建立deploy keys

 
 
image.png

点击新建,并在node2 新建www用户,并建立秘钥文件
[root@node2 yum.repos.d]# useradd www
[root@node2 yum.repos.d]# cd 
[root@node2 ~]# passwd www
更改用户 www 的密码 。
新的 密码:
无效的密码: 密码未经过字典检查 - 过于简单化/系统化
从新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
无效的密码: 密码未经过字典检查 - 过于简单化/系统化
从新输入新的 密码:
passwd:全部的身份验证令牌已经成功更新。
[root@node2 ~]# su www
[www@node2 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/www/.ssh/id_rsa): 
Created directory '/home/www/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/www/.ssh/id_rsa.
Your public key has been saved in /home/www/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CSt+dEEFmyv40qJ5d1e/NbCHbn9fgEYLaf2FhKHuptk yuanjy@juweitu.com
The key's randomart image is:
+---[RSA 2048]----+
|        oo. .o.  |
|       . o +.. . |
|      . + = o . .|
|     . o * o + . |
|    o + S . +.o  |
|   . = o . .. +. |
|    + +   o. + oo|
|   o.+. .=. ..o.+|
|  o. . .o.E ..oo+|
+----[SHA256]-----+
[www@node2 root]$ cd
[www@node2 ~]$ ll
总用量 0
[www@node2 ~]$ cd .ssh/
[www@node2 .ssh]$ ll
总用量 8
-rw------- 1 www www 1675 4月  21 23:42 id_rsa
-rw-r--r-- 1 www www  400 4月  21 23:42 id_rsa.pub
[www@node2 .ssh]$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZZE5beieQdGcCQLkHjeh/4TJXwGnybLc7A0xVfTSQszjq7jx/m6jjE4pOHMQX/yUqb9Pg+NdvsJynpV1ZSNr/ojm18vR4S7sj+6nEV0kIP0IWOLeqSlHKvr9BFggkvcAjSTzsSc31P1Wn8rs6z9xag8WWK759vSz1BdG85fW5xgDdlu8ynwGulF6roOa2pAKhCCk2ibRvwYbpElVGcFA6taf7LOnR63842JsYbeC+a8XTcZmWFWVq8JYfeDcoHZ/61gC9lmiIlsVlEGifAJaM6KHQxkViQtEpWzgfRvKEnBmXigiCUvbJPBNSPCbzSPVYK+Yv1llBsGJQfp/74glD yuanjy@juweitu.com
[www@node2 .ssh]$
 
image.png
 

点击Create既可,填写私钥文件,点击Add既可

 
 
image.png
 

点击保存既可,点击当即构建

 
 
image.png

点击查看查看控制台
 
image.png
至此持续集成初步已经完成了
相关文章
相关标签/搜索