【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.pswp.cn/diannao/40645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40645.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40645.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NoSQL之Redis高可用與優化

一、Redis高可用 在web服務器中&#xff0c;高可用是指服務器可以正常訪問的時間&#xff0c;衡量的標準是在多長時間內可以提供正常服務&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis語境中&#xff0c;高可用的含義似乎要寬泛一些&#xff0c;除了保證…

二叉樹的鏈式訪問 與 二叉樹專題

目錄 二叉樹的前、中、后序遍歷求二叉樹第K層節點的個數二叉樹查找值為x的節點leetcode相同的樹對稱二叉樹二叉樹的前序遍歷另一棵子樹牛客 二叉樹的遍歷 二叉樹的前、中、后序遍歷 1.前序遍歷&#xff1a;先訪問根節點&#xff0c;再訪問左子樹&#xff0c;最后訪問右子樹 根…

【備忘】fastadmin 如何獲取列表選中行的pk

去官方搜沒搜出來&#xff0c;還得是萬能的網友厲害。 //獲取選中項 $(document).on("click", ".btn-selected", function () {// 獲取選中項idsconsole.log(JSON.stringify(Table.api.selectedids(table)));// 獲取選中項所有數據console.log(JSON.strin…

輸入一個整數n,輸出n的約數為質數的數?兩個問題n的約數問題和n的質數問題

輸入一個整數n&#xff0c;輸出n的約數為質數的數&#xff1f; 一.首先解決n的質數的問題&#xff08;1&#xff09;枚舉法&#xff08;2&#xff09;埃氏篩 二.解決n的質數約數問題 一.首先解決n的質數的問題 &#xff08;1&#xff09;枚舉法 考慮質數的定義&#xff1a;在大…

conda中創建環境并安裝tensorflow1版本

conda中創建環境并安裝tensorflow1版本 一、背景二、命令三、驗證一下 一、背景 最近需要使用tensorflow1版本的&#xff0c;發個記錄&#xff01; 二、命令 conda create -n tf python3.6 #創建tensorflow虛擬環境 activate tf #激活環境&#xff0c;每次使用的時候都…

理解策略梯度方法:從REINFORCE到PPO

今年2月的時候&#xff0c;導師突然告訴我Ron William離世了。他算是我導師的 a life time friend&#xff0c;關系很好&#xff0c;我做畢業論文的時候&#xff0c;他還來參與了論文的答辯。Ron是一個很友善的老頭&#xff0c;和他在強化學習領域的影響力比起來&#xff0c;本…

汽車信息安全--數據安全:圖像脫敏

General 隨著車聯網的發展&#xff0c;汽車越來越智能化&#xff0c;就像是一部“裝著四個輪子的手機”。 有人說&#xff0c;智能手機就如同一部竊聽器&#xff0c;無論你開機或者關機&#xff0c;它都會無時不刻地監聽著用戶的一舉一動。 可想而知&#xff0c;智能車輛上…

馬工程刑法期末復習筆記重點2

馬工程刑法期末復習筆記重點2

SpringBoot 參數校驗

參數校驗 引入springvalidation依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>參數前添加Pattern public Result registry(Pattern(regexp &qu…

Java面向對象練習(2.商品類)(2024.7.4)

商品類 package Supermarket20240704;public class Commodity {private String name;private double price;private int inventory;public Commodity(){};public Commodity(String name, double price, int inventory){this.name name;this.price price;this.inventory inv…

Java核心技術【十九】Iterator與增強for循環

Java中的Iterator與增強for循環 在Java編程中&#xff0c;迭代是處理集合元素的一種常見操作。Java提供了多種迭代集合元素的方式&#xff0c;其中最常用的兩種是Iterator和增強for循環&#xff08;也稱為“for-each”循環&#xff09;。本文將深入探討這兩種迭代方式的特性和…

CLAM用于弱監督WSI分析

計算病理學&#xff08;computational pathology&#xff09;下的深度學習方法需要手動注釋大型 WSI 數據集&#xff0c;并且通常存在領域適應性和可解釋性較差的問題。作者報告了一種可解釋的弱監督深度學習方法&#xff0c;只需要WSI級標簽。將該方法命名為聚類約束注意力多實…

Perl 格式化輸出:提升代碼可讀性的技巧

引言 Perl 是一種功能強大的腳本語言&#xff0c;廣泛用于文本處理、系統管理、網絡編程等多個領域。在 Perl 編程中&#xff0c;代碼的格式化輸出不僅有助于提升代碼的可讀性&#xff0c;還能增強程序的用戶體驗。本文將詳細介紹如何在 Perl 中實現代碼的格式化輸出。 Perl …

【HarmonyOS4學習筆記】《HarmonyOS4+NEXT星河版入門到企業級實戰教程》課程學習筆記(二十一)

課程地址&#xff1a; 黑馬程序員HarmonyOS4NEXT星河版入門到企業級實戰教程&#xff0c;一套精通鴻蒙應用開發 &#xff08;本篇筆記對應課程第 31 節&#xff09; P31《30.數據持久化-關系型數據庫》 上一節中學習了使用用戶首選項的方式實現數據持久化&#xff0c;但用戶首…

微機原理 選擇題

D C MOV、PUSH、POP、XLAT&#xff08;查表&#xff09;、IN、OUT不影響標志位 D B D C D C D B 1. (單選題, 5分)8位無符號數(字節)表示的數值范圍是( ), 16位無符號數(字)表示的數值范圍是( )。 A. 0~128 0~32768B. 0~255 0~655…

為什么 npm run serve 正常,npm run build 就報錯:digital envelope routines::unsupported

這個錯誤通常與 Node.js 版本和使用的加密算法有關。讓我解釋一下原因和可能的解決方案&#xff1a; 錯誤原因 這個錯誤&#xff08;“error:0308010C:digital envelope routines::unsupported”&#xff09;通常發生在以下情況&#xff1a; 使用較新版本的 Node.js&#xf…

Vscode快捷鍵崩潰

Vscode快捷鍵崩潰 Linux虛擬機下使用vscode寫代碼【ctrlA&#xff0c;CtrlC&#xff0c;CtrlV】等快捷鍵都不能使用&#xff0c;還會出現“NO text insert“等抽象的指令&#xff0c;問題就是不知道什么時候裝了一個VIM插件&#xff0c;讓他滾出電腦》》》

監聽 web 容器內的網絡請求(錯誤的方案)

需求 iOS 項目中 wkwebview 實現的 web 容器&#xff0c;需要監聽 web 容器內的所有網絡請求 實現 在 iOS 項目中使用 WKWebView 實現的 Web 容器&#xff0c;監聽 Web 容器內的網絡請求是一個常見需求。可以通過實現 WKURLSchemeHandler 協議來處理自定義的 URL scheme&#…

通過 API 接口管理 Kafka

文章目錄 前言Topic 管理配置管理消費者群組管理查看消費者群組修改消費者群組 為主題添加分區從主題中刪除消息首領選舉 前言 除了通過命令行和可視化界面對 kafka 進行管理&#xff0c;也可以通過 AdminClient的 API 對 kafka 進行管理。本文將介紹如何通過 AdminClient 進行…

[Vue學習]生命周期及其各階段舉例

當我們運行vue項目&#xff0c;看到了屏幕上顯示的界面&#xff0c;看到了界面上顯示的數據和標簽&#xff0c;之后將這個界面叉掉&#xff0c;這一過程其實經歷了一整個vue的生命周期的四個階段&#xff0c;即創建階段、掛載階段、更新階段以及銷毀階段, 而對于每個階段的啟動…