我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用GitLab+Jenkins实现持续集成CI环境的示例代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用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 <<END >> /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 mode)

安装 Jenkins

[root@Jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm
[root@Jenkins ~]# ls
anaconda-ks.cfg  jenkins-2.222.4-1.1.noarch.rpm
[root@Jenkins ~]# yum -y localinstall jenkins-2.222.4-1.1.noarch.rpm

修改配置文件

[root@Jenkins ~]# sed -i '/^JENKINS_USER/cJENKINS_USER="root"' /etc/sysconfig/jenkins

创建软连接优化执行路径

[root@Jenkins ~]# ln -s /usr/local/java/bin/java /usr/bin/

启动 Jenkins

[root@Jenkins ~]# systemctl start jenkins
[root@Jenkins ~]# netstat -anpt | grep 8080

在这里插入图片描述

1)登录 Jenkins,并安装相关插件

访问:http://192.168.1.2:8080

在这里插入图片描述

点击继续后,会出现推荐安装和自定义安装,我这里选择的是推荐安装

在这里插入图片描述

2)配置 Jenkins 实现 GitLab 更新代码

安装 Jenkins 插件

Credentials															# 签名证书管理插件
Gitlab																# 安装后从 GitLab 获取代码
Git	和 Git Client													# 用于 Jenkins 在 GitLab 中拉取源码
GitLab Hook															# GitLab 触发 Jenkins 构建项目
Gitlab Authentication												# GitLab 和 Jenkins 认证插件
SSH Plugin															# 进程执行 Shell 脚本
Publish Over SSH													# 用于通过 SSH 部署应用

在这里插入图片描述

注意:当安装好 Jenkins 插件后,插件可能会跟 Jenkins 出现版本差异,不用管,后面我会对 Jenkins 进行升级操作。

配置 Jenkins 免密拉取 GitLab 代码

[root@Jenkins ~]# ssh-keygen -t rsa
[root@Jenkins ~]# cat .ssh/id_rsa.pub

将公钥上传到 GitLab 上

在这里插入图片描述

将私钥上传到 Jenkins 上

在这里插入图片描述

在这里插入图片描述

Jenkins 的 root 用户公钥在 GitLab 上,私钥在 Jenkins 上,目的就是为了方便 Jenkins 可以直接拉去 GitLab 上的代码。

3)在 Jenkins 上创建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下载一下代码

在这里插入图片描述

4)将代码发布到 Web 服务器

这边简单说一下大致的流程:

  • 通过我们这一系列的操作也可以看出来,首先需要在 GitLab 上创建(上传)项目,然后 Jenkins 会将代码下载到本地;
  • 最后可以使用 Jenkins 将代码发送给指定服务器。

192.168.1.3 服务器上操作

[root@Apache ~]# yum -y install httpd
[root@Apache ~]# systemctl start httpd

在 Jenkins 上配置 SSH 免密登录

[root@Jenkins ~]# ssh-copy-id root@192.168.1.3

创建自动上传 Web 代码的脚本

[root@Jenkins ~]# cat <<END > 1.sh
#!/bin/bash
scp /var/lib/jenkins/workspace/web/* root@192.168.1.3:/var/www/html/
END
[root@Jenkins ~]# chmod +x 1.sh

将脚本添加到 Jenkins 中

在这里插入图片描述

发布项目

在这里插入图片描述

5)验证

在这里插入图片描述

3.实现 Jenkins 自动部署

1)安装插件

Gitlab Hook Plugin
Build Authorization Token Root
Build Token Trigger

2)配置身份验证令牌

[root@Jenkins ~]# openssl rand -hex 12
038ef13e10ef686193784383

注意:-hex 输出结果为 16 进制数据,数字 12 是指定生成的随机字符为 12 字节,即 24 个 16 进制个数。

3)在 Jenkins 上配置触发器

在这里插入图片描述

4)在 GitLab 的项目上配置链接和 Token

这里的网址和密钥令牌都要和 Jenkins 上的匹配。

在这里插入图片描述

  • 注意:当创建钩子时出现 Urlis blocked: Requests to the local network are not allowed
  • 原因是因为 GitLab 10.6 版本以后为了安全,不允许向本地网络发送 WebHook 请求。

开启请求

在这里插入图片描述

当开启请求后,重新创建 Token 值即可。

5)验证

在这里插入图片描述

在这里插入图片描述

4.Jenkins 版本升级

在这里插入图片描述

下载后之后,我们只需要将 Jenkins 原有的包替换即可

[root@Jenkins ~]# rpm -ql jenkins											# 查看 Jenkins 包安装路径
[root@Jenkins ~]# systemctl stop jenkins
[root@Jenkins ~]# cd /usr/lib/jenkins/
[root@Jenkins jenkins]# mv jenkins.war jenkins-2.222.4.war.bak
[root@Jenkins jenkins]# ls
jenkins-2.222.4.war.bak  jenkins.war
[root@Jenkins jenkins]# systemctl start jenkins 

在这里插入图片描述

查看

在这里插入图片描述

 到此这篇关于使用GitLab+Jenkins实现持续集成CI环境的示例代码的文章就介绍到这了,更多相关GitLab Jenkins持续集成CI环境内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用GitLab+Jenkins实现持续集成CI环境的示例代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Node.js CI/CD 与容器技术的集成:实现现代化应用的持续交付

为了在当今竞争激烈的市场中保持领先地位,企业需要在持续交付和快速迭代方面具备强大的竞争力。本文将探讨利用Node.js、CI/CD和容器技术进行现代化应用程序持续交付的最佳实践,以帮助您更快地将功能发布给用户,同时确保生产环境的稳定性。
Node.js CI/CD 与容器技术的集成:实现现代化应用的持续交付
2024-02-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录