• jenkins整合gerrit


    背景

    公司项目之前使用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 "邮箱地址"
    
    • 1
    • 2

    生成密钥的路径:

    /var/jenkins_home/.ssh/id_rsa
    /var/jenkins_home/.ssh/id_ed25519
    
    • 1
    • 2

    可以使用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 ">>>>>>>>>>>>自动部署结束>>>>>>>>>>>>>"
    
    • 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

    最后执行就可以了。

  • 相关阅读:
    瑞吉外卖之移动端菜品数据的展示
    在KubeSphere启用基于Jenkins的DevOps
    [vue2项目]vue2+supermap[mapboxgl]+天地图之地图的基础操作(画线+自定义打点)
    7(第六章,数据存储和操作)
    推荐系统笔记(五):lightGCN算法原理与背景
    网页加载有哪些事件
    设计模式-抽象工厂模式
    CSS宽度100%和宽度100vw之间有什么不同?
    C. LR-remainders
    尚硅谷Flink(二)DStream API
  • 原文地址:https://blog.csdn.net/qq_25445369/article/details/133866378