首页 > 其他 > 详细

CentOS7安装GitLab和Jenkins构建CICD环境

时间:2020-06-02 15:01:48      阅读:132      评论:0      收藏:0      [点我收藏+]

CI/CD

CI:持续集成

  • 持续集成:持续集成(continuous integration)是指开发者在代码开发过程中,可以频繁将代码部署集成到主干,并进行自动化测试。

  • 持续交付:是指在持续集成的基础之上,将代码部署到预生产环境。

  • 持续部署:在持续交付的基础之上,把部署到生产环境的过程自动化。

持续集成流程:

  1. 开发者将新版本 push 到 Gitlab
  2. Gitlab 随后触发 jenkins master 节点进行一次 build。(或者通过 web hook 定时检测)
  3. jenkins master 节点将这个 build 任务分配给若干个注册的 slave 结点中的一个,这个 slave 结 点根据一个事先设置好的脚本进行 build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给 jenkins 来做。
  4. 我们在 build 中要迚行编译,这里使用了分布式编译器 distcc 来加快编译速度。

CICD流程

gitlab 创建代码项目--->gitlab 部署公钥--->jenkins 安装插件--->创建新项目--->绑定私钥--->添加触发器--->测试部署--->增加 Build Pipeline 插件以流程图的形式展示各个 Job 的顺序

Jenkins

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

官网地址:https://jenkins.io/

中文帮助:https://jenkins.io/zh/doc/book/installing/

部署Jenkins:

方式1:

# 安装jenkins
rpm -ivh jenkins-2.93-1.1.noarch.rpm

# 修改配置文件,配置端口、用户及jdk(jdk如果没有则需要安装)
vim  /etc/sysconfig/jenkins
JENKINS_PORT=" 198 "
JENKINS_USER="root"
JENKINS_JAVA_CMD="/opt/cosmo/com/public/jdk_lin/1.8.0_171"

# 启动
/etc/init.d/jenkins start

# 开机自启动
chkconfig jenkins on

方式2:

# 下载jenkins的war包
https://www.jenkins.io/download/

# 上传war包至服务器,并启动
java -jar jenkins.war --httpPort=8888

# 后台启动
nohup java -jar jenkins.war --httpPort=8888 > /dev/null 2>&1 &

# 浏览器访问验证
http://192.168.1.63:8888
![](https://img2020.cnblogs.com/blog/1626773/202006/1626773-20200602140420429-734003523.png)

# 查看管理员登录密码
cat /root/.jenkins/secrets/initialAdminPassword

技术分享图片

Jenkins插件下载:http://updates.jenkins-ci.org/download/plugins/

安装插件方式选择:
方法一(推荐):如果服务器可以上网,那边选择在线安装最好丌过了,安装流程为: 系统管理(ConfigureSystem)----插件管理(Manage Jenkins)---选择需要的插件直接安装即可

方法二:如果服务器不能上网,那么就只能离线安装,首先去http://updates.jenkins-ci.org/download/plugins/ 下载需要的 plugin,选择匹配的版本号,下载到本 地,然后打开:系统管理()---插件管理—高级---找到”上传插件”(浏览,找到扩展名为.hpi 的插件,上传之 后默认直接就安装了。重启 jenkins,安装的插件就可以使用了。

GitLab

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

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

清华大学镜像站: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

GitLab包含软件:

alertmanager
gitaly
gitlab-exporter
gitlab-workhorse
grafana
logrotate
nginx
node-exporter
postgres-exporter
postgresql
prometheus
redis
redis-exporter
sidekiq
unicorn

GitLab安装

# 服务器节点内存需要大于4G
# 安装依赖
yum install -y policycoreutils-python

# 上传rpm包
rpm -ivh gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm

# 配置gitlab域名
vim /etc/gitlab/gitlab.rb
external_url ‘http://192.168.1.63:9999‘

# 初始化gitlab,会重置为最原始的配置
gitlab-ctl reconfigure

# 查看状态
gitlab-ctl status

# 浏览器访问验证
http://192.168.1.63/users/sign_in

# 关闭 gitlab: 
gitlab-ctl stop 

# 启动 gitlab: 
gitlab-ctl start 

# 重启 gitlab: 
gitlab-ctl restart

# 汉化gitlib
tar zxvf gitlab-patch-zh.tat.gz
yum install -y git patch
git   diff   v10.2.3   v10.2.3-zh   > ../10.2.3-zh.diff
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../10.2.3-zh.diff

# GitLab的配置文件
/etc/gitlab/gitlab.rb 	//可以自定义一些邮件服务等 
日志地址:/var/log/gitlab/ 	 // 对应各服务 服务地址:/var/opt/gitlab/ 	// 对应各服务的主目录 仓库地址:/var/opt/gitlab/git-data  //记录项目仓库等提交信息

# 查看所有的logs; 按 Ctrl-C 退出
sudo gitlab-ctl tail

# 拉取/var/log/gitlab下子目录的日志
sudo gitlab-ctl tail gitlab-rails

# 拉取某个指定的日志文件
sudo gitlab-ctl tail nginx/gitlab_error.log

# 检查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace    

# 卸载gitlab
gitlab-ctl stop
rpm -e gitlab-ce
ps aux | grep gitlab
#杀掉第一个进程(就是带有好多.............的进程)
kill -9 18777
find / -name gitlab | xargs rm -rf

GitLab的汉化

下载地址:https://gitlab.com/xhang/gitlab#
技术分享图片

GitLab和GitHub的区别:

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

不同点:
1、GitHub 如果要使用私有仓库,是需要付费的。GitLab可以在上面创建私人的免费仓库。
2、GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比于 GitHub,它有不少的特色:允许 免费设置仓库权限;允许用户选择分享一个 project 的部分代码;允许用户设置 project 的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度通过 innersourcing让不在权限范围内的人访问不到该资源。

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

Git

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

# 安装git
yum install -y git

安装完成后,需要先配置自己的git环境。配置工作只需一次,以后升级时还会 沿用现在的配置。

第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用 这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录。

git常用命令

git config --global user.name “name“ #设置全局用户名
git config --global user.email   mail 	#设置全局邮箱
git config --global   --list 	#列出用户全局设置
git   add index.html 	#添加文件到暂存区
git commit -m “描述内容“ 	#提交文件到工作区
git status 	#查看工作区的状态
git push 	#提交代码到 git 服务器上
git pull 	#获取代码到本地
git log 	#查看操作日志
vim   .gitignore 	#定义忽略文件
git reset --hard   HEAD^   #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一 个版本
git reflog  # #获取每次提交的 ID,可以使用--hard 根据提交的 ID 迚行版本回退
git reset --hard 5ae4b06 	#回退到指定 id 的版本
git branch 	#查看当前所处的分支
git checkout --   file 	#从服务器更新某个那文件覆盖本地的文件

工作区和暂存区及分支概述:

1、工作区就是编辑文件的目录区域,需要将工作区的修改好的文件 add 到暂存区才能提交到 git 服 务器,在工作区有多个文件的时候可以将一个戒多个文件添加至暂存区,再提交到 git 服务器即可。

2、在服务器创建分支

设置gitlab用户root可以通过ssh公钥直接下载代码

将代码发布到web服务器

可以通过执行命令或脚本的方式迚行代码发布,我使用 root 用户在各个 web 服务器上发布代码。大 家也可以建立一些普通用户如果 www 或 apache 来发布。如果使用普通用户发布代码,要保持所有服务 器上的用户 id 一致,这样没有权限的问题

实现 gitlib 触发 Jenkins 自动部署

在公司的测试环境当中,当开发人员向 gitlab 仓库提交代码后,gitlab 自动通知 jenkins 进行构建项目、代码质量测试然后部署至测试环境,这里先暂时部署到测试环境。对于生产环境,后期使用手动部署代码。

安装 Gitlab Hook Plugin 插件:
系统管理-管理插件-可选插件,安装这两个插件:Gitlab Hook PluginBuild Authorization Token RootBuild Token Trigger

增加 Build Pipeline 插件以流程图的形式展示各个 Job 的顺序

持续更新中...

CentOS7安装GitLab和Jenkins构建CICD环境

原文:https://www.cnblogs.com/fusheng11711/p/13030800.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!