开发环境:
服务器:Ubuntu Server 20.04

2.1简介

Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。

Jenkins的主要作用:
1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
2.监控一些定时执行的任务。

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,随着git的流行,越来越多的技术团队通过在自己的服务器搭建gitlab来实现代码的管理。

Gerrit 是建立在Git版本控制系统之上并且基于Web的一个免费开源的轻量级代码审查工具。作为开发者和Git之间的一层屏障,不允许直接将本地修改内容同步到远程仓库中。与Jenkins集成后,可以在每次提交代码后,人工审核代码前,通过Jenkins任务自动运行单元测试、构建以及自动化测试,如果Jenkins任务失败,会自动打回本次提交。

2.2 Docker方式安装

2.2.1 Docker安装

Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

$ sudo apt-get remove docker docker-engine docker.io containerd runc

安装命令如下:

$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

$ curl -sSL https://get.daocloud.io/docker | sh

安装成功执行下面语句,如果有类似回显,说明安装成功。

$ docker --version

或者使用docker version查看完整信息。

2.2.2 Jenkins安装

官网

1.拉取Jenkins镜像文件

$sudo docker pull jenkins/jenkins

2.创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。

#sudo chown -R 1000:1000 /jenkins

3.创建并启动Jenkins容器

$sudo docker run -d -p 10240:8080 -p 10241:50000 -v /jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins

命令参数释义:
-d 后台运行镜像
-p 10240:8080 将镜像的8080端口映射到服务器的10240端口。
-p 10241:50000 将镜像的50000端口映射到服务器的10241端口
-v /jenkins:/var/jenkins_mount 其中/jenkins目录为容器jenkins工作目录。
-v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
–name jenkins 给容器起一个别名

4.查看jenkins是否启动成功,如下图出现端口号,就为启动成功了

$sudo docker ps -l

5.查看docker容器日志。

# docker logs jenkins

6.修改Jenkins镜像(非必须)
修改hudson.model.UpdateCenter.xml里的内容。

可以将默认源修改为清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

7.获取管理员密码,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。

$ cat /jenkins/secrets/initialAdminPassword

8.访问Jenkins页面,输入ip:10240

值得注意的是,这里默认是在/var/jenkins_home/secrets/initialAdminPassword。我们这里自定义了目录,因此在cat /jenkins/secrets/initialAdminPassword文件中。

9.插件安装
输入管理员密码后,会提示安装插件。

选择推荐的插件,等待片刻即可安装完成。

10.创建管理员用户。

11.配置Jenkins URL。

12.访问Jenkins页面,输入ip:10240

2.2.3 GitLab安装

在开始安装前,可以先搜索 gitlab 镜像。

$ sudo docker search gitlab

这里安装社区版gitlab-ce,先下载镜像。

$sudo docker pull gitlab/gitlab-ce

下载完成后,通过 docker images 查看当前系统所有的镜像;

$sudo docker images

接下来可以运行gitlab了。
建立相关存储文件夹,主要存放GitLab的配置 (etc)、日志(log)、数据 (data) 文件,放到容器之外,便于日后升级,因此需要先准备这三个目录。

$sudo chown -R 1000:1000 /gitlab

接下来运行如下命令安装Gitlab。

$ sudo docker run -d -h gitlab -p 8443:443 -p 8085:80 -p 2222:22 \
--name gitlab --restart always \
-v /gitlab/etc:/etc/gitlab \
-v /gitlab/log:/var/log/gitlab \
-v /gitlab/opt:/var/opt/gitlab \
docker.io/gitlab/gitlab-ce

命令参数释义:
-d:后台运行
-p:将容器内部端口向外映射
–name:命名容器名称
-v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

接下来查看是否运行成功。

$sudo docker ps

访问GitLab页面,输入ip:8085

在安装gitlab后,默认使用root登陆,密码在etc目录下。

打开initial_root_password文件获取root登陆密码,登陆后即可修改密码。

2.2.4 Gerrit安装

官网

1.拉取Gerrit镜像文件

$sudo docker pull gerritcodereview/gerrit

2.创建Gerrit挂载目录并授权权限(我们在服务器上先创建一个Gerrit工作目录稍后我们将Gerrit容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。

$sudo chown -R 1000:1000 /gerrit

3.运行容器

$sudo docker run -d \--name gerrit \-p 8080:8080 \-p 29418:29418 \-v /gerrit:/var/gerrit/review_site \gerritcodereview/gerrit

4.访问Gerrit页面,输入ip:8080

以上工具均在同一个虚拟环境中安装,只是把各自的端口做了相应的调整。

2.3普通方式安装

2.3.1安装 Oracle Java 8

持续集成工具是基于Java开发的,因此需要java运行时环境(JRE)。这里就提前安装好。
方法一、自动安装

$sudo add-apt-repository ppa:webupd8team/java
$sudo apt update
$sudo apt install oracle-java8-installer

设置为默认 JDK

sudo update-java-alternatives -s java-8-oracle

方法二、手动安装(推荐)
oracle Java官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
(以jdk-8u311-linux-x64.tar.gz为例)
a.创建目录:

$sudo mkdir /usr/lib/jvm

b.解压缩到该目录:

$sudo tar -zxvf jdk-8u311-linux-x64.tar.gz -C /usr/lib/jvm

c.修改环境变量:

$vi ~/.bashrc

在文件末尾追加下面内容:

#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_311 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

使环境变量马上生效:

$source ~/.bashrc

d.将此 JDK 注册到系统中

$sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_311/bin/java 300

e.查看java版本,看看是否安装成功:

$java -version

如果你安装了多个版本的jdk,你可以通过以下命令在这些版本之间切换:

$sudo update-alternatives --config java

2.3.2 Jenkins安装

官网
1.安装Jenkins
在基于Debian的发行版,如Ubuntu,您可以通过安装Jenkins apt。最近的版本在一个apt存储库中可用。旧的但稳定的LTS版本在这个apt存储库。

$ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \/usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \https://pkg.jenkins.io/debian-stable binary/ | sudo tee \/etc/apt/sources.list.d/jenkins.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install jenkins

2.登录Jenkins

首先获取管理员登录密码,默认密码在/var/lib/jenkins/secrets/initialAdminPassword文件中,打开initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

接着访问Jenkins页面,输入ip:8080

输入管理员密码后,会提示安装插件。

选择推荐的插件,等待片刻即可安装完成。

然后创建管理员用户。

最后还需要配置Jenkins URL。

配置完成后就可访问Jenkins,输入ip:8080

2.3.3 GitLab安装

官网

1.安装并配置必要的依赖

$ sudo apt-get update
$ sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

接下来,安装 Postfix 以发送通知电子邮件。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并 在安装 GitLab 后配置外部 SMTP 服务器。

$ sudo apt-get install -y postfix

在 Postfix 安装过程中,可能会出现一个配置屏幕。选择“Internet 站点”并按 Enter。将您服务器的外部 DNS 用于“邮件名称”,然后按 Enter。如果出现其他屏幕,请继续按 Enter 接受默认值。

2.添加GitLab包仓库并安装包
添加 GitLab 包存储库。

$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

接下来,安装 GitLab 包。确保您已正确设置您的 DNS,并更改https://gitlab.bruceou.com为您要访问 GitLab 实例的 URL。安装将在该 URL 上自动配置和启动 GitLab。
对于https://URL,GitLab 将使用 Let’s Encrypt自动请求证书,这需要入站 HTTP 访问和有效的主机名。您也可以使用自己的证书或仅使用http://(不带s)。
如果您想为初始管理员用户 ( root)指定自定义密码,请查看文档。如果未指定密码,将自动生成随机密码。

$ sudo EXTERNAL_URL="https://gitlab.bruceou.com" apt-get install gitlab-ce

3.浏览到主机名并登录
除非您在安装过程中提供了自定义密码,否则将随机生成一个密码并在/etc/gitlab/initial_root_password. 使用此密码和用户名root登录。

2.3.4 Gerrit安装

官网

1.获取Gerrit软件

$wget https://gerrit-releases.storage.googleapis.com/gerrit-3.0.3.war

2.安装并初始化Gerrit

$export GERRIT_SITE=~/gerrit_testsite
$java -jar gerrit*.war init --batch --dev -d $GERRIT_SITE

3.配置Gerrit

$git config --file $GERRIT_SITE/etc/gerrit.config httpd.listenUrl 'http://localhost:8080'

4.重启Gerrit

$GERRIT_SITE/bin/gerrit.sh restart

5.登录Gerrit
访问Gerrit页面,输入ip:8080

值得注意的是,以上三个软件的默认端口号会冲突,因此需要重新去规划三个软件的端口,除非不在同一个服务器,笔者在使用普通的安装方式时分别使用了三个虚拟机进行演示的。

笔者推荐的方式是使用docker安装,使用docker安装有以下优势:

1.docker安装快速,效率高;
2.docker隔离性好,互相不干扰,只要映射主机端口不同即可;
3.数据备份、迁移,docker更方便强大;
4.卸载管理更方便和干净,直接删除容器和镜像即可;

另外,使用docker还有一个好处就是,对平台依赖性小,虽然笔者是在Ubuntu上演示,但是你在Centos上也docker命令同样适用,非常的方便。

当然啦,如果你愿意折腾,尽情去折腾吧。



欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎


欢迎订阅我的微信公众号

《持续集成实践指南》第2章 持续集成环境搭建Jenkins+Gitlab+Gerrit相关推荐

  1. 《持续集成实践指南》第1章 DevOps实践简介

    1.1 Devops概念 DevOps(英文Development和Operations的组合)是开发和运维一体一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA ...

  2. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  3. 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册

    1)实验平台:正点原子RV1126 Linux开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套实验源码+手册+视频 ...

  4. 代驾APP_第一章_项目环境搭建_第一节

    代驾APP_第一章_项目环境搭建 文章目录 代驾APP_第一章_项目环境搭建 1-1 创建根项目 一.创建SpringBoot项目 二.覆盖pom.xml文件 1-2 创建根项目 一.创建公共模块 二 ...

  5. 代驾APP_第一章_项目环境搭建_第二节

    代驾APP_第一章_项目环境搭建_第二节 文章目录 代驾APP_第一章_项目环境搭建_第二节 1-11 创建bff-driver服务 一.创建项目 二.配置pom.xml文件 三.编写YML配置文件 ...

  6. Java | 第一章:Java环境搭建

    系列文章目录 第一章:Java环境搭建 文章目录 系列文章目录 前言 一.Java及其特性 二.使用步骤 1.下载安装 2.环境配置 总结 前言 Java 是由 Sun Microsystems 公司 ...

  7. HT合泰单片机入门教程(第一章 HT单片机环境搭建)

    目录 系列文章目录 前言 一.合泰单片机的优势 二.IDE安装 1.HT-IDE3000下载 2.HT-IDE3000安装 三.烧录软件安装 1.HOPE3000下载 2.HOPE3000安装 总结 ...

  8. 寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 Ubuntu 18.04 MLU270 加速卡一张 前 ...

  9. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建

    项目简介 Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Samp ...

最新文章

  1. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
  2. linux I/O--IO原理和几种零拷贝机制(五)
  3. 【Android 应用开发】 Android 相关代码规范 更新中 ...
  4. 继承复习-发均分红包案例
  5. github加速-解决GitHub访问速度很慢的问题
  6. [TCP/IP] TCP流和UDP数据报之间的区别
  7. hp服务器如何ghost系统,惠普(HP)电脑安装不了GHOST系统的解决办法
  8. [jquery]为jQuery.ajax添加onprogress事件
  9. 【熊猫多模式站群开发日志】 优化了关键词调度和模板调度
  10. 召唤AI大神与病毒作战!Kaggle发起CORD-19数据集文本挖掘竞赛
  11. php中phpmyadmin打不开,解决phpMyAdmin打不开的方法
  12. ps如何制作霓虹字体
  13. matlab检验贝塔分布规律,贝塔分布背后的直觉:概率的概率分布
  14. 有关reducer拆分的学习
  15. python3实现cv2+numpy裁剪不规则四边形图片
  16. 码云Gitee WebHook Jenkins 403 err:No valid crumb was included in the request
  17. pwnable-shellshock
  18. 四个核心技术构成智能语音系统
  19. Redis设计与实现-读书笔记
  20. perl中的反勾号(``),system和exec

热门文章

  1. CCF-CSP 202112-3 登机牌条码 100分
  2. STL优先队列实现堆(模板 附力扣题目)
  3. SAP外协成品收货扣组件的逻辑(外协库存不足时仍然更新提货数)
  4. 如何让一个电机转起来
  5. python股票全套系统_GitHub - hyspider/stock: stock,股票系统。使用python进行开发。
  6. LabVIEW编程LabVIEW开发欧姆龙E5CC温控器 例程与相关资料
  7. uniPush消息推送 ios证书配置
  8. 难怪好人有恶报,原来秘密在这里
  9. 十道简单算法题二【Java实现】
  10. 你了解kafka的Reblance机制吗?