Install gerrit using Docker
Jing, mqjing@gmail.com
Googoe doc: This Document
快速安裝
VirtualBox 以及 Vagrant 版本
|
cd lab-gerrit
. ./01_up.sh
|
直接安裝在自己機器的版本
|
cd lab-gerrit
. ./normal_install.sh
|
Local
目錄
容易卡住的點
Docker 啟動時, 要注意事項
Docker 要有 WEBURL, 否則當你使用 OpenID 登入時, 將無法登入.
- Ex: sudo docker run -d -p 8080:8080 -p 29418:29418 -e WEBURL=http://127.0.0.1:8080 openfrontier/gerrit
RSA 連線時, 要注意的事項
- 不只是 Gerrit User RSA 的部分要貼 public key ~/.ssh/id_rsa.pub
- 在 client, 也要把 private 加入. 否則會造成 permission design.
- Ex: [client] ssh-add ~/.ssh/id_rsa
- 測試時, 要用 ssh -p 29418 {gerrit-user-name}@{gerrit-address}
- 不是用 ssh -p 29418 ssh://{gerrit-user-name}@{gerrit-address}
Clone Project 時, 要注意的事項
- 拉 code 時, 要加 29418, 否則一樣會遇到 permission design
- Ex: git clone ssh://yahoo_admin@127.0.0.1:29418/myproject
- 用來 clone 與 ssh 測試的 username, 是用 Gerrit username 拉 code
- 與 RSA comment 無關
- 與 cient machine login user 無關.
Git Review 時, 要注意的事項
- 與你的 client git user.email 必須要跟你的 Gerrit 上, 對應 Gerrit user 的 email 一樣. 否則你無法 git review, 會出現下面錯誤.
- 解法: 就是從新設定 user.email 並請修改你的 commit, 再 git review 一次
git config --global user.email {Gerrit 上登記的那個 email}
git commit --amend # 修正含有錯誤 email 的 commit
git review
Ex:
git config user.email mqjing.eed86g@g2.nctu.edu.tw
git commit --amend
git review
|
Install Package
Setup Locale
function fun_setup_locale(){
# Step 1: Create locale files for en_US, en_US.UTF-8, zh_TW and zh_TW.UTF-8
sudo locale-gen en_US en_US.UTF-8 zh_TW zh_TW.UTF-8
# Step 2: Reconfigures packages after they have already been installed
sudo dpkg-reconfigure locales
}
fun_setup_locale
|
Install Docker
#!/bin/bash
# run this script as a root
function fun_install_docker(){
# for https transport
[ -e /usr/lib/apt/methods/https ] || {
sudo apt-get -y update
sudo apt-get -y install apt-transport-https
}
# for apt-key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
# update the apt-repository
sh -c "echo deb https://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
sudo apt-get -y update
# install the docker
sudo apt-get -y install lxc-docker
}
fun_install_docker
|
Install git review
sudo apt-get install git-review
Install and Start Gerrit
For Test Only
sudo docker run -d -p 8080:8080 -p 29418:29418 -e AUTH_TYPE=development_become_any_account -e WEBURL=${Your-Gerrit_Address:8080} openfrontier/gerrit
ex:
sudo docker run -d -p 8080:8080 -p 29418:29418 -e AUTH_TYPE=development_become_any_account -e WEBURL=http://127.0.0.1:8080 openfrontier/gerrit
|
Verification
Open your browser to http://{gerrit-server-add}:8080
Ex:
firefox http://127.0.0.1:8080
選擇 Administrator: 此時這個登入的 ID 就會是 Administrator
你可以使用 Gerrit Administrator Account: admin 來 clone code.
處理 RSA 連線的問題
# 貼上你的 public key 到 gerrit server 上 (不做這個, ssh 會拒絕連線)
[client] ssh-keygen
[client] cat ~/.ssh/id_rsa.pub # 把這個結果貼到, Gerrit SSH 欄位
# 加入自己的 private key 到 自己的 client 機器上 (不做這個, ssh 會拒絕連線)
[client] ssh-add {private-key}
Ex:
[client] ssh-add ~/.ssh/id_rsa
# test ssh connection
[client] ssh -p 29418 ${Gerrit-Account}@GerritIP
Ex:
[client] ssh -p 29418 admin@127.0.0.1
# clone
[client] git cline ssh://admin@127.0.0.1:8080/{Your-Project_Name}
Ex:
[client] git cline ssh://admin@127.0.0.1:8080/test
push code
sudo apt-get install git-review
git remote rename origin gerrit
git add 你新增的程式檔
git commit -m "message"
git review
Normal Usage
sudo docker run -d -p 8080:8080 -p 29418:29418 -e WEBURL=http:{你的 gerrit 位址}:8080 openfrontier/gerrit
Ex
Amazon 的例子
sudo docker run -d -p 8080:8080 -p 29418:29418 -e WEBURL=http://ec2-54-254-186-117.ap-southeast-1.compute.amazonaws.com:8080 openfrontier/gerrit
|
Local 測試的例子
sudo docker run -d -p 8080:8080 -p 29418:29418 -e WEBURL=http://127.0.0.1:8080 openfrontier/gerrit
|
設定 Gerrit Administrator user
第一個登入 user 就是 admin.
作法:
[Register] -> 選擇 Yahoo 帳號當作我們的 Admin
Create a Gerrit Project
# Set Access Right
輸入 Gerrit Username (Select a unique username 那個) 以及存取 key
[點選 Anonymous Coward (10000000)] -> Settings
設定 Username: yahoo_admin (這個 name 很重要, 將來就是用這個 name clone)
設定 RSA Key
Step 1: 設定 Gerrit 上的 Public key
[client] ssh-keygen
[client] cat ~/.ssh/id_rsa.pub # 把這個結果貼到, Gerrit SSH 欄位
Step 2: 設定 Client 端, 把 private key 加進來
# 加入自己的 private key 到 自己的 client 機器上 (不做這個, ssh 會拒絕連線)
[client] ssh-add {private-key}
Ex:
[client] ssh-add ~/.ssh/id_rsa
測試 ssh 連線
[client] ssh -p 29418 ${Gerrit-Account}@GerritIP
Ex:
# (注意: 沒有 ssh. 下面這樣是錯的 ssh://yahoo_admin@127.0.0.1)
[client] ssh -p 29418 yahoo_admin@127.0.0.1
# Clone Your Project
Step 1: Clone project
[client] git cline ssh://{Your-Gerrit-Name}@127.0.0.1:29418/{Your-Project_Name}
Ex:
# 注意: 要加 29418, 否則你會遇到 permission denied
[client] git cline ssh://yahoo_admin@127.0.0.1:29418/test
Step 2: 設定本機的 remote branch 從 origin 到 gerrit
git remote rename origin gerrit
# 這是搭配 git review 指令用的, 不這麼做, 你在執行 git review 時, 會出現下面的錯誤
Step 3: 確定 git user.email
確定你的 git email 與 Gerrit user 一樣 (若 gerrit user 是 admiin, 則沒有 對應 gmail commit, 也可以 commit. 但一般 user 則會檢查 user.email). 否則你在 git review 時, 系統會告訴你 email 不合
git config -l # 檢查 git user.email
如果不一樣,
git config --global user.email {Gerrit 上登記的那個 email}
ex:
# 若已經 commit 了, 發現 email 不合, 怎麼辦 ?
# 解法:
|
Step 4: 開始編修你的檔案
Step 5: push code
git add 你新增的程式檔
git pull # sync 最新的 code, 以免屆時無法上 code
git commit -m "message"
git review
Ex:
Verification
因為剛剛是用 yahoo_admiin 上的 code, 所以在 gerrit 裡面, 你會看到一筆 commit
建立另外一個 user
這次用 Ubuntu One user 為例
Step 1: 選擇 [Sign in with a Launchpad ID]
Step 2: 輸入必要 Ubuntu One 驗證資訊
Ex:
設定 Ubuntu One User 在 Gerrit 的 username
Step 1: 點選 [User] -> [Settings]
Step 2: 設定 [Username]
設定 RSA Key
Step 1: 貼上 RSA key 到 [SSH Public Keys]
Step 2: 在 client 加上 private key
Command
ssh-add ~/.ssh/id_rsa
Assign Reviewer
Step 1: 點選 [commit] -> [Add...]
Step 2: 指定 兩位 Reviewer
- 選擇 另一個 Gerrit User
Ex:
(b) 再加一位 Reivwer
Code Review
Check Admin Access Right
預設的情況下, yahoo_admin 可以 approve 整個 commit (see 下圖藍色方框)
(2) Check Registered User Access Right
另一位 普通 Gerrit user, 預設只能 review 其他登入後, 就會發現有一筆 commit 等著他 reivew
[All] ->[Open]
(3) Code Review
選擇上方 reply, 進行 Code Reivew
設定 Access Control
Purpose: 讓 Registered Use 也可以 Submit
Step 1: Check the Project's Access List
[Projects] -> [Access]: 點選 [Edit]
Step 2: Adjust the [Label Code-Review]
將 Registered Users Range 從 +1 調成 +2, 可以讓一般 Registered Users, 也可以 submit