総数:14 今日:1 昨日:0
~$ sudo apt-get update ~$ sudo apt-get -y install openjdk-8-jdk
gerrit@ubdt16044:~$ which java /usr/bin/java gerrit@ubdt16044:~$ ls -la /usr/bin/java lrwxrwxrwx 1 root root 22 5月 5 12:28 /usr/bin/java -> /etc/alternatives/java gerrit@ubdt16044:~$ ls -la /etc/alternatives/java lrwxrwxrwx 1 root root 46 5月 5 12:28 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java gerrit@ubdt16044:~$ ls -la /usr/lib/jvm/java-8-openjdk-amd64//jre/bin/java -rwxr-xr-x 1 root root 6464 3月 14 21:58 /usr/lib/jvm/java-8-openjdk-amd64//jre/bin/java
~$ sudo update-alternatives --config java ~$ sudo update-alternatives --config javac
参考URL https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.1/install.html#cryptography
しかしopenjdk8の場合は不要
/usr/lib/jvm/java-8-openjdk-amd64/bin/jrunscript -e 'print (javax.crypto.Cipher.getMaxAllowedKeyLength("RC5") >= 256);'実行結果は・・・
true
ここからの記載の参考url Ubuntu 16.04: GerritとJenkinsでコードレビュー環境を構築する
Ubuntu 16.04でgerritサーバを動作させる為の設定を記載します。
~$ sudo su -c 'echo "deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib" > /etc/apt/sources.list.d/gerritforge.list'
~$ cat /etc/apt/sources.list.d/gerritforge.list deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib
Ubuntu公式以外のリポジトリからパッケージを取得するためには、そのリポジトリを認証する鍵情報をapt-keyコマンドでローカルキーチェーンに取り込んでおく必要があります。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1871F775
Executing: /tmp/tmp.LlR3JDAzXm/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 1871F775 gpg: 鍵1871F775をhkpからサーバkeyserver.ubuntu.comに要求 gpg: 鍵1871F775: 公開鍵"GerritForge <info@gerritforge.com>"をインポートしました gpg: 処理数の合計: 1 gpg: インポート: 1 (RSA: 1)
Proxy配下からだと上手く動きません。
このような場合、下記のように、--keyserver-optionを使うと幸せになれます。
--keyserver-option http-proxy=http://<アカウント>:<パスワード>@プロキシサーバ:ポート
例:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-option http-proxy=http://<アカウント>:<パスワード>@プロキシサーバ:ポート --recv-keys 1871F775
$ sudo apt-get update -y
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease ヒット:4 http://security.ubuntu.com/ubuntu xenial-security InRelease 無視:5 mirror://mirrorlist.gerritforge.com/deb gerrit InRelease 取得:6 mirror://mirrorlist.gerritforge.com/deb gerrit Release [1,475 B] 取得:7 mirror://mirrorlist.gerritforge.com/deb gerrit Release.gpg [473 B] 取得:8 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib amd64 Packages [33.9 kB] 取得:9 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib i386 Packages [33.9 kB] 69.8 kB を 4秒 で取得しました (15.1 kB/s) パッケージリストを読み込んでいます... 完了 W: mirror://mirrorlist.gerritforge.com/deb/dists/gerrit/Release.gpg: 鍵 F0E24DA66FFAA737081E5A7E1FFFAA5E1871F775 による署名は弱い digest アルゴリズム (SHA1) を使用しています
$ sudo apt-get install -y gerrit
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: gerrit アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 96 個。 89.1 MB のアーカイブを取得する必要があります。 この操作後に追加で 89.3 MB のディスク容量が消費されます。 取得:1 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib amd64 gerrit all 2.15.1-1 [89.1 MB] 89.1 MB を 33秒 で取得しました (2,622 kB/s) 以前に未選択のパッケージ gerrit を選択しています。 (データベースを読み込んでいます ... 現在 229288 個のファイルとディレクトリがインストールされています。) .../gerrit_2.15.1-1_all.deb を展開する準備をしています ... Checking Java version ... 1.8.0 gerrit (2.15.1-1) を展開しています... gerrit (2.15.1-1) を設定しています ... Initialising Gerrit site ... DONE Setting user/group owner ... DONE Creating symlinks .......... DONE Installation completed Starting Gerrit Code Review: OK To start using Gerrit, open: http://ubdt16044:8080/
$ sudo systemctl enable gerrit
gerrit.service is not a native service, redirecting to systemd-sysv-install Executing /lib/systemd/systemd-sysv-install enable gerrit
$ sudo systemctl start gerrit
Job for gerrit.service failed because the control process exited with error code. See "systemctl status gerrit.service" and "journalctl -xe" for details.
あれ、失敗する・・・では ubuntu自体を一度再起動してから再挑戦・・・
$ sudo systemctl start gerrit
ブラウザから以下のURLにアクセスすることでgerritに接続できます。
http://<srver>:8080/
例: http://192.168.3.25:8080/ 例: http://ubdt16044:8080/
デフォルトのポートは8080です。他のサービスと重複する場合は以下のように変更します。
なお、canonicalWebUrlのドメイン名はページ遷移で使われるので、外部からアクセスできるものにしてください。
IPアドレスでも良いです。デフォルトだとドメイン名はホスト名が設定されています。
~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
--- /etc/gerrit/gerrit.config.org 2018-05-05 15:40:47.447992597 +0900
+++ /etc/gerrit/gerrit.config 2018-05-05 16:48:20.334216036 +0900
@@ -1,7 +1,7 @@
[gerrit]
basePath = git
serverId = aa1c7b17-5abd-4153-9b3c-c2c79523742a
- canonicalWebUrl = http://ubdt16044:8080/
+ canonicalWebUrl = http://192.168.3.25:8081/
[database]
type = h2
database = db/ReviewDB
@@ -14,7 +14,7 @@
[sshd]
listenAddress = *:29418
[httpd]
- listenUrl = http://*:8080/
+ listenUrl = http://*:8081/
filterClass = com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect
firstTimeRedirectUrl = /login/%23%2F?account_id=1000000
[cache]
gerritを再起動します。
$ sudo systemctl restart gerrit
ブラウザから以下のURLにアクセスすることでgerritに接続できます。
http://<server>:8081
<server>:<port>ではなく、<server>/gerritでアクセスできるようにApache2を利用するようにします。
また、URLアクセスにダイジェスト認証を利用するようにします。
gerritでApache2を利用するようにします。
~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
--- /etc/gerrit/gerrit.config.org 2018-05-05 16:48:20.334216036 +0900
+++ /etc/gerrit/gerrit.config 2018-05-05 17:32:57.662216036 +0900
@@ -1,7 +1,7 @@
[gerrit]
basePath = git
serverId = aa1c7b17-5abd-4153-9b3c-c2c79523742a
- canonicalWebUrl = http://192.168.3.25:8081/
+ canonicalWebUrl = http://192.168.3.25/gerrit
[database]
type = h2
database = db/ReviewDB
@@ -14,7 +14,7 @@
[sshd]
listenAddress = *:29418
[httpd]
- listenUrl = http://*:8081/
+ listenUrl = proxy-http://127.0.0.1:8081/gerrit
filterClass = com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect
firstTimeRedirectUrl = /login/%23%2F?account_id=1000000
[cache]
gerritを再起動します。
$ sudo systemctl restart gerrit
Apache2にgerrit用の設定ファイルを追加します。
~$ sudo su -c 'cat << EOF > /etc/apache2/mods-enabled/gerrit.conf ProxyPass /gerrit http://localhost:8081/gerrit nocanon ProxyPassReverse /gerrit http://localhost:8081/gerrit nocanon ProxyRequests Off <Proxy http://localhost:8081/gerrit> Order deny,allow Allow from all </Proxy> <Location /gerrit> AuthType Digest AuthName "gerrit" AuthUserFile /etc/apache2/.htdigest Require valid-user </Location> EOF '
ダイジェスト認証のファイルを作成します。 例
| 設定項目 | 設定内容 |
| gerrit ユーザー名 | gerrit_admin |
| パスワード | gerrit |
~$ sudo htdigest -c /etc/apache2/.htdigest "gerrit" gerrit_admin Adding password for gerrit_admin in realm gerrit. New password: Re-type new password:
gerritはスラッシュの代わりに%2Fを使うページがあります。
VirtualHostディレクティブ内部でAllowEncodedSlashesをOnにします。
~$ diff -uprN /etc/apache2/sites-available/000-default.conf{.org,}
--- /etc/apache2/sites-available/000-default.conf.org 2016-03-19 18:48:35.000000000 +0900
+++ /etc/apache2/sites-available/000-default.conf 2018-05-05 18:01:06.922216036 +0900
@@ -26,6 +26,8 @@
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
+
+ AllowEncodedSlashes On
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
proxy_httpとauth_digestを有効にして、Apache2を再起動します。
$ sudo a2enmod proxy_http auth_digest Considering dependency proxy for proxy_http: Enabling module proxy. Enabling module proxy_http. Considering dependency authn_core for auth_digest: Module authn_core already enabled Enabling module auth_digest. To activate the new configuration, you need to run: service apache2 restart
$ sudo systemctl restart apache2
HTTPでアクセスできる管理ユーザを作成します。以下の手順で管理ユーザを追加します。
~$ sudo bash ~# adduser gerrit_admin ユーザー `gerrit_admin' を追加しています... 新しいグループ `gerrit_admin' (1001) を追加しています... 新しいユーザー `gerrit_admin' (1001) をグループ `gerrit_admin' に追加しています... ホームディレクトリ `/home/gerrit_admin' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい UNIX パスワードを入力してください: 例:gerritと入力 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました gerrit_admin のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y ~# exit ~$
すでに公開鍵を持っている場合はそちらを利用してください。
~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/gerrit_admin/.ssh/id_rsa): Created directory '/home/gerrit_admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/gerrit_admin/.ssh/id_rsa. Your public key has been saved in /home/gerrit_admin/.ssh/id_rsa.pub. The key fingerprint is: SHA256:mPQiaJK0tNCpzDG91CKSWds172kHi4s38j15wVDF+SU gerrit_admin@ryu The key's randomart image is: +---[RSA 2048]----+ | . o o.. | | =.+.. o . o E .| |=*++... o. . o | |BoB.o. *.+ . | |+=o.. = So. | | o o + .o | | o + . . | | + oo . | | . .o | +----[SHA256]-----+
~$ cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCr15DYehkRNxugr8xjbUgvgFKX/Uy+rwpWILNu+TqqF9fCNGbt37WPvLebHrbbGuPVQYyOW7KFCJpzYQDGR6DIozhyAzOJVwmpxhQkehtrHOiKFfs4dvilMVnffxddgonONTUljtwFG6zGCgUYz+DWSrOIyu1ymN+W2ODzIjVQfHt1YBcOLkiLSrf82gUyd2p8hYeHs9MYCgDMLtkm46BPoWBST01mGS1mosNMrmzaTPTIVQCI6Hf7HhfGezDWGJUO6lhTrcqU1MKBfmm4186CumeevKAv6Y9cJ2zxUCGtsmRF3ZXAzGOcgQONavPg/4NYeTRHo1JxUGuQPn7gRnJL gerrit_admin@ryu
~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
--- /etc/gerrit/gerrit.config.org 2018-05-05 17:32:57.662216036 +0900
+++ /etc/gerrit/gerrit.config 2018-05-05 21:56:55.490216036 +0900
@@ -8,7 +8,7 @@
[index]
type = LUCENE
[auth]
- type = DEVELOPMENT_BECOME_ANY_ACCOUNT
+ type = HTTP
[sendemail]
smtpServer = localhost
[sshd]
gerritを再起動します。
~$ sudo systemctl restart gerrit
ブラウザから以下のURLへアクセスします。
http://<server>/gerrit
htdigestで作成したユーザ名とパスワードを入力します。
| 入力項目 | 入力内容 |
| ユーザー名 | gerrit_admin |
| パスワード | gerrit |
Please review your contact information:
| 入力項目 | 入力内容 |
| Username | gerrit_admin |
| Full Name | gerrit admin |
フルネームはユーザ名とは別のものにする必要があります。
SSHの公開鍵を登録します。
Register an SSH public key:
| 入力項目 | 入力内容 |
| Add SSH Public Key | 管理ユーザとなるgerritクライアントでSSHの公開鍵である、.ssh/id_rsa.pub の中身テキストをペーストします。 |
Add ボタンを選択する。
なお、仕様なのか、HTTP経由だとemailの登録はできません。後ほどSSH経由で登録します。
~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
--- /etc/gerrit/gerrit.config.org 2018-05-05 21:56:55.490216036 +0900
+++ /etc/gerrit/gerrit.config 2018-05-05 22:58:25.566216036 +0900
@@ -8,7 +8,7 @@
[index]
type = LUCENE
[auth]
- type = HTTP
+ type = DEVELOPMENT_BECOME_ANY_ACCOUNT
[sendemail]
smtpServer = localhost
[sshd]
gerritを再起動します。
~$ sudo systemctl restart gerrit
| 入力項目 | 入力内容 |
| Members | gerrit_admin |
Add ボタンを選択する。
~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
--- /etc/gerrit/gerrit.config.org 2018-05-06 14:14:55.867434310 +0900
+++ /etc/gerrit/gerrit.config 2018-05-06 14:38:40.603434310 +0900
@@ -8,7 +8,7 @@
[index]
type = LUCENE
[auth]
- type = DEVELOPMENT_BECOME_ANY_ACCOUNT
+ type = HTTP
[sendemail]
smtpServer = localhost
[sshd]
gerritを再起動します。
~$ sudo systemctl restart gerrit
$ # ssh -p 29418 <server> gerrit set-account --add-email <mail> <user> $ # ssh -p 29418 <server> gerrit set-account --preferred-email <mail> <user>
例:
$ ssh -p 29418 192.168.3.25 gerrit set-account --add-email "gerrit_admin@domain" gerrit_admin $ ssh -p 29418 192.168.3.25 gerrit set-account --preferred-email "gerrit_admin@domain" gerrit_admin
ただいま作成した管理ユーザを用いれば、これ以降の管理ユーザはHTTP/DEVELOPMENT_BECOME_ANY_ACCOUNTの切り替え不要です。
コミッタやレビュアのようにHTTPアクセスが必要なユーザは以下のように作成します。
Ubuntu 16.04でgerritサーバへパッチを送信する為の設定を記載します。
gerritはSSHの暗号化にdiffie-hellman-group1-sha1を使おうとする一方、
OpenSSH 7から古い暗号化がデフォルトで無効になっており、
OpenSSH 7クライアントとgerritサーバのSSH接続が失敗してしまいます。
~$ ssh -V OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016
クライアント側の.ssh/configにてgerritのサーバはdiffie-hellman-group1-sha1を使用するようにします。
$ cat << EOF > .ssh/config Host 192.168.3.25 KexAlgorithms +diffie-hellman-group1-sha1 EOF
gerritサーバにパッチを送信するgit-reviewをクライアント側でインストールします。
~$ sudo apt-get install -y git-review
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libllvm3.8 libqmi-glib1 linux-headers-4.4.0-112 linux-headers-4.4.0-112-generic linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-image-4.4.0-112-generic linux-image-4.4.0-116-generic linux-image-extra-4.4.0-112-generic linux-image-extra-4.4.0-116-generic これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: python-ndg-httpsclient python-requests python-urllib3 提案パッケージ: python-ntlm 以下のパッケージが新たにインストールされます: git-review python-ndg-httpsclient python-requests python-urllib3 アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 51 個。 169 kB のアーカイブを取得する必要があります。 この操作後に追加で 815 kB のディスク容量が消費されます。 続行しますか? [Y/n] Y 取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-ndg-httpsclient all 0.4.0-3 [25.1 kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-urllib3 all 1.13.1-2ubuntu0.16.04.1 [57.2 kB] 取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-requests all 2.9.1-3 [55.6 kB] 取得:4 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 git-review all 1.25.0-2 [31.2 kB] 169 kB を 0秒 で取得しました (870 kB/s) 以前に未選択のパッケージ python-ndg-httpsclient を選択しています。 (データベースを読み込んでいます ... 現在 484125 個のファイルとディレクトリがインストールされています。) .../python-ndg-httpsclient_0.4.0-3_all.deb を展開する準備をしています ... python-ndg-httpsclient (0.4.0-3) を展開しています... 以前に未選択のパッケージ python-urllib3 を選択しています。 .../python-urllib3_1.13.1-2ubuntu0.16.04.1_all.deb を展開する準備をしています ... python-urllib3 (1.13.1-2ubuntu0.16.04.1) を展開しています... 以前に未選択のパッケージ python-requests を選択しています。 .../python-requests_2.9.1-3_all.deb を展開する準備をしています ... python-requests (2.9.1-3) を展開しています... 以前に未選択のパッケージ git-review を選択しています。 .../git-review_1.25.0-2_all.deb を展開する準備をしています ... git-review (1.25.0-2) を展開しています... man-db (2.7.5-1) のトリガを処理しています ... python-ndg-httpsclient (0.4.0-3) を設定しています ... python-urllib3 (1.13.1-2ubuntu0.16.04.1) を設定しています ... python-requests (2.9.1-3) を設定しています ... git-review (1.25.0-2) を設定しています ...