2019独角兽企业重金招聘Python工程师标准>>>

持续集成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://my.oschina.net/rootliu/blog/3013744

持续集成Jenkins+Gitlab相关推荐

  1. 持续集成Jenkins+Gitlab实现持续集成

    用户说明 假设node3是程序员的个人电脑,在这台机器上编写代码 ip地址192.168.10.10 Git的安装部署及使用 git config --global user.name 'zzg' # ...

  2. 持续集成Jenkins大法好

    持续集成Jenkins从初级到高级 1. 虚拟机安装 2. jenkins 安装 2.1 主要配置 2.2 安装Java环境 2.3 启动jenkins 2.4 开放8777端口供外网访问 2.5 外 ...

  3. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建 http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结 ...

  4. 持续集成~Jenkins构建GitHub项目的实现

    有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...

  5. 持续集成 -- Jenkins + Slack 配置

    2017.12.13 始发于TesterHome 持续集成 Jenkins + Slack 配置 Why Slack? Slack支持很多平台和工具,接起来方便快捷:可在移动端/PC缎端同步查看:通知 ...

  6. k8s和harbor的集成_爱威尔-基于kubernetes集群的项目持续集成(gitlab+harbor+Jenkins)安装...

    这个算是基于kubernetes集群的项目持续集成的前导篇,先把这用环境搭建好我们后面就可以专注做基于k8s的docker化项目持续集成了. gitlab安装 https://about.gitlab ...

  7. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  8. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  9. 研发协同平台持续集成Jenkins作业设计演进

    源宝导读:Jenkins作为一个开源的持续集成工具,被大家广泛使用.本文将分享,Jenkins在明源云研发协同平台中的运用,以及在其作业设计方面的演进历程. 一.作业设计1.0 起初,为了尽快推出研发 ...

最新文章

  1. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件
  2. 学习Docker从小白到入门
  3. css 浮动问题 display显示 和 光标设置cursor
  4. 如何彻底禁用Chrome浏览器的缓存功能
  5. SQL Server定期自动备份
  6. 阿里高级技术专家张建飞:应用架构分离业务逻辑和技术细节之道
  7. 电脑rar文件打开方式_怎么压缩文件,如何压缩文件?压缩软件哪个好?
  8. 在线十六进制颜色随机生成器
  9. HTML DOM nodeName nodeValue
  10. 人工势场法脱离极小值点
  11. jQuery实现记住帐号密码功能
  12. 黑苹果安装记录(史上最简单的安装教程——小白福利)
  13. java新手代码翻译成中文_急!老师让我把以下代码翻译成中文的
  14. [NAS] Synology (群晖) DSM相关服务及套件安装
  15. 荣耀手机两个android文件夹,华为手机文件管理中,这几个文件夹可以任意删除,其他的千万不要乱删!...
  16. Mysql 实现行转列功能
  17. 通过银行卡号识别银行
  18. 微信公众号用什么软件编辑?
  19. 软式棒垒球运动进校园
  20. 关于Android开发中如何使用dp表示长宽

热门文章

  1. 枚举的练习、声明一个枚举类型Status, Status(员工状态),可以限定为4个:空闲(Free),忙(Busy),休假(Vocation),离职(Left)
  2. chrome://tracing 性能分析神器
  3. 苹果/Mac电脑怎么卸载软件?软件卸载不了怎么办?
  4. boostrap老黄历代码的实现
  5. 分布式锁解决并发的三种实现方式
  6. BuildDownload maven-metadata.xml...打包一直卡在这里
  7. 微信小程序开发之如何哪获取微信小程序的APP ID
  8. 如何彻底卸载ArcGis
  9. MySql8安装错误信息:The service already exists!
  10. 黑马程序员 面向对象总结2