云计算中的GitLab与Jenkins结合构建持续化集成(CI)环境

总体描述

为什么要搭建gitlab+jenkins持续集成开发?

1. 在云计算资源的管理与使用中的地位。

a) 用户开发运维一体化, 站软件等都在不断地更新升级,新版本的出现就意味着要部署新的环境,替换老的环境,如果这一步不能实现自动化,那么工作会非常繁忙,在此,结合不同公司的需求,搭建了gitlab+jenkins实现持续开发持续集成。满足各方面相关的要求与条件就显得尤为重要。

2. Gitlab相对于Github的比较

a) GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,并提供一个文件历史库。它还提供一个收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

b) 相同点:

i. 二者都是基于 web 的 Git 仓库,在很大程度上 GitLab 是仿照 GitHub 来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。

ii. 不同点:

GitHub 个人私有仓库可以邀请最多的人 3 个人协合开发,超过 3 个人就收费。GitLab 可以在上面创建私人的免费仓库。

Git的项目仓库,从代码私有性方面来看,有时公司并不希望员工获取到全部的代码,这个时候 GitLab 无疑是更好的选择。但对于开源项目而言,GitHub 依然是代码托管的首选。

二、主要功能描述

整体功能概述:

Gitlab + Jenkins 搭建持续集成(Continuous Integration,CI)环境 选择Jenkins作为持续集成工具,其优点是提供web GUI配置界面、方便配置,还可以安装很多第三方插件(plugin)进行定制与扩展,功能强大。 选择Gitlab作为git server,优点是Gitlab的功能和Github差不多,且是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。

git 相关概念:
git 是一种版本控制系统,是一个命令,是一种工具
gitlib 是用于实现 git 功能的开发库
github 是一个基于 git 实现的在线代码托管仓库,包含一个 站界面,向互联 开放
gitlab 是一个基于 git 实现的在线代码仓库托管软件,一般用于在企业内部 络搭建 git 私服
注: gitlab-ce 社区版 ; gitlab-ee 是企业版,收费

三、 技术综述

使用的主要工具:

Centos7操作系统

如果是虚拟机至少 6G 内存。

WinSCP 负责上传文件到服务器或者虚拟机。

1.安装Gitlab需要的组件:

[root@han~]# yum install curl policycoreutils-python openssh-server openssh-clients postfix -y

默认,使用 Postfix 发送邮件
[root@han ~]# systemctl enable postfix && systemctl start postfix

#清空规则:
[root@han ~]# iptables -F
[root@han ~]# systemctl stop firewalld && systemctl disable firewalld
禁止防火墙,就不用执行下面两条命令:
[root@han ~]#firewall-cmd –permanent –add-service=http
[root@han ~]#systemctl reload firewalld

1 持续集成概述和搭建 Gitlab 平台

安装Gitlab

下载 gitlab 的两种方法:
方法 1:

使用 yum 下载太慢。直接使用迅雷下载以下链接:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.9.3-ce.0.el7.x86_64.rpm
上传到 gitlab-ce-13.9.3-ce.0.el7.x86_64.rpm 到 linux 系统上
[root@han ~]# rpm -ivh gitlab-ce-13.9.3-ce.0.el7.x86_64.rpm #安装

方法 2:配置 yum 源,使用 yum 安装:

下面使用清华的源:
[root@han ~]# cd /etc/yum.repos.d/
[root@han yum.repos.d]# vim 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@hanxin ~]# yum install gitlab-ce -y

3. 配置 gitlab 访问地址:
[root@han ~]# vim /etc/gitlab/gitlab.rb #修改 gitlab 外部访问地址
改:32 external_url ‘http://gitlab.example.com’
为:32 external_url ‘http://192.168.100.10’
注:这里必须修改,不然后后期访问时,用户到地址是:http://gitlab.example.com/xxxx ,根
本不能访问。 修改后获得是: http://192.168.100.10/xxxx

4. 应用新配好的配置并重启 GitLab
[root@han ~]# gitlab-ctl reconfigure #重新配置应用程序。修改了 gitlab 服务配置文件后,都需要执行一下这个命令。让各个服务的配置文件,重新加载一下配置文件。这里等个 2 分钟左右。

#可以使用 gitlab-ctl 管理 gitlab,例如查看 gitlab状态:
[root@han ~]# gitlab-ctl status

run: gitlab-workhorse: (pid 3275) 169s; run: log: (pid 3151) 280s
run: logrotate: (pid 3169) 273s; run: log: (pid 3168) 273s
run: nginx: (pid 3157) 279s; run: log: (pid 3156) 279s
run: postgresql: (pid 3009) 349s; run: log: (pid 3008) 349s
run: redis: (pid 2926) 360s; run: log: (pid 2925) 360s
run: sidekiq: (pid 3142) 287s; run: log: (pid 3141) 287s
run: unicorn: (pid 3110) 293s; run: log: (pid 3109) 293s

[root@han config]# netstat -antup | grep :80
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 10864/unicorn maste
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10729/nginx: master
默认使用 nginx 做为 web 服务器。
注:如果后期 web 界面访问时,总 502,另外内存要大于 4G,不然后内存不足,也 502

[root@han ~]# iptables -F #清空规则
[root@han ~]# free -m #已经使用 4G 以上内存
total used free shared buff/cache available
Mem: 5817 4187 133 80 1496 1198

5. 登录 gitlab (在 页中)
http://192.168.1.63
第一次登录 gitlab,需要为 root 用户修改密码,root 用户也是 gitlab 的超级管理员,输入新密码:han.anio ,密码需要复杂些,才可以的

6 管理 gitlab 服务
关闭 gitlab: # gitlab-ctl stop
启动 gitlab: # gitlab-ctl start
重启 gitlab: # gitlab-ctl restart
gitlab 主配置文件:/etc/gitlab/gitlab.rb //可以自定义一些邮件服务等
日志地址:/var/log/gitlab/ // 对应各服务
服务地址:/var/opt/gitlab/ // 对应各服务的主目录
仓库地址:/var/opt/gitlab/git-data //记录项目仓库等提交信息
重启服务:gitlab-ctl stop/start/restart //启动命令

7 配置 gitlab 邮件服务

配置邮箱服务的用途:当有合并请求时,账号注册,修改密码时,可通过邮件通知 ,邮件验证 ,邮件修改实现.

gitlab_rails[‘smtp_enable’] = true

gitlab_rails[‘smtp_address’] = “smtp.163.com”
gitlab_rails[‘smtp_port’] = 465
gitlab_rails[‘smtp_user_name’] = “123456@163.com”
gitlab_rails[‘smtp_password’] = “自己邮箱授权码,不是邮箱帐号的密码”
gitlab_rails[‘smtp_domain’] = “163.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_tls’] = true
gitlab_rails[‘gitlab_email_from’] = ‘123456@163.com’

重新配置 gitlab:
[root@han ~]# gitlab-ctl reconfigure
通过命令行测试邮件是否发送成功(也可以不测
[root@han ~]# gitlab-rails console #稍等几秒到十几秒,然后出现脚本输入区域
Loading production environment (Rails 4.2.8)
irb(main):001:0> #这是提示符
然后再输入测试脚本:
irb(main):001:0> Notify.test_email(‘ 123456@163.com ‘, ‘邮件主题 Message
Subject’, ‘邮件正文 Message Body’😉.deliver_now
注:脚本格式为:Notify.test_email(‘接收方邮件地址’,’邮件主题’,’邮件内容’😉.deliver_now

关闭 gitlab 注册功能
默认情况下可以直接注册账号。
以 root 用户登录:http://192.168.1.63/users/sign_in
点 Admin area -》 setting -》General-》Expand, 取消这两项标签前对勾

最后保存!!!

2.搭建 Jenkins 实现持续集成

Jenkins 概述:是一开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

方 站:https://jenkins.io/

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

GitLab 中文 :https://www.gitlab.cc/installation/#centos-7

1.安装 JDK1.8

Jenkins 是 Java 编写的,所以需要先安装 JDK,这里采用 yum 安装,如果对版本有需求,可以直接在 Oracle 官 下载 JDK。
[root@han ~]# yum install -y java-1.8.0-openjdk #光盘镜像中有,也可以 rpm 直接安装

2.安装 jenkins
官方下载地址:https://jenkins.io/zh/download

方法 1:直接上传 jenkins-2.222.1-1.1.noarch.rpm 到 linux 上

[root@han ~]# rpm -ivh jenkins-2.222.1-1.1.noarch.rpm

方法 2:在线安装
[root@han ~]# wget -O /etc/yum.repos.d/jenkins.repo
http://pkg.jenkins.io/redhat/jenkins.repo
[root@han yum.repos.d]# rpm –import
http://pkg.jenkins.io/redhat/jenkins.io.key
[root@han yum.repos.d]# yum install -y jenkins #安装 jenkins
新版 jenkins 的服务端口为 8080,为了不和 GitLab 的服务端口相冲突,修改 Jenkins 的默认端口 8080 为 198
[root@han config]# netstat -antup | grep :80
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 10864/unicorn maste
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10729/nginx: master

root@han yum.repos.d]# vim /etc/sysconfig/jenkins
改:29 JENKINS_USER=”jenkins”
为:29 JENKINS_USER=”root” #以 root
改:56 JENKINS_PORT=”8080″
为:56 JENKINS_PORT=” 198

[root@han ~]# systemctl restart jenkins #启动
[root@han ~]# systemctl enable jenkins #设置开机启动

3.修改 jenkins 默认源
在 web 界面访问 jenkins 时,默认会到国外的 站下载 hudson.model.UpdateCenter.xml 文件。而这个文件在中国下载时很慢,需要换成清华的源。
清华 jenkins 源:https://mirrors.aliyun.com/jenkins/updates/update-center.json
[root@han ~]# sed -i ‘s/https://updates.jenkins.io/update-
center.json/https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-
center.json/g’ /var/lib/jenkins/hudson.model.UpdateCenter.xml
3 访问 Jenkins 并安装相关插件
[root@han jenkins]# iptables -F # 要清空防火规则,还要关闭 selinux
开始正常使用:http://192.168.1.63:198 #打开后,需要耐心等待 10 分钟左右。

我们前面虽然修改了默认从清华下载 default.json 文件,但是文件内容和官方是没有区别的,联 检测是通过 google.com 进行检测,所有的插件地址也都是指向官方源,国内源虽然提供了default.json 下载,但是并不能修改源中的任何配置。我们替换 default.json 中的国外地址为清华的地址,这样就可以通过清华下载所有插件了
4.修改插件地址:
[root@han ~]# sed -i ‘s/http://updates.jenkins-
ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’
/var/lib/jenkins/updates/default.json
5.修改联 检测地址:
[root@han ~]# sed -i ‘s/http://www.google.com/https://www.baidu.com/g’
/var/lib/jenkins/updates/default.json
6.修改后重启生效
[root@han ~]# systemctl restart jenkins
7.为了安全考虑,首先需要解锁 Jenkins

[root@han ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

#查看初始化密码文件。
f00b76dece1d416ba50346f21cf937d9 #把密码输入以一下页面,点 continue 。


8.选择需要安装的插件:
选择默认即可,会安装通用的社区插件,剩下的可以在使用的时候再进行安装


注:这个安装时,需要从外 下载插件,需要 20 分钟
如果安装失败,就点一下重试:

如果点重试,还是失败,那就点 “继续”,等安装成后,再手动下载插件进行安装。
创建管理员用户:admin 密码: 123456 全名: han 邮箱:123456@163.com
到此 jenkins 安装成功。


9.手动安装相关插件
如果在线安装插件失败了,或是无 环境下想安装插件,可以选择手动安装。


这里不用管,点继续,等安装成功后,我们再手动安装插件。
找到自己要下载的插件的名字和版本号:


插件下载地址:
http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

http://updates.jenkins-ci.org/download/plugins/
比如我要下载:gitlab-api,版本是:1.0.6
下载: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-api/1.0.6/
#在有 的环境下,把自己需要的插件下载好,然后再从本地上传。
上传插件,选择:系统管理->插件管理->高级

方法 2:

也可以直接把一台安装好 jenkins 插件服务器的/var/lib/jenkins/plugins 目录下的文件复制到新的 jenkins 中。
实验环境:[root@han ~]是一台已经安装好 jenkins 服务的服务器。

[root@han6 ~] 因为 络的原因,没有安装好插件。

现在要把[root@han ~] 上的插件安装到[root@han6 ~]上。
1. 将 hanxin 上的插件打包
[root@han ~]# cd /var/lib/jenkins
[root@han jenkins]# tar czvf
jenkins-2.150.2-plugins.tar.gz plugins/

#把安装好的插件打包
2. 将 hanxin 上的
jenkins-2.150.2-plugins.tar.gz 上传到 hanxin 的/root/目录下

[root@han6 ~]# cd /var/lib/jenkins/
[root@han6 ~]# rm -rf /var/lib/jenkins/plugins/*
[root@han6 ~]# tar zxvf
jenkins-2.150.2-plugins.tar.gz -C /var/lib/jenkins/plugins/ #把插

件解出来
[root@hanxin6 ~]# /etc/init.d/jenkins restart
注:记得重启 jenkins,这个非常重要,因为不重启,插件不会生效
登录 gitlab http://192.168.100.10/ 用户名: root 密码: han.anio
登录 jenkins
http://192.168.100.10:198/ 用户名: admin 密码: 123456

至此,GitLab与Jenkins结合构建持续化集成(CI)环境部署完毕!

四、创新点或个人体会

1、本综合作品的主要创新点是什么,用到哪些能力和知识:

区别于传统的云计算运维,这次在centos7中部署gielab与jenkins的可持续化集成方便了企业团队的协作,开发和管理。主要运用一些在centos或linux中部署服务的一些简单命令。

GitLab 作为一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。免费,开源。

Gatlab相对于Git的创新还包括提供可视化界面,更加方便了开发人员的使用与管理。促进了企业团队内部的协作开发。

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

两者结合的优势:

这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布代码

借鉴材料:

https://blog.csdn.net/weixin_45433031/article/details/122888466

https://www.jianshu.com/p/ff9fc80743ed

https://www.jianshu.com/p/ff9fc80743ed

声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

(0)
上一篇 2022年5月17日
下一篇 2022年5月17日

相关推荐