快捷搜索:
来自 计算机编程 2019-11-05 03:42 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

67677新澳门手机版:Jenkins安插集成,设计思路

学习开发这么久了,自然要将开发中经典的练习软件实践下。


经典的进销存系统功能有很多,我这里想根据角色来介绍,感觉这样思路比较清晰。

引言:

首先是角色分类,一般的分为采购人员、普通员工、系统管理员、审核人员。

  随着IT行业的不断发展,软件开发的复杂度也随着不断提高,软件的开发团队也越来越庞大,如何更好地协同整个团队进行高效准确的工作,确保软件开发的质量成为了开发过程中不可回避的问题。

先介绍所有角色通用的功能

  在软件开发中,不同的功能模块一般由不同的开发成员负责,同一功能模块的各层代码也可能是不同的开发成员编写,经验告诉我们,模块之间的问题是最难解决的,也是最耗费时间的。它需要多个开发人员相互协作找出问题,而协作过程中的沟通所消耗的时间成本是相当高的。而且还可能因为沟通的不足导致模块返工。

  1. 登录
  2. 修改个人信息
  3. 消息管理

  事实上,在持续集成被提出来之前的传统开发方法中常常出现这种情况:由不同程序员开发的单个小模块可以单独工作,但把它们集成为一个大的系统则可能失败。而且集成失败往往是把集成放在开发周期后期,甚至是在项目快结束前单列的一个“总装阶段”。众所周知,问题发现的越晚,其修复的成本也就越高,耗时越长,而且经过新的修复工作后可能诞生新的错误,因此整个系统需要再次进行集成和测试,从而导致整个软件的生产周期漫长且不可预知。


  为了解决由传统开发方法带来的弊端,人们开始采用“早集成、常集成”的持续集成策略。从最初的分阶段集成,到后来的“每日构建” ,再发展到现在的持续集成(Continuous Integration,CI)。持续集成通过自动化构建、自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态。

 

  持续集成服务器是自动构建系统中关键的一部分。Jenkins是一个开源项目,它提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins还能通过自定义安装插件来实现多种多样的功能。持续集成服务器各系统实现功能如下:

采购人员


  1. 添加物品目录(审核需要)
  2. 编辑物品目录(审核自定义)
  3. 采购物品(审核自定义)
  4. 增加供货商(审核自定义)
  5. 修改供货商(审核自定义)

1、Gitlab上进行代码托管


  在Gitlab上创建开发组,加入开发人员,新建开发项目项目并设置权限为Private,普通用户对该项目只有pull权限,不能直接进行push

普通员工

  强制Review :在 Gitlab 上创建的项目,指定相关用户只有Reporter权限,这样用户没有权限使用git push功能,只能git review到Gerrit 系统上,Jenkins在监听Gerrit上的项目事件会触发构建任务来测试代码, Jenkins 把测试结果通过 ssh gerrit 给这个项目打上 Verified (信息校验)成功或失败标记,成功通知其它人员 Review(代码审核) 。

  1. 申报已有的物品(审核需要)
  2. 申请采购人员购买当前未采购的物品(审核需要)
  3. 对已领取的物品进行评价
  4. 查看个人申报历史

  Gitlab保护Master 分支:在 Gitlab 上创建的项目可以把 Master 分支保护起来,普通用户可以自己创建分支并提交代码到自己的分支上,没有权限直接提交到Master分支,用户最后提交申请把自己的分支 Merge 到 Master ,管理员收到 Merge 请求后, Review 后选择是否合并。


  因为Gitlab和Gerrit做了同步,Gerrit上的代码会同步到Gitlab上。

审核人员

2、Gerrit审核代码

  1. 审核采购人员新添加的目录
  2. 审核普通员工请已有的物品
  3. 审核普通员工社会申请当前未采购的物品

  普通用户将Gitlab里的项目clone到本地,修改代码后,虽不能直接push到代码中心 ,但是可以通过git review提交到Gerrit上进行审核。Gerrit相关审核员看到review信息后,判断是否通过,通过即commit提交。然后,Gerrit代码会和Gitlab完成同步。


  Gerrit的精髓在于不允许直接将本地修改同步到远程仓库。客户机必须先push到远程仓库的refs/for/*分支上,等待审核。

 

  Gerrit上也可以对比代码审核提交前后的内容状态。

管理员

3、Jenkins代码发布

  1. 人员管理
    1. 新增普通员工、采购人员、审核人员
    2. 编辑人员的权限
    3. 重置人员登录密码
    4. 删除人员信息
  2. 系统参数管理
    1. 设置系统功能状态

  当用户git review后,代码通过Jenkins自动测试(verified)、人工review 后,代码只是merge到了Gerrit的项目中,并没有merge到 Gitlab的项目中,所以需要当 Gerrit 项目仓库有变化时自动同步到Gitlab的项目仓库中。Gerrit 自带一个 Replication 功能,同时我们在安装 Gerrit 时候默认安装了这个 Plugin,通过添加replication.config 给 Gerrit即可。



 

CI持续集成系统安装部署流程描述如下:

Gerrit部署配置

1、 安装JDK

[root@Ubuntu]#sudo add-apt-repository ppa:webupd8team/java

[root@Ubuntu]#sudo apt-get update

[root@Ubuntu]#sudo apt-get install oracle-java8-installer

2、 安装mysql

[root@Ubuntu]#sudo apt-get install mysql-server mysql-client #中途会让你输入一次root用户密码(密码:root)

3、 创建gerrit数据库

[root@Ubuntu]#mysql –uroot –p 进入mysql创建gerrit数据库gerritdb

mysql>create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql>grant all on gerritdb.* to 'gerrit'@'localhost' identified by '123456';

mysql>flush privileges;

4、 安装配置并启动nginx(反向代理端口设为9095)

[root@Ubuntu]#sudo apt-get install nginx

[root@Ubuntu]#cd /etc/nginx/conf.d

[root@Ubuntu]#vim gerrit.conf

server {

 listen 9095;

 server_name localhost;

 allow all;

 deny all;

 auth_basic "Welcomme to Gerrit Code Review Site!";

 auth_basic_user_file /home/gerrit/gerrit_site/etc/passwords;

 location / {

 proxy_pass http://10.0.2.15:9091;

 }

 }

[root@Ubuntu]#sudo /etc/init.d/nginx start

5、 安装git

[root@Ubuntu]#  sudo apt-get install git

6、 安装git-review

[root@Ubuntu]#sudo apt-get install git-review

7、 安装gerrit

[root@Ubuntu]#useradd –m gerrit

切换用户gerrit

[root@Ubuntu]#su – gerrit

将gerrit安装包gerrit-2.11.3.war放在相应目录下,执行:

[gerrit@Ubuntu]$java -jar gerrit-2.11.3.war init -d ~/gerrit_site

安装gerrit

安装过程提示的配置项可在gerrit安装完成后在gerrit配置文件中进行配置。

8、 配置gerrit

[gerrit@Ubuntu]$cd /home/gerrit/gerrit_site/etc

[gerrit@Ubuntu]$vi gerrit.config

配置文件内容:

[gerrit]

 basePath = git

 canonicalWebUrl = http://10.0.2.15:9091/

[database]

 type = mysql

 hostname = localhost

 database = gerritdb

 username = gerrit

[index]

 type = LUCENE

[auth]

 type = HTTP

[sendemail]

 smtpServer = smtp.qq.com

 smtpServerPort = 465

 smtpEncryption = ssl

 smtpUser = xxx@qq.com

 smtpPass = xxxxxxxxxxxx

 sslVerify = false

 from = CodeReview<xxx@qq.com>

[container]

 user = gerrit

 javaHome = /usr/lib/jvm/java-8-oracle/jre

[sshd]

 listenAddress = *:29418

[httpd]

 listenUrl = proxy-http://10.0.2.15:9091

[cache]

 directory = cache

9、 启动gerrit

[gerrit@Ubuntu]$/home/gerrit/gerrit_site/bin/./gerrit.sh restart

10、 浏览器地址栏输入http://10.0.2.15:9095访问gerrit,弹出登录对话框

67677新澳门手机版 1

浏览器访问Gerrit

Gerrit搭建成功!

11、 gerrit添加用户

注意:第一次加-c参数是为了创建密码文件,默认第一个用户是系统管理员

[root@Ubuntu]#  htpasswd -c /home/gerrit/gerrit_site/etc/passwords gerrit

New password:

Re-type new password:

[root@Ubuntu]#htpasswd /home/gerrit/gerrit_site/etc/password jenkins5062

New password:

Re-type new password:

[root@Ubuntu]#htpasswd /home/gerrit/gerrit_site/etc/password jenkins

New password:

Re-type new password:

12、 登录gerrit并注册用户邮箱

1) 输入用户名密码,进入gerrit页面

67677新澳门手机版 2

输入用户名密码,进入gerrit页面

2) 打开My->Groups->Contact Information页面进行邮箱注册

67677新澳门手机版 3

用户邮箱注册

3)单击Register New Email按钮,在提示框内输入邮箱地址,进行注册

67677新澳门手机版 4

用户邮箱注册

3) 打开邮箱,查看验证邮件,打开验证链接,用户邮箱注册成功

67677新澳门手机版 5

用户邮箱注册成功

13、 生成用户公私钥并进行配置

1)切换到需要配置公私钥的用户,执行生成公私钥操作

[gerrit@Ubuntu]$ su - gerrit

[gerrit@Ubuntu]$ ssh-keygen -t rsa -C gerrit5062@163.com         //产生公私钥

 [gerrit@Ubuntu]$cat ~/.ssh/id_rsa.pub

67677新澳门手机版 6

获取用户公钥

2)使用用户账号登录gerrit系统,将公钥添加到用户的SSH Public keys

67677新澳门手机版 7

Gerrit添加用户SSH Public keys

一、Gitlab部署配置

1、 安装Gitlab

[root@Ubuntu] #sudo apt-get install -y curl openssh-server ca-certificates

[root@Ubuntu] #sudo apt-get install -y postfix

[root@Ubuntu]#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

[root@Ubuntu] #sudo apt-get install gitlab-ee

[root@Ubuntu] #sudo gitlab-ctl reconfigure

2、 Gitlab配置

Gitlab配置信息位于/etc/gitlab/目录下的gitlab.rb文件,

[root@Ubuntu] #cd /etc/gitlab/

[root@Ubuntu] #vim gitlab.rb配置gitlab,相关配置如下:

67677新澳门手机版 8

Gitlab配置文件信息

67677新澳门手机版 9

Gitlab配置文件信息

67677新澳门手机版 10

Gitlab配置文件信息

67677新澳门手机版 11

Gitlab配置文件信息

配置完成后,重新启动gitlab

[root@Ubuntu] #sudo gitlab-ctl configure

3、 配置root用户密码,登录gitlab

1)终端执行

  [root@Ubuntu] #gitlab-rails console production

irb(main):001:0>u=User.where(id:1).first

u.password = 'secret_pass'

 >u.password_confirmation = 'secret_pass'

>u.save!

2)root登录gitlab

67677新澳门手机版 12

登录gitlab

67677新澳门手机版 13

登录gitlab

4) 添加用户,此处新增gerrit用户为管理员

67677新澳门手机版 14

新增gerrit用户为管理员

5) gerrit用户登录gitlab,添加SSH Public Keys

67677新澳门手机版 15

Gitlab添加用户gerrit SSH Public Keys

二、Jenkins部署配置

1、安装jenkins

[root@Ubuntu] #wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

[root@Ubuntu] #sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

[root@Ubuntu] #sudo apt-get update

[root@Ubuntu] #sudo apt-get install Jenkins

2、jenkins默认端口为8080,为防止端口冲突,重新配置端口号为8082

[root@Ubuntu] #cd /etc/default

[root@Ubuntu] #vim Jenkins

67677新澳门手机版 16

修改Jenkins配置文件

4、 启动jenkins

[root@Ubuntu] #/etc/init.d/Jenkins start

5、 登录jenkins

1) 初始默认密码在/var/lib/Jenkins/secrets目录下的initialAdminPassword文件中

cat /var/lib/Jenkins/secrets/initialAdminPassword

登录后重新配置jenkins账号密码,默认管理员用户为jenkins。

2) 登录jenkins

67677新澳门手机版 17

Jenkins登陆页面

67677新澳门手机版 18

Jenkins首页

Jenkins搭建完成。

6、 jenkins系统配置

1) 进入Jenkins系统配置界面

67677新澳门手机版 19

Jenkins系统配置界面

Jenkins Location配置:

67677新澳门手机版 20

Jenkins Location配置

Email-Notification配置:

67677新澳门手机版 21

Email-Notification配置

2) 进入Jenkins插件管理界面

67677新澳门手机版 22

Jenkins插件管理

搜索选择(Available)需要安装的插件,(构建工具gradle,Gerrit事件触发器gerrit_trigger, 版本控制工具Git plugin)

67677新澳门手机版 23

Available可安装插件

构建工具(Gradle)实现项目的自动构建、自动测试、自动部署等功能。Gerrit事件触发器Gerrit_trigger监听Gerrit系统事件。版本控制工具(Git plugin)保证项目源码处于有序的管理中,方便开发人员随时获取和提交变更。

三、Gitlab与Gerrit集成

1、Gitlab项目设置

管理员用户在Gitlab系统新建开发组dev-group,新建项目user,将开发人员加入开发组并配置为reporter权限,reporter用户没有push权限,只能使用 git review 命令提交,而 git review 命令需要 .gitreview 文件存在于项目目录里。管理员gerrit用户添加.gitreview 文件

[root@Ubuntu] #su – gerrit

[gerrit@Ubuntu]$git clone [git@10.0.2.15:dev-group/user.git](mailto:git@10.0.2.15:dev-group/user.git)

[gerrit@Ubuntu]$cd user

[gerrit@Ubuntu]$ vim .gitreview

67677新澳门手机版 24

编辑.gitreview文件

67677新澳门手机版 25

编辑.gitreview文件

添加.gitreview到版本库

[gerrit@Ubuntu]$ git add .gitreview

[gerrit@Ubuntu]$ git config --global user.name 'gerrit'

[gerrit@Ubuntu]$git config --global user.email 'gerrit5062@163.com'

[gerrit@Ubuntu]$ git commit .gitreview -m 'add .gitreview file by gerrit.'

[gerrit@Ubuntu]$ git push origin master

项目目录下缺少.gitreview文件,开发人员git review时会报错:

No '.gitreview' file found in this repository. We don't know where

your gerrit is. Please manually create a remote named "gerrit" and try

again.

2、Gerrit设置项目

gitlab上的项目能在gerrit上review的话,必须在gerrit上创建相同的项目,并有相同的仓库文件,所以gerrit上的项目最好是从gitlab上git clone --bare过来,并且项目不要为空

1)clone --bare Gitlab上的仓库到 Gerrit

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:67677新澳门手机版:Jenkins安插集成,设计思路

关键词: