Quick Start: Gerrit

Quick Start: Gerrit

Prerequisite

Traefik on HTTP

OR

Traefik on HTTPS

If HTTP, remove the tls: {} in dynamic configuration

LDAP by Traefik

Preparation

create some dirs and files

1
sudo install -d /opt/gerrit; cd /opt/gerrit; sudo install -d etc git db index cache plugins

vim /opt/gerrit/etc/gerrit.config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[gerrit]
basePath = git

[index]
type = LUCENE

[auth]
type = ldap

[sshd]
listenAddress = *:29418

[httpd]
listenUrl = http://*:8080/

[cache]
directory = cache

[container]
user = root

[download]
schema = http
schema = ssh

[plugins]
# for plugin-manager plugin
allowRemoteAdmin = true

[ldap]
# the second ldap is docker compose service name
server = ldap://ldap
# dc=chaos,dc=io is from ldap service environment: LDAP_DOMAIN=chaos.io
username = cn=admin,dc=chaos,dc=io
accountBase = dc=chaos,dc=io
accountPattern = (&(objectClass=person)(uid=${username}))
accountFullName = displayName
accountEmailAddress = mail

[receive]
enableSignedPush = false

[user]
name = Gerrit Code Review
email = [email protected]
anonymousCoward = Gerrit Code Review

[sendemail]
smtpServer = smtp.exmail.qq.com
smtpServerPort = 465
smtpEncryption = SSL
sslVerify = true
smtpUser = [email protected]
smtpPass = YOUR_PASSWORD
from = ${user} (Code Review) <[email protected]>

[commentlink "changeid"]
match = (I[0-9a-f]{8,40})
link = "#/q/$1"

[commentlink "gitee"]
match = "gitee: #(.{6})"
link = https://e.gitee.com/example_user/dashboard?issue=$1

vim /opt/gerrit/etc/secure.config

1
2
3
4
[ldap]
# this value is from ldap service environment: LDAP_ADMIN_PASSWORD=secret
password = secret

compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: Compose specification

services:
gerrit:
image: gerritcodereview/gerrit
user: root
ports:
- "29418:29418"
expose:
- 8080
volumes:
- /opt/gerrit/etc:/var/gerrit/etc
- /opt/gerrit/git:/var/gerrit/git
- /opt/gerrit/db:/var/gerrit/db
- /opt/gerrit/index:/var/gerrit/index
- /opt/gerrit/cache:/var/gerrit/cache
- /opt/gerrit/plugins:/var/gerrit/plugins
environment:
- CANONICAL_WEB_URL=http://gerrit.x.internal
- HTTPD_LISTEN_URL=proxy-http://*:8080
networks:
- traefik-net
command: init

networks:
traefik-net:
external: true

gerrit.yml in dir dynamic-conf

You should touch gerrit.yml in traefik dir dynamic-conf.

For much more information, please reference the Prerequisite.

1
2
3
4
5
6
7
8
9
10
11
12
13
http:
routers:
gerrit:
rule: "Host(`gerrit.x.internal`)"
service: "gerrit"
tls: { }

services:
gerrit:
loadBalancer:
servers:
- url: "http://gerrit:8080"

Config domain parse

1
echo "127.0.0.1 gerrit.x.internal\n" >> /etc/hosts

Run

STEP-1: Run Gerrit docker init setup from docker

Uncomment the command: init option in compose.yml and run Gerrit with docker-compose in foreground.

1
docker compose up gerrit

Wait until you see in the output the message Initialized /var/gerrit and then the container will exit.

STEP-2: Start Gerrit in daemon mode

Comment out the command: init option in docker-compose.yaml and start all the docker-compose nodes:

1
docker compose up -d

Access: https://gerrit.x.internal