背景
公司项目之前使用jenkins整合了gitlab,后面代码迁移到gerrit,所以需要修改jenkins配置。下面就简单的介绍一下jenkins如何整合gerrit。
环境
服务器:linux
环境:docker、jenkins
代码仓库:gerrit
前提
docker、jenkins安装,自行百度。
gerrit仓库账号密码,自行申请。
流程
gerrit仓库访问权限配置
1、在Gerrit平台注册一个jenkins用户,然后设置一个SSH key。
2、Gerrit Web页面,进入Browse > Groups > Service Users,将jenkins 用户添加到这个分组中。(Gerrit v3.3之前的CI组名称为Non-Interactive Users)
3、Gerrit Web页面,Browse > Repositories > [仓库名称] > Access > Edit
- Reference: refs/*
- Read: ALLOW for Service Users
- Reference: refs/heads/*
- Label Code-Review: -1, +1 for Service Users
- Label Verified: -1, +1 for Service Users
4、需要在gerrit配置公钥。因为我是用的docker,需要进入jenkins容器:docker exec -it jenkins bash,创建ssh密钥:
$ ssh-keygen -m PEM -t rsa -C "邮箱地址"
ssh-keygen -m PEM -t ed25519 -C "邮箱地址"
生成密钥的路径:
/var/jenkins_home/.ssh/id_rsa
/var/jenkins_home/.ssh/id_ed25519
可以使用docker cp指令,复制出公钥(/var/jenkins_home/.ssh/id_rsa.pub)。
docker cp命令参考:
将公钥配置到gerrit的ssh里面。如下,私钥配置在jenkins里面,见下文截图。
jenkins配置
首先需要在jenkins的系统管理–插件管理,下载Gerrit Trigger插件,下载完成后。配置新gerrit服务。
1、
2、
3、
输入后,可以test一下,是否现实success。
新建item
1、
备注一下:如果项目需要引入有变动的jar,还是建议构建maven项目,自由风格项目不会加载你变更后的jar内容。
2、
3、
4、
5、
6、
7、
8、
构建的docker容器。
#/bin/bash
# 注意 其实在这里输入的命令,就是在服务器上的命令,我们所处于的位置就是当前登录用户的根目录下
echo ">>>>>>>>>>>>>cd 到宿主机映射 Jenkins 的项目路径下>>>>>>>>>>>>>"
cd xx
#服务名称
SERVER_JAR=xx
#查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $SERVER_JAR| grep -v grep | awk '{print $2}'`
kill -9 $pid
echo ">>>>>>>>>>>>>$pid进程终止成功>>>>>>>>>>>>>"
echo ">>>>>>>>>>>>>停止容器>>>>>>>>>>>>>"
docker stop xx
echo ">>>>>>>>>>>>>删除容器>>>>>>>?>>>2>22"
docker rm xx
echo ">>>>>>>>>>>>>删除镜像>>>>>>>>>>>> >"
docker rmi xx:1.0
echo ">>>>>>>>>>>>>制作镜像>>>>>>>>>>>>>"
docker build -f Dockerfile -t xx:1.0 .
echo ">>>>>>>>>>>>>启动容器>>>>>>>>>>>>>"
docker run -p 8891:8891 -p 8892:8892 --name athena -d -v /xx:/athena/tmp -v /usr/share/zoneinfo:/usr/share/zoneinfo xx:1.0
echo ">>>>>>>>>>>>自动部署结束>>>>>>>>>>>>>"
最后执行就可以了。