
脚本用途与使用方法gerrit_setup.sh用于在 Ubuntu 服务器上一键搭建 Gerrit 代码评审环境并可选地创建一个裸 Git 仓库作为评审项目。脚本会自动完成依赖安装、git系统用户创建与 SSH 密钥生成、Gerrit 3.4.0 的下载与初始化、服务注册与启动最后输出访问地址与常用 Git 命令提示。摘要本文介绍gerrit_setup.sh脚本用于在 Ubuntu 18.04 / 20.04 服务器上一键搭建 Gerrit 3.4.0 代码评审环境。脚本自动完成 OpenJDK 11 PPA 添加、依赖安装、git系统用户与 SSH 密钥创建、Gerrit WAR 包下载与init --batch初始化、systemd服务注册与启动并支持通过-p/--project-name可选创建同名裸仓库并写入gerrit.config。脚本对已存在的用户与已安装的 Gerrit 做了幂等判断重复执行时自动跳过最终输出http://服务器IP:8080访问地址与克隆、提交、推送示例命令。功能概述安装依赖openssh-server、git、openjdk-11-jdk-headless、nginx创建并配置git系统用户及其 SSH 密钥通过-p/--project-name创建同名裸仓库并写入gerrit.config下载并初始化 Gerrit 3.4.0注册为systemd服务并启动输出 Gerrit Web 访问地址与仓库克隆、提交、推送示例下面是脚本的整体执行流程是否否是解析命令行参数添加 OpenJDK PPA 并更新软件源安装依赖openssh-server / git / openjdk-11 / nginx创建 git 用户并生成 SSH 密钥是否传入 -p 参数创建同名裸仓库并写入 gerrit.config跳过建仓仅安装 GerritGerrit 是否已安装下载 gerrit-3.4.0.war 并执行 init --batch跳过安装注册并启动 systemd 服务输出访问地址与常用 Git 命令提示整个流程按「参数解析 → 环境准备 → 用户与密钥 → 可选建仓 → Gerrit 安装 → 服务启动 → 结果输出」的顺序推进。脚本在创建git用户、创建项目仓库和安装 Gerrit 三处都做了存在性判断因此重复执行时会自动跳过已完成步骤只补齐缺失环节最终统一输出 Web 访问地址与克隆、提交、推送示例命令。依赖环境Ubuntu 18.04 / 20.04需支持ppa:openjdk-r/ppa具备sudo权限的普通用户服务器可访问外网用于下载 Gerrit WAR 包与安装软件包已安装wget、add-apt-repositorysoftware-properties-common参数用法# 赋予执行权限chmodx gerrit_setup.sh# 创建名为 demo 的评审项目./gerrit_setup.sh-pdemo# 等价写法./gerrit_setup.sh --project-name demo不传-p时脚本只安装并启动 Gerrit不创建项目仓库传入未知参数会打印提示并以状态码1退出。访问 Gerrit Web 界面脚本执行完成后终端会输出形如http://服务器IP:8080的地址在浏览器中打开即可默认管理员用户名admin密码Gerrit 初始化过程中设置的密码登录后即可在 Web 界面中浏览项目、查看变更并进行代码评审。#!/bin/bash# Set up author, timestamp, and contact informationSCRIPT_NAMEgerrit_setup.shAUTHORCursorBotTIMESTAMP$(date%Y-%m-%d %H:%M:%S)CONTACTcursorbotexample.com# Set up command-line argumentswhile[[$#-gt0]];docase$1in-p|--project-name)PROJECT_NAME$2shift2;;*)echoUnknown argument:$1exit1;;esacdone# Add OpenJDK 11 PPA and update package sourcessudoadd-apt-repository ppa:openjdk-r/ppasudoaptupdate# Install dependenciessudoaptinstall-yopenssh-servergitopenjdk-11-jdk-headless nginx# Create and configure Git userif!id-ugit/dev/null21;thensudoadduser --disabled-password--gecosgitsudosugit-cmkdir /home/git/.ssh touch /home/git/.ssh/authorized_keys chmod 600 /home/git/.ssh/authorized_keyssudosugit-cssh-keygen -b 4096 -t rsa -f /home/git/.ssh/id_rsa -N elseechoUser git already exists, skipping creation.fi# Setup Git serverif[-n${PROJECT_NAME}];thensudosugit-cmkdir /home/git/${PROJECT_NAME}.git cd /home/git/${PROJECT_NAME}.git git init --bareIP_ADDRESS$(hostname-I|awk{print $1})sudosugit-cecho\port:29418\ntype: GERRIT\nfilesystem_directory: /var/gerrit/review_site\nssh_key: /home/git/.ssh/id_rsa\ncanonical_web_url: http://${IP_ADDRESS}:8080/\ /home/git/${PROJECT_NAME}.git/gerrit.configfisudochown-Rgit:git /home/gitsudochmod-R755/home/git# Setup Gerrit serverif!command-vgerrit/dev/null21;thenwgethttps://gerrit-releases.storage.googleapis.com/gerrit-3.4.0.war-P/var/gerrit/sudojava-jar/var/gerrit/gerrit-3.4.0.war init--batch--no-auto-start-d/var/gerrit/review_sitesudomkdir-p/var/gerrit/review_site/etc/sudocp/var/gerrit/review_site/bin/gerrit.config /var/gerrit/review_site/etc/sudochown-Rgit:git /var/gerritsudosystemctlenablegerrit.servicesudosystemctl start gerrit.serviceelseechoGerrit server already installed, skipping setup.fi# Clone Git repository, add and commit file, push changes# cd /tmp# git clone ssh://git${IP_ADDRESS}:29418/${PROJECT_NAME}.git# cd ${PROJECT_NAME}# echo This is a test file. test.txt# git add test.txt# git commit -m Added test file# git push# Output success messageechoGerrit server setup complete. Project ${PROJECT_NAME} created and ready for review.echoechoYou can log in to Gerrit by navigating to the following URL in your web browser:echo http://${IP_ADDRESS}:8080echoLog in using the following credentials:echo Username: adminecho Password: (the password you specified during Gerrit setup)echoechoTo download and submit changes to the Git repository, run the following commands:echo git clone ssh://git${IP_ADDRESS}:29418/${PROJECT_NAME}.gitecho cd${PROJECT_NAME}echo (make changes to files)echo git add (changed files)echo git commit -m\(commit message)\echo git push总结一键部署gerrit_setup.sh自动完成依赖安装、git用户与 SSH 密钥创建、Gerrit 3.4.0 下载初始化、systemd服务注册与启动无需手工逐步操作。可选建仓通过-p/--project-name可同时创建同名裸仓库并写入gerrit.config不传该参数则只安装并启动 Gerrit。幂等友好脚本对已存在的git用户与已安装的 Gerrit 做了判断重复执行时会跳过对应步骤避免破坏现有环境。使用前提Ubuntu 18.04 / 20.04、具备sudo权限、服务器可访问外网并已安装wget与software-properties-common。执行结果终端输出http://服务器IP:8080访问地址、默认管理员账号及克隆/提交/推送示例命令可直接进入 Web 界面开展代码评审。参考资料Gerrit Code Review 3.4.0 官方文档Gerrit 初始化与配置参数说明init命令Gerrit 配置文件gerrit.config参考OpenJDK PPA 页面ppa:openjdk-r/ppaGerrit 官方下载页WAR 包发布地址