【Android源码】Gerrit安装

前言

如果你打开 https://android.googlesource.com/platform/manifest,就会发现,google官方管理Android源码,使用的是Gerrit。Android系统源码是非常大的,用Git肯定是不适合。对于大型项目,得用Gerrit,今天就来介绍下Gerrit的安装和使用。

环境

  • ubuntu20
  • Gerrit 3.5.0
  • nginx
  • jdk11

安装

1.1 安装jdk11

# 更新系统软件包
sudo apt update

安装java11

sudo apt install -y openjdk-11-jdk

设置环境变量

# 编辑 .bashrc 或 .zshrc
nano ~/.bashrc  # 或者 nano ~/.zshrc# 添加以下环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export USE_CCACHE=1# 使环境变量生效
source ~/.bashrc  # 或者 source ~/.zshrc
# 验证java
java --version
# 或
echo $JAVA_HOME

1.2 安装nginx

# 安装nginx
sudo apt install -y nginx
systemctl start nginx && systemctl enable nginx

1.3 安装Gerrit

我试过好几个版本,一开始下载的是Gerrit3.6.3,遇到各种问题,还要提前设置用户,下载apache2,后面放弃了,遇到了一些我没处理掉的问题,就改下载Gerrit3.5.0版本

mkdir gerrit
cd gerrit
# 下载gerrit
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.5.0.war -O gerrit-3.5.0.war
# 关闭29418端口的进程
lsof -i:29418
kill -9 <pid>
export GERRIT_SITE=~/gerrit/gerrit_site
java -jar gerrit-3.5.0.war init -d $GERRIT_SITE --batch --install-all-plugins --dev
# 注意,这里一定要--install-all-plugins 否则会导致很多插件没能安装,很多功能就无法使用

使用java安装Gerrit的时候,一定要把一些插件安装好,不然会遇到各种问题,比如,看不到代码的下载入口,无法导入SSH keys等等,如果是重复安装,或者替换安装,需要先确保29418端口空闲。

1.4 修改配置

主要是修改两个配置,一个是ngix的,一个是Gerrit

进入到/etc/nginx/conf.d 中创建gerrit.conf
cd /etc/nginx/conf.d
# 新增conf
touch gerrit.conf
# 用管理员权限编辑配置
sudo nano gerrit.conf

新增内容如下(gerrit.conf)

upstream proxy_pool_gerrit {server localhost:8080 weight=10;keepalive 512;
}server {listen 80;server_name 10.168.10.140;location / {auth_basic "Gerrit Code Review";proxy_pass http://ipaddress:9092;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Authorization $http_authorization;}
}
  • ipaddress: 改成服务器地址
  • port: 端口最好换一下,不要使用默认的8080,有时会出错,莫名其妙

配置修改成功之后,最好验证下是否存在什么问题,并重启ngix

# 检查配置 
sudo nginx -t
# 重启nginx
sudo systemctl restart nginx
# 检查nginx服务状态
sudo systemctl status nginx.service
# 查看Nginx运行日志
sudo journalctl -xe
进入~/gerrit/gerrit_site/etc/gerrit.config
[gerrit]basePath = gitcanonicalWebUrl = http://ipaddress:9092/serverId = 57ec1452-f8f2-40e7-9512-7891cfffd2b5
[container]javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"user = gnlabjavaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]type = lucene
[auth]type = DEVELOPMENT_BECOME_ANY_ACCOUNTuserNameCaseInsensitive = true
[receive]enableSignedPush = false
[sendemail]smtpServer = localhost
[sshd]listenAddress = *:29418
[httpd]listenUrl = http://*:9092/
[cache]directory = cache
[plugins]allowRemoteAdmin = true
  • 同样ipaddress修改一下

1.5 启动Gerrit

进入到gerrit/gerrit_site/bin下,运行gerrit.sh restart命令

sudo ./bin/gerrit.sh restart

1.6 登录

直接通过ip访问,点击sign in 就能打开如下页面,可以通过admin进入
在这里插入图片描述

总结

遇到问题,别慌,一个个解决就好了,按上面流程来,基本没啥问天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368582.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决微信小程序使用textarea输入框 type=“textarea“ 文本输入限制问题

出现的问题 type"textarea" 这个限制 微信小程序使用textarea , 输入字数大于140 时就输入不进去了 加入这个就解决了 maxlength"-1" <u-inputv-model"queryParams.orderIdTxt"border"true":focus"true":auto-height&q…

c++:动态内存变量

典型的C面向对象编程 元素 (1)头文件hpp中类的定义 (2)源文件cpp中类的实现&#xff08;构造函数、析构函数、方法&#xff09; (3)主程序 案例 (1)用C来编程“人一天的生活” (2)“人”的属性&#xff1a;name、age、male (3)“人”的方法&#xff1a;eat、work(coding/shop…

【虚拟机】虚拟机网络无法访问问题【已解决】

【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1&#xff1a;查看相关“网络服务”是否处于正常启动状态法2&#xff1a;重启网络法3&#xff1a;重新安装VMWare法4&#xff1a;使用NAT模式&#xff0c;每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…

香橙派 AIpro 根据心情生成专属音乐

香橙派 AIpro 根据心情生成专属音乐 一、OrangePi AI pro 开发版参数介绍1.1 接口简介1.2 OrangePi AI pro 的Linux系统功能适配情况1.3 开发板开机1.4 远程连接到 OrangePi AIpro 二、开发环境搭建2.1 创建环境、代码部署文件夹2.2 安装 miniconda2.3 为 miniconda 更新国内源…

分子AI预测赛笔记

#AI夏令营 #Datawhale #夏令营 Taks1 跑通baseline 根据task1跑通baseline 注册账号 直接注册或登录百度账号&#xff0c;etc fork 项目 零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 启动项目 选择运行环境&#xff0c;并点击确定&#xff0c;没…

Redis的八种数据类型介绍

Redis 是一个高性能的键值存储&#xff0c;它支持多种丰富的数据类型。每种数据类型都有其特定的用途和底层实现。下面我将介绍 Redis 支持的主要数据类型及其背后的数据结构。 本人这里还有几篇详细的Redis用法文章&#xff0c;可以用来进阶康康&#xff01; 1. 字符串 (Stri…

轻松跨越国界:使用WildCard畅享全球AI服务

大家好&#xff0c;现在AI技术已经深入到我们的日常生活中。然而&#xff0c;许多朋友仍然难以获取优质的AI工具和应用。那么&#xff0c;如何才能使用像ChatGPT这样的AI服务呢&#xff1f; 今天我为大家介绍一个“一劳永逸”的解决方案&#xff0c;它就是我们的主角——WildC…

基于antv x6实现的组织架构图

X6 是基于 HTML 和 SVG 的图编辑引擎&#xff0c;基于 MVC 架构&#xff0c;用户更加专注于数据逻辑和业务逻辑。 一、业务背景 将组织树形结构图形化&#xff0c;更直观的展示个人所在的组织架构。 二、功能点 组织结构按需渲染&#xff0c;支持层级展开、收缩按需求自定义…

秋招突击——设计模式补充——单例模式、依赖倒转原则、工厂方法模式

文章目录 引言正文依赖倒转原则工厂方法模式工厂模式的实现简单工厂和工厂方法的对比 抽线工厂模式最基本的数据访问程序使用工厂模式实现数据库的访问使用抽象工厂模式的数据访问程序抽象工厂模式的优点和缺点使用反射抽象工厂的数据访问程序使用反射配置文件实现数据访问程序…

PhysioLLM 个性化健康洞察:手表可穿戴设备实时数据 + 大模型

个性化健康洞察&#xff1a;可穿戴设备实时数据 大模型 提出背景PhysioLLM 图PhysioLLM 实现数据准备用户模型和洞察生成个性化数据总结和洞察是如何生成的&#xff1f; 解析分析 提出背景 论文&#xff1a;https://arxiv.org/pdf/2406.19283 虽然当前的可穿戴设备伴随应用&…

S272钡铼技术4G无线RTU支持多路DIN输入和模拟量转换至4G网络

钡铼第四代RTU S272是一款先进的工业级4G远程遥测终端&#xff0c;为各种远程工业数据采集和控制系统提供了高效解决方案。结合了现代通信技术和多功能的输入输出接口&#xff0c;S272不仅支持多路数字量和模拟量输入&#xff0c;还具备灵活的扩展性和强大的控制功能&#xff0…

什么是嵌入式,单片机又是什么,两者有什么关联又有什么区别?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;从科普的角度&#xff0c;…

Python酷库之旅-第三方库Pandas(001)

目录 一、Pandas库的由来 1、背景与起源 1-1、开发背景 1-2、起源时间 2、名称由来 3、发展历程 4、功能与特点 4-1、数据结构 4-2、数据处理能力 5、影响与地位 5-1、数据分析“三剑客”之一 5-2、社区支持 二、Pandas库的应用场景 1、数据分析 2、数据清洗 3…

记录OSPF配置,建立邻居失败的过程

1.配置完ospf后&#xff0c;在路由表中不出现ospf相关信息 [SW2]ospf [SW2-ospf-1]are [SW2-ospf-1]area 0 [SW2-ospf-1-area-0.0.0.0]net [SW2-ospf-1-area-0.0.0.0]network 0.0.0.0 Jul 4 2024 22:11:58-08:00 SW2 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25 .1…

二分查找及其变种

一、概念 二分查找算法&#xff08;Binary Search Algorithm&#xff09;是一种在有序数组中查找特定元素的高效搜索方法。 其基本思想是将目标值与数组中间的元素进行比较&#xff0c;如果目标值等于中间元素&#xff0c;则查找成功&#xff1b;如果目标值小于中间元素&…

Visual Studio 设置回车代码补全

工具 -> 选项 -> 文本编辑器 -> C/C -> 高级 -> 主动提交成员列表 设置为TRUE

使用EndNote在Word中插入参考文献,并编辑参考文献样式方法

一、背景 在准备中期报告时&#xff0c;学校给的是Word模板&#xff0c;习惯了Latex排版和添加参考文献的便利后&#xff0c;真不想用word写东西。 之前投《机器人》期刊&#xff08;被拒了&#xff09;和准备开题的时候也是用word写的&#xff0c;当时为方便添加参考文献和定…

【人工智能】--生成对抗网络

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;GAN 的基本原理 &#x1f348;生成器&#xff08;Generator&#xff09; &#x1f348;判别器&…

【嵌入式DIY实例-ESP8266篇】-LCD ST7735显示DS3231 RTC时间

LCD ST7735显示DS3231 RTC时间 文章目录 LCD ST7735显示DS3231 RTC时间1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板 (ESP-12E) 和 DS3231 RTC 模块制作一个简单的数字实时时钟,其中可以使用连接到 NodeMCU 的两个按钮设置时间和日期,并将它们打印(带…

llm学习-4(llm和langchain)

langchain说明文档&#xff1a;langchain 0.2.6 — &#x1f99c;&#x1f517; langChain 0.2.6https://api.python.langchain.com/en/latest/langchain_api_reference.html#module-langchain.chat_models 1&#xff1a;模型 &#xff08;1&#xff09;自定义模型导入&#x…