您现在的位置是:网站首页> 编程资料编程资料

使用GitLab+Jenkins实现持续集成CI环境的示例代码_其它综合_

2023-05-27 315人已围观

简介 使用GitLab+Jenkins实现持续集成CI环境的示例代码_其它综合_

一、持续集成简介

持续集成:Continuous Integration

简单来说就是指,程序员在开发代码的过程中,可以频繁的将代码部署到主干上,并进行自动化测试。

持续交付:Continuous Delivery

简单来说就是指在持续集成的基础上,将代码部署到预生产环境。

持续部署:Continuous Deoloyment

简单来说就是指在持续交付的基础上,将要部署的代码实现自动部署,包括持续交互,持续部署。

1.GitLab 简介

GitLab 是一个用于仓库管理系统的开源项目。使用 Git 作为代码管理工具,可以通过 Web 界面来管理 Git 仓库。

2.Jenkins 简介

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

作用:

  • 保证团队开发人员提交代码的质量,还能够减轻软件发布时的压力;
  • 持续集成中的任何一个环节都是自动完成的,无需太多人工干预,有利于减少重复过程以节省时间、费用和工作量。

Jenkins 特点:

  • 开源免费;
  • 跨平台,支持所有的平台。
  • Master/Slave 支持分布式的 build(构建)

3.GitLab 和 GitHub 的区别

相同点:

二者都是基于 Web 的 Git 仓库,在很大程度上 GitLab 是仿照 GitHub 来做的,它们都提供了分享开源项目的平台。

不同点:

  • GitHub 如果要使用私有仓库,超过 4 个是需要付费的。GitLab 可以在上面创建私人的免费仓库。
  • GitLab 让开发团队对他们的代码仓库拥有更多的控制。

4.持续集成系统的工作流程

  • 开发者将新版本代码 push 到 GitLab 远程仓库上;
  • 随后 GitLab 会触发 Jenkins 来进行拉取到本地(通过 Web Hook 或定时检测)
  • 最后 Jenkins 会根据事先配置好的脚本进行 Build。

二、使用 GitLab + Jenkins 实现持续集成(CI)环境

准备工作

主机名操作系统硬件IP 地址
GitLabCentOS 7.44 G(联网状态)192.168.1.1
JenkinsCentOS 7.44 G(联网状态)192.168.1.2
ApacheCentOS 7.42 G192.168.1.3

1.安装 Gitlab

安装 Gitlab 所需组件

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

开启 Postfix 邮件服务

[root@GitLab ~]# systemctl start postfix [root@GitLab ~]# systemctl enable postfix 

安装 Gitlab

[root@GitLab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm [root@GitLab ~]# ls anaconda-ks.cfg gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm [root@GitLab ~]# yum -y localinstall gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm 

配置 Gitlab 访问地址

[root@GitLab ~]# sed -i "/^external_url/cexternal_url 'http://192.168.1.1'" /etc/gitlab/gitlab.rb

注意:你们也可以将 IP 地址替换为域名。

重置 Gitlab(时间较长)

[root@GitLab ~]# gitlab-ctl reconfigure[root@GitLab ~]# netstat -anpt | grep nginx

在这里插入图片描述

1)登录 Gitlab

访问:http://192.168.1.1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:在 GitLab 中配置的中文并不是全部都是中文,你们可以安装中文插件,我这边使用的是谷歌浏览器转换。

2)配置邮件报警

[root@GitLab ~]# vim /etc/gitlab/gitlab.rb # 在第 57 行后添加以下内容 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'smtp.qq.com' # SMTP 服务器 gitlab_rails['smtp_port'] = 465 # SMTP 服务器端口号 gitlab_rails['smtp_user_name'] = '2085077346@qq.com' # 邮件账号 gitlab_rails['smtp_password'] = '' # 邮件授权码 gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = '2085077346@qq.com' 

重置 Gitlab

[root@GitLab ~]# gitlab-ctl reconfigure 

登录控制台发送测试邮件

[root@GitLab ~]# gitlab-rails console irb(main):001:0> Notify.test_email('ChenZhuang1217@163.com','Test','Hello ZhangSan').deliver_now 

在这里插入图片描述

查看

在这里插入图片描述

修改 GitLab 中 root 用户的密码

在这里插入图片描述

3)创建群组

点击创建群组

在这里插入图片描述

填写群组信息

在这里插入图片描述

创建一个账号

在这里插入图片描述

填写用户信息

在这里插入图片描述

给河北彭于晏配置密码

在这里插入图片描述

把新建用户添加到群组

在这里插入图片描述

GitLab 用户在组中有五种权限:

  • Guest:可以创建问题、发表评论、不能读写版本库(访客)
  • Reporter:可以克隆代码,不能提交(测试人员)
  • Deveoper:可以克隆代码、开发、提交、上传(开发人员)
  • Master:可以创建项目、添加
  • tag、保护分支、添加项目成员、编辑项目(运维)
  • Owner:所有事情都可以做,包括设置项目的访问权限(老板,但老板一般都在办公室)

4)创建项目

使用河北彭于晏用户登录创建

在这里插入图片描述

创建项目

在这里插入图片描述

在刚才创建的项目中创建文件

在这里插入图片描述

在这里插入图片描述

5)配置免密克隆

[root@GitLab ~]# ssh-keygen -t rsa # 配置密钥对 (三连回车即可) [root@GitLab ~]# cat .ssh/id_rsa.pub # 查看公钥 

将公钥上传到 GitLab 中

在这里插入图片描述

验证(克隆过程中不需要输入密码即可)

[root@GitLab ~]# git clone git@192.168.1.1:ZhangSan/test.git [root@GitLab ~]# ls anaconda-ks.cfg gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm test [root@GitLab ~]# cd test/ [root@GitLab test]# ls 1.html 

2.安装 Jenkins

安装 JDK(因为 Jenkins 是使用 Java 编写的,所以需要先安装 JDK)

[root@Jenkins ~]# tar xf jdk-8u181-linux-x64.tar.gz [root@Jenkins ~]# ls anaconda-ks.cfg jdk1.8.0_181 jdk-8u181-linux-x64.tar.gz [root@Jenkins ~]# mv jdk1.8.0_181/ /usr/local/java 
[root@Jenkins ~]# cat <> /etc/profile JAVA_HOME=/usr/local/java/ PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH END 
[root@Jenkins ~]# source /etc/profile 
[root@Jenkins ~]# java -version # 查看 Java 版本 java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mod
                
                

-六神源码网