首页 > 作文

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

更新时间:2023-04-04 11:00:12 阅读: 评论:0

目录
一、持续集成简介1.gitlab 简介2.jenkins 简介3.gi辣条的制作过程tlab 和 github 的区别4.持续集成系统的工作流程二、使用 gitlab + jenkins 实现持续集成(ci)环境1.安装 gitlab1)登录 gitlab2)配置邮件报警3)创建群组4)创建项目5)配置免密克隆2.安装 jenkins1)登录 jenkins,并安装相关插件2)配置 jenkins 实现 gitlab 更新代码3)在 jenkins 上创建项目4)将代码发布到 web 服务器5)验证3.实现 jenkins 自动部署1)安装插件2)配置身份验证令牌3)在 jenkins 上配置触发器4)在 gitlab 的项目上配置链接和 token5)验证4.jenkins 版本升级

一、持续集成简介

持续集成: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 可以在上面创建私人的985学校免费仓库。gitlab 让开发团队对他们的代码仓库拥有更多的控制。

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

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

二、使用 gitlab + jenkins 实现持续集成(ci)环境

准备工作

主机名操作系统硬件ip 地址gitlabcentos 7.44 g(联网状态)192.168.1.1jenkinscentos 7.44 g(联网状态)192.168.1.2apachecentos 7.42 g192.168.1.3

1.安装 gitlab

安装 gitlab 所需组件

[root@gitlab ~]# yum install -y curl policycoreutils openssh-rver 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 ~]# lsanaconda-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 ~]# d -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'] = truegitlab_rails['smtp_address'] = 'smtp.qq.com'# smtp 服务器gitlab_rails['smtp_port'] = 465# smtp 服务器端口号gitlab_rails['smtp_ur_name'] = '2085077346@qq.com'# 邮件账号gitlab_rails['smtp_password'] = '' # 邮件授权码gitlab_rails['smtp_authentication'] = 'login'gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['gitlab_email_from'] = '2085077346@qq.com'

重置 gitlab

[root@gitlab ~]# gitlab-ctl reconfigure

登录控制台发送测试邮件

[root@gitlab ~]# gitlab-rails consoleirb(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 ~]# lsanaconda-ks.cfg  gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm  test[root@gitlab ~]# cd test/[root@gitlab test]# ls1.html

2.安装 jenkins

安装 jdk(因为 jenkins 是使用 java 编写的,所以需要先安装 jdk)

[root@jenkins ~]# tar xf jdk-8u181-linux-x64.tar.gz[root@jenkins ~]# lsanaconda-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/profilejava_home=/usr/local/java/path=$java_home/bin:$pathclasspath=$java_home/jre/lib/ext:$java_home/lib/tools.jarexport path java_home classpathend
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version# 查看 java 版本java version "1.8.0_181"java(tm)  runtime environment (build 1.8.0_181-b13)java hotspot(tm) 64-bit rver 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 ~]# lsanaconda-我国的最高国家权力机关是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 ~]# d -i '/^jenkins_ur/cjenkins_ur="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 出现版本差异,不用管,后面我泰国说什么语言会对 je常见的英语nkins 进行升级操作。

配置 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/bashscp /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 12038ef13e10ef686193784383

注意:-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]# lsjenkins-2.222.4.war.bak  jenkins.war[root@jenkins jenkins]# systemctl start jenkins 

查看

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

本文发布于:2023-04-04 11:00:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b29020fd502b7a996eb8a157ca33aa61.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:使用GitLab+Jenkins实现持续集成CI环境的示例代码.doc

本文 PDF 下载地址:使用GitLab+Jenkins实现持续集成CI环境的示例代码.pdf

标签:代码   项目   插件   仓库
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图