持续集成环境搭建Jenkins+Gitlab+Gerrit
Posted Bruceoxl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持续集成环境搭建Jenkins+Gitlab+Gerrit相关的知识,希望对你有一定的参考价值。
开发环境:
服务器: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的知乎
欢迎订阅我的微信公众号
以上是关于持续集成环境搭建Jenkins+Gitlab+Gerrit的主要内容,如果未能解决你的问题,请参考以下文章