docker-compose构建gerrit前端代码审计功能
docker-compose构建gerrit前端代码审计功能## 拉取gerrit需要的镜像docker pull gerritcodereview/gerritdocker pull osixia/openldapdocker pull osixia/phpldapadmin创建挂载数据存储目录mkdir -p /data/gerrit/{etc,git,db,index,cache,.ssh}
docker-compose构建gerrit前端代码审计功能
## 拉取gerrit需要的镜像
docker pull gerritcodereview/gerrit
docker pull osixia/openldap
docker pull osixia/phpldapadmin
创建挂载数据存储目录
mkdir -p /data/gerrit/{etc,git,db,index,cache,.ssh}
# 创建初始配置文件
vim /data/gerrit/etc/gerrit.config**
[gerrit]
basePath = git
canonicalWebUrl = http://192.168.1.168:9090
# 该地址是外部访问gerrit项目WEB页面的地址 注意端口号要跟docker-compose一致
[index]
type = LUCENE
[auth]
type = ldap
gitBasicAuth = true
[ldap]
server = ldap://ldap
username=cn=admin,dc=example,dc=org
accountBase = dc=example,dc=org
accountPattern = (&(objectClass=person)(uid=${username}))
accountFullName = displayName
accountEmailAddress = mail
#[sendemail] #该设置是设置邮箱设置 如果使用原设置 那么邮箱服务是异常状态
#smtpServer = localhost
[sendemail] # 该配置的邮箱是网易邮箱 需要授权码 在secure.config 中配置授权码
smtpServer = smtp.163.com
smtpUser = xx@163.com
smtpServerPort = 25 #需要在容器内宿主机上都要开放该端口
from = xx@163.com
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache
[container]
user = root
vim /data/gerrit/etc/secure.config
[ldap]
password = hsy123 # ldap管理员密码
[sendemail]
smtpPass = PUXQIYDYSRCOLDOX # 配置邮箱的授权码 不是邮箱密码
创建gerrit docker-compose文件
vim /data/docker-compose/gerrit.yml
docker-compose 没有安装的话先安装
version: '3'
services:
gerrit:
image: gerritcodereview/gerrit
ports:
- "29418:29418"
- "9090:8080" # WEB项目访问地址
- "25:25" # 邮箱功能开放端口
depends_on:
- ldap # 该配置是 ldap服务启动成功后 再启动gerrit服务
container_name: gerrit
volumes:
- /data/gerrit/etc:/var/gerrit/etc
- /data/gerrit/git:/var/gerrit/git
- /data/gerrit/db:/var/gerrit/db
- /data/gerrit/index:/var/gerrit/index
- /data/gerrit/cache:/var/gerrit/cache
- /data/gerrit/.ssh:/var/gerrit/.ssh
environment:
- CANONICAL_WEB_URL=http://192.168.1.168:9090
command: init # 初始化gerrit镜像配置 不用注释 启动完成后注释该项
ldap:
image: osixia/openldap
ports:
- "389:389"
- "636:636"
container_name: ldap
environment:
- LDAP_ADMIN_PASSWORD=hsy123
volumes:
- /data/gerrit/ldap/var:/var/lib/ldap
- /data/gerrit/ldap/etc:/etc/ldap/slapd.d
ldap-admin:
image: osixia/phpldapadmin
container_name: ldap-admin
ports:
- "6443:443"
environment:
- PHPLDAPADMIN_LDAP_HOSTS=ldap
执行初始化gerrit 注释放开 command: init
启动容器后 查看gerrit日志 看到输出 Initialized /var/gerrit 就可以停止初始化了
初始化启动gerrit
docker-compose -f /data/docker-compose/gerrit.yml up -d
gerrit启动排错
如果启动容器没有起来 docker logs gerrit -f 查看日志发现 报错如下
Initializing Gerrit site …
fatal: /var/gerrit/etc/mail
fatal: Cannot make directory /var/gerrit/etc/mail
那么 就对挂载在宿主机上得gerrit整个目录 执行
chown -R 1000:1000 /data/gerrit/
在初始化完成后 注释 command: init 再次启动gerrit
sed -i s/command/#command/g /data/docker-compose/gerrit.yml
docker stop gerrit && docker rm gerrit
docker-compose -f /data/docker-compose/gerrit.yml up -d
创建gerrit管理员账号
利用ldap-admin进行管理账号
后续创建gerrit普通用户都是通过ldap-admin进行创建管理
登录https:192.168.1.168:6443
账号 cn=admin,dc=example,dc=org
密码 hsy123
创建gerrit账号 1.点击Create a child entry
选择账号模板
输入信息后 创建对象 在提交到ldap gerrit管理员账号就创建完成了
gerrit同步gitea仓库代码
实现gerrit审计代码 通过后 代码推送到gerrit仓库中 在从gerrit仓库中推送到gitea仓库中 进行自动部署操作
给gitea仓库中配置 gerrit容器内ssh免密拉取gitea仓库代码
进入gerrit容器内操作同步gitea的配置更改
docker exec -it gerrit /bin/bash
cd ~ && cd etc/
vi gerrit.config
#在最后一行添加配置
[plugins]
allowRemoteAdmin = true
保存退出 重起容器
在gitea创建一个新仓库 初始一个文件用来同步测试
在gitea配置给gerrit服务器免密拉取代码的密钥配置
在容器内 ssh-keygen
cd ~ && cd .ssh/
cat id_rsa.pub
复制密钥给gitea仓库中配置免密拉取代码
然后再gerritWEB页面创建一个相同名字的 仓库名
登录gerritWEB页面
然后右上角点击 CREATE NEW 创建新的仓库
仓库的名字跟gitea上得仓库名 需要一致
创建gerrit仓库成功后
回到容器内
cd ~ && cd git/
rm -rf test.git
删除新创建的gerrit仓库
然后再改目录下 拉取gitea仓库 拉取的命令 需要注意
git clone --bare gitea仓库的ssh地址
拉取成功后
cat test.git/config
查看仓库地址
地址需要是gitea上的地址
创建同步配置的文件
cd ~ && cd etc/
vi replication.config
[remote “test”] # 同步的仓库的名字
projects = test # 同上
url = ssh://git@192.168.1.168:222/hsy/test.git # gitea仓库的地址
push = +refs/heads/:refs/heads/
push = +refs/tags/:refs/tags/
push = +refs/changes/:refs/changes/
threads = 3
ssh -p 29418 hsyadmin@192.168.1.168 gerrit plugin reload replication
执行这条命令后发生报错 没有权限这类的问题
hsyadmin 是gerrit登录的用户名
把/var/gerrit/.ssh 生成的公钥
登录gerrit前端页面 点击settings 或者小齿轮进行设置页面
测试同步代码功能 在宿主机上进行
宿主机上需要把公钥上传到gerrit ssh key 设置中 否则拉取不了 代码
拉取代码后 进行仓库 touch 1.txt 然后进行上传操作
特别注意:
提交的命令变为“git push -u origin HEAD:refs/for/”格式。
“refs/for/*”会将变更提交放到暂存区中,等待代码审核和集成验证
git push -u origin HEAD:refs/for/master
更多推荐
所有评论(0)