时人不识凌云木,直待凌云始道高。这篇文章主要讲述《持续集成实践指南》第2章 持续集成环境搭建Jenkins+Gitlab+Gerrit相关的知识,希望能为你提供帮助。
开发环境:
服务器:Ubuntu Server 20.04
2.1简介Jenkins是一个独立的开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
Jenkins的主要作用:
- 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
- 监控一些定时执行的任务。
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安装
??官网??
- 拉取Jenkins镜像文件
$sudo docker pull jenkins/jenkins
- 创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。
#sudo chown -R 1000:1000 /jenkins
- 创建并启动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 给容器起一个别名
- 查看jenkins是否启动成功,如下图出现端口号,就为启动成功了
$sudo docker ps -l
- 查看docker容器日志。
# docker logs jenkins
- 修改Jenkins镜像(非必须)
可以将默认源修改为清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 获取管理员密码,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。
$ cat /jenkins/secrets/initialAdminPassword
- 访问Jenkins页面,输入ip:10240
值得注意的是,这里默认是在/var/jenkins_home/secrets/initialAdminPassword。我们这里自定义了目录,因此在cat /jenkins/secrets/initialAdminPassword文件中。
- 插件安装
选择推荐的插件,等待片刻即可安装完成。
- 创建管理员用户。
- 配置Jenkins URL。
- 访问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安装
??官网??
- 拉取Gerrit镜像文件
$sudo docker pull gerritcodereview/gerrit
- 创建Gerrit挂载目录并授权权限(我们在服务器上先创建一个Gerrit工作目录稍后我们将Gerrit容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。
$sudo chown -R 1000:1000 /gerrit
- 运行容器
$sudo docker run -d \\
--name gerrit \\
-p 8080:8080 \\
-p 29418:29418 \\
-v /gerrit:/var/gerrit/review_site \\
gerritcodereview/gerrit
- 访问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
输入管理员密码后,会提示安装插件。
【《持续集成实践指南》第2章 持续集成环境搭建Jenkins+Gitlab+Gerrit】
选择推荐的插件,等待片刻即可安装完成。
然后创建管理员用户。
最后还需要配置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 将使用 Lets 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安装快速,效率高;
- docker隔离性好,互相不干扰,只要映射主机端口不同即可;
- 数据备份、迁移,docker更方便强大;
- 卸载管理更方便和干净,直接删除容器和镜像即可;
推荐阅读
- 注解+反射优雅的实现Excel导入导出(通用版)
- 生成订单30分钟未支付,则自动取消,该怎么实现()
- shell正则表达式(sedawk 之文本三剑客其二)
- 仪表板和管理面板中的WordPress自定义分类术语自定义顺序
- WordPress自定义分类术语描述html标签
- WordPress自定义查询分页
- wordpress自定义帖子类型按标签ID循环
- WordPress连接字符串
- WordPress-为特定菜单定制的wp_nav_menu