文档章节

持续集成Jenkins+Gitlab

rootliu
 rootliu
发布于 02/22 18:00
字数 2575
阅读 33
收藏 1

持续集成Jenkins+Gitlab

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

一、相关概念

1.1 持续集成:

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

 
CI

1.2 持续交付:

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

 
CD

1.3 持续部署:

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

 
Continuous Deployment
 

PS:目前大部分公司都是做到持续交付,做到持续部署的还很少,因为上生产环境,还要有很多步骤需要做。

1.4上线基本流程:

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

 

二、Gitlab

2.1Gitlab简介

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

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已经正常运行起来了!

2.3Gitlab使用

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

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基本使用已经完成

三、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

四、实现持续集成

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

 
 
 
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

至此持续集成初步已经完成了

本文转载自:https://www.jianshu.com/p/63b012ee52ea

共有 人打赏支持
rootliu
粉丝 5
博文 318
码字总数 2796
作品 0
海淀
数据库管理员
私信 提问
6.2、 产品经理甩锅指南-CI环境

上次在这里提到了敏捷开发scrum,6、产品经理和包工头的故事,敏捷开发背景下,还有CI(持续集成)环境,持续交付和持续部署。 小奈:今天捅了个篓子,我只是叫开发,修改个导航栏而已。 也测试...

产品经理的技术课堂
2018/06/01
0
0
jenkins+gitlab简单实现持续集成与自动化部署

jenkins+gitlab简单实现持续集成与自动化部署 2018年12月04日 15:12:10 ahutdbx 阅读数:143 目前公司准备为客户弄一套jenkins+gitlab自动化部署的环境,无奈自己也从来没有弄过,就照着百度...

rootliu
02/22
0
0
Jenkins+Gitlab实现持续集成 [二]

项目:使用git+jenkins实现持续集成 开始构建 General 源码管理 我们安装的是插件,还可以安装插件 我们将路径存在这里还需要权限认证,否则会出现error 我们添加一个认证 选择一下认证方式(...

一盏烛光
2017/06/22
0
0
利用Jenkins+Gitlab搭建持续集成(CI)环境

这次实习的任务之一就是搭建一个持续集成(Continuous Integration)环境。 我们选择Jenkins作为持续集成工具,其优点是提供web GUI配置界面,方便配置,还可以安装很多第三方插件(plugin)进...

mingle
2015/08/24
0
0
jenkins+gitlab构建自动化集成

1.jenkins配置gitlab连接: 系统管理===》系统设置===》gitlab: 填写gitlab连接名、gitlab项目仓库URL、gitlab API TOKEN gitlab中生成一个访问令牌 gitlab首页===>访问令牌===>创建一个新的...

the_script
01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
4
0
错题

无知的小狼
今天
2
0
PowerShell因为在此系统中禁止执行脚本的解决方法

参考:window系统包管理工具--chocolatey 报错提示: & : 无法加载文件 C:\Users\liuzidong\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall.ps1,因为在此系统上禁止运...

近在咫尺远在天涯
今天
3
0
TP5 跨域请求处理

https://blog.csdn.net/a593706205/article/details/81774987 https://blog.csdn.net/wyk9916/article/details/82315700...

15834278076
今天
3
0
深入理解java虚拟机-Java内存区域与内存溢出异常

深入理解java虚拟机 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 线程私有,内存小,是当前线程执行的字节码行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需要执行...

须臾之余
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部