成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用Gerrit管理你的Android代碼?

移動開發 Android
作為Android ROM相關的開發者,有必要了解什么是Gerrit,Gerrit的工作流程是怎么樣的,Gerrit服務器怎么搭建,以及如何將Android codebase導入自己的Gerrit服務器。接下來本文將為大家詳細解答以上問題。

作者|戶銳,單位:中國移動智慧家庭運營中心

Labs 導讀

Android源碼是基于Linux的開源操作系統,目前Android ROM開發的代碼管理工具基本上是采用Git。由于Android代碼非常復雜,Google將其劃分為多個git repo,這樣不僅可以避免一個repo的代碼太多,還可以根據repo的功能將其分配給不同團隊進行管控。為了對Android代碼質量進行管控,Google采用了Gerrit進行coderview,并利用jenkins做代碼靜態檢測和自動化驗證,當然還有集成CI工具。目前中國移動智慧家庭運營中心AOS-RM項目已經部署自己的Gerrit服務器,Gerrit對AOS-RM項目代碼質量管理起到了非常重要的作用。

作為Android ROM相關的開發者,有必要了解什么是Gerrit,Gerrit的工作流程是怎么樣的,Gerrit服務器怎么搭建,以及如何將Android codebase導入自己的Gerrit服務器。接下來本文將為大家詳細解答以上問題。

Part 01  Gerrit簡介

Gerrit是Google為Android系統研發量身定制的一套免費開源的代碼審核系統,使用網頁界面。利用網頁瀏覽器,同一個團隊的軟件開發者可以相互審閱彼此修改后的代碼,決定是否提交,回退或是繼續修改。它使用版本控制系統Git作為底層。目前Gerrit被廣泛使用,與Android開發相關,尤其是做Android ROM開發的公司基本都使用Gerrit進行code review。根據統計使用Gerrit的top3領域是IOT,Software Development以及Big Data。

圖片

數據來源:https://www.slintel.com/tech/source-code-management/gerrit-market-share

Part 02  Gerrit的工作流程

圖片

  1. 開發人員首先從git repo服務器上下載代碼,首次下載Android codebase代碼用git clone或者repo sync;
  2. 代碼修改完畢并通過自我驗證后以git push origin HEAD:refs/for/branch_name的方式提交到Gerrit上進行code review,其中branch_name需要根據實際情況修改為對應的分支名;
  3. Jenkins自動觸發靜態代碼檢查和編譯,如果通過則verify+1,否則verify-1;
  4. Jenkins verify -1 后,根據提示修改代碼,進入步驟2;
  5. Jenkins verify+1后,要求其他開發人員和MDE(模塊owner,具有+2的權限)進行code review;
  6. 其他開發人員和MDE進行code review如果發現問題,則提出修改意見并-1,如果沒有問題則+1和+2;
  7. 如果codereview有-1,則根據進行澄清或者根據意見修改,然后進入步驟2;
  8. 如果沒有codereview -1,MDE點submit按鈕,代碼入庫,流程完畢。

Part 03  Gerrit服務器搭建

3.1 安裝git

sudo apt-get install git

3.2 安裝jdk11

sudo apt install openjdk-11-jdk

3.3 安裝gitweb

sudo apt-get install gitweb

3.4  Gerrit安裝包下載

wget https://gerrit-releases.storage.googleapis.com/gerrit-3.5.1.wa

3.5 安裝Gerrit(gerrit-3.5.0.1.war存放在~/gerrit目錄下面)

cd ~/gerrit 
mkdir review_site
java -jar gerrit-3.5.0.1.war init -d ./review_site/ (可以都選擇默認,然后修改config文件)
sudo vim /home/gerrit/review_site/etc/gerrit.config

發送郵件配置的密碼保存在secure.config,發送郵件的密碼是授權碼

圖片

3.6 安裝Apache

sudo apt-get install apache2

3.7 配置Apache

sudo vim /etc/apache2/httpd.conf 內容如下圖
sudo vim /etc/apache2/ports.conf 加入 Listen 8081(如果80端口沒有被占用,不用修改)
sudo vi /etc/apache2/apache2.conf 加入 Include httpd.conf

3.8 使能proxy module

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

圖片

3.9 添加賬戶

htpasswd -b /xxx/passwords  account  xxxx
如果passwords文件不存在,第一次需要加-c,
htpasswd -c -b /xxxx/passwords account xxxx

3.10 啟動apache

sudo systemctl start apache2
sudo systemctl restart apache2

?3.11 啟動gerrit

/xxxx/bin/gerrit.sh start
/xxxx/bin/gerrit.sh restart

3.12 訪問gerrit

http://IP地址:端口號/

Part 04  Android Codebase導入Gerrit

4.1 創建AOSP倉庫

利用瀏覽器在Gerrit服務器上創建AOSP倉庫,將Only server as parent for other repositories設置為True

4.2 下載Android Codebase(-u的參數根據實際情況做修改)

repo init -u https://android.googlesource.com/platform/manifest --mirror
repo sync

4.3 創建repo(將IP修改為自己的服務器IP地址)

4.3.1 循環創建repo
repo forall -c 'echo $REPO_PROJECT; ssh -p 29418 account@IP gerrit create-project --owner AOSP_account $REPO_PROJECT;

4.3.2 設置repo的parent
repo forall -c 'echo $REPO_PROJECT; ssh -p 29418 account@IP gerrit set-project-parent --parent AOSP $REPO_PROJECT;

4.3.3 將Codebase的代碼push到Gerrit服務器?
repo forall -c 'echo $REPO_PROJECT; git push 
ssh://account@IP:29418/$REPO_PROJECT +refs/heads/* +refs/tags/*

Part 05  生成和定制manifest  

5.1clone一份platform/manifest倉庫的代碼

git clone "ssh://account@IP:29418/platform/manifest" && scp -p -P 29418 account@IP:hooks/commit-msg "manifest/.git/hooks/

圖片

5.2 將倉庫中的manifest復制一份,并重命名

一定要設置review字段,否則repo sync后的代碼不會產生change id

圖片

如果要增加自己特有的倉庫,則增加一個project節點,并配置name,path和revision即可,最后將新的xml文件提交到gerrit服務器,完成review后merge到遠程倉庫。

Part 06  下載和上傳代碼 

repo init -u ssh://account@IP:29418/platform/manifest.git -b branch_name --repo-url=ssh://account@IP:29418/repo.git -m  mymanifest.xml
repo sync -j4

Part 07  倉庫權限配置  

詳細說明可以參考:

https://gerrit-documentation.storage.googleapis.com/Documentation/3.5.0/access-control.htm

配置中,需要根據實際情況進行修改,不同組對不同倉庫具有不同的訪問權限,切記不要開放對refs/*的push權限,否則開發人員可以跳過Gerrit,直接push到git服務器。?

責任編輯:未麗燕 來源: 移動Labs
相關推薦

2019-07-13 14:21:04

LinuxShell命令

2013-05-03 10:04:16

WorkstationvSphere

2011-06-20 10:00:50

布線智能管理

2011-05-23 09:24:09

程序員BOSS

2019-05-30 10:20:10

Linux環境變量命令

2015-04-08 09:26:21

IT管理云計算基礎設施數據存儲

2012-05-22 15:19:55

Rex服務器管理

2015-12-31 09:58:50

混合云云遷移云管理

2012-08-09 16:37:45

服務器管理Rex

2019-07-16 16:40:00

Ansible工作站配置

2020-11-02 07:12:27

程序員上級領導管理

2022-01-21 09:45:42

Mozilla SOKubernetesLinux

2023-03-06 09:20:53

扁平化管理代碼

2012-05-10 10:45:40

2022-04-18 16:28:30

Linux

2021-06-15 15:00:08

Cockpit樹莓派Linux

2022-02-25 07:38:35

Linux

2019-09-09 09:30:59

Git行程Linux

2021-03-14 13:00:36

FedoraPoetry Python

2018-03-05 10:18:44

Linux密碼密碼管理器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片99| 91麻豆精品国产91久久久更新资源速度超快 | 久久精品久久精品久久精品 | 欧美成人激情视频 | 午夜a区| 99re视频在线免费观看 | 国产成人网 | 久久精彩视频 | 五月婷婷在线视频 | 91免费视频| 精品二 | 亚洲综合色视频在线观看 | 一区二区国产精品 | 免费a v网站 | 91视频www.| 一级片av | 日韩午夜场 | 天天综合国产 | 国产在线观 | 亚洲视频免费 | 欧美日韩不卡 | 欧美日韩在线播放 | 日韩精品在线视频 | 在线观看国产网站 | 桃色五月 | 一区二区三区国产精品 | 国产一区二区三区在线免费观看 | 四虎永久免费黄色影片 | 日韩一级二级片 | 亚洲美女在线视频 | 日韩一区二区三区视频在线观看 | 精品在线观看入口 | 日韩在线 | 日韩精品在线看 | 日日夜夜天天综合 | 国产一区 | 成人深夜福利 | 在线视频成人 | 日韩电影中文字幕在线观看 | 成人福利在线视频 | 成人视屏在线观看 |