git+gerrit+jenkins+sonar 持续集成开发环境搭建

2023-11-03

1:安装git

yum -y install git

安装成功之后:git version 1.8.3.1

2:安装apache

yum install httpd –y

service httpd start

/bin/systemctl stop httpd.service

将apache服务添加到开机 自启动

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

https://blog.csdn.net/shj_php/article/details/79495861

3:安装ftp服务,方便传输文件

https://www.cnblogs.com/zhi-leaf/p/5983550.html

4:安装java环境

https://blog.csdn.net/weixin_43893397/article/details/102636437

我这里安装的是 java 8

/usr/java/jdk1.8.0_251/

5:安装gerrit

参考文档: https://blog.csdn.net/lxbwolf/article/details/80174020http://www.mamicode.com/info-detail-339607.html

  • 注意:我这里数据库使用的默认H2数据库,mysql当时没有配置成功,一直无法关联

htpasswd -cm /home/gerrit/passwords admin 地址:192.168.2.137:1998 用户名:admin 密码:admin

启动停止指令: /home/gerrit/gerrit/bin/gerrit.sh start

chown gerrit:gerrit passwords 遇到问题:

Permission denied: [client 192.168.1.14:56363] AH01620: Could not open password file: /home/gerrit/passwords, referer: http://192.168.2.137:1998

解决方法:修改/home/gerrit/ 整个文件夹的读写权限

httpd.conf的配置

记得增加监听端口

Listen 80
Listen 1998
<VirtualHost *:1998>
    ServerName v3server
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On


    <Proxy *>
        Order deny,allow  
        Allow from all  
    </Proxy>


    <Location /login/>
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthUserFile /home/gerrit/passwords
    </Location>


    ProxyPass / http://192.168.2.137:8081/
    ProxyPassReverse / http://192.168.2.137:8081/
</VirtualHost>

etc/gerrit.config配置文件

[gerrit]
        basePath = git
        canonicalWebUrl = http://192.168.2.137:80
        serverId = 905a197d-3c7e-41ec-8ffa-b71660d44c85
[container]
        javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
        javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
        user = gerrit
        javaHome = /usr/java/jdk1.8.0_251/jre
[index]
        type = lucene
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = localhost
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8081/
[cache]
        directory = cache

  • 配置了反向代理,重启apache时报错: Invalid command 'ProxyRequests', perhaps misspelled or defined by a module not included in the server configuration 开启一下代理模块 运行一下
a2enmod proxy

再重启即可

安装完成之后,我这边一直提示无法 git push到远程地址

  1. 将资料中的 commit-msg 文件放在/gerrit/cfg/.git/hooks/
  2. 执行资料中的init_repo.sh
./init_repo.sh

内容如下:

#!/bin/bash
set -e

CODEBASE=$( dirname $( readlink -f ${0} ) 2> /dev/null|| echo ${PWD} )

gitdir=$(git rev-parse --git-dir)
test -e ${gitdir}/hooks/pre-commit || cp ${gitdir}/hooks/pre-commit.sample ${gitdir}/hooks/pre-commit

test -e ${gitdir}/hooks/commit-msg || cp $CODEBASE/misc/commit-msg ${gitdir}/hooks/commit-msg

git config remote.origin.push HEAD:refs/for/master

echo "Gerrit code review is ready"

  • 测试:ssh admin@192.168.2.136 -p 29418
  • git clone ssh://admin@192.168.2.137:29418/aaa.git //clone工程

如果出现错误: [remote rejected] HEAD -> refs/for/master (no common ancestry)

git pull --rebase origin master

  1. git add -A
  2. git commit --amend //如果需要重新生成 commit ID,需要删除此步骤文件中的ID整行
  3. git push // git push origin HEAD:refs/for/master

6:安装jenkins

https://blog.csdn.net/yangzaizi/article/details/83505026

安装jenkins最好安装 jenkins-2.164.3-1.1.noarch.rpm以上的,要不然安装插件的时候会比较麻烦,低版本自带的插件好多无法安装 。但是太高的版本需要java 11的环境,所以安装的时候选个好的版本,可以省掉很多麻烦事情

遇到问题: 报错:Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录 参考:https://blog.csdn.net/m0_37564404/article/details/99942264

sudo service jenkins start

jenkins:http://192.168.2.137:1998/

账号:admin 密码:admin

在线安装插件 gerrit trigger

  • git生成秘钥
  • 将公钥添加到gerrit中
  • 使用 ssh admin@192.168.2.137 -p 29418 测试
  • git clone ssh://admin@192.168.2.137:29418/winmu_tbox.git //clone工程

jenkins的邮件通知配置

SMTP服务: 用户名:jenkins@xqshijie.cn 密码:123456

遇到问题:配置gerrit servers时出现 jenkins "/root/.ssh/id_rsa" does not exist. 可参考下文:https://www.optbbs.com/thread-5965823-1-1.html 本次操作无法解决,我将 /root/.ssh/id_rsa 复制到 /var/lib/jenkins/.ssh/ 下 记得以后新用户生成sshkey后,做同样操作

浏览器地址:http://192.168.2.137:8080/

7:发布流程,Apache文件浏览功能

https://blog.51cto.com/adelazhu/1681512

8:FTP环境搭建

https://blog.csdn.net/wangxintong_1992/article/details/81194544

1056 - useradd xiao

1057 - passwd xiao

1058 - mkdir /var/www/xiao

1059 - usermod -d

/var/www/xiao xiao

设置用户访问固定的路径 https://www.cnblogs.com/xiaofeng028/p/3957147.html

9:sonar安装

需要安装SonarQube和sonar-scanner,参考文档如下:https://blog.csdn.net/weixin_40816738/article/details/90111803

默认是不支持c和c++的,需要安装额外的插件 sonar我这边暂时还没有安装完成

sonar: ./sonar.sh start chown -R sonarUser:sonarUser /home/work/sonarqube-6.7.7

su - sonarUser /home/work/sonarqube-6.7.7/bin/linux-x86-64/sonar.sh stop 192.168.2.136:9000 注意:sonar的匹配的java版本和数据库类别和版本

 

文中所需软件,请参考 本人的资料,谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git+gerrit+jenkins+sonar 持续集成开发环境搭建 的相关文章

  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • CodeIgniter 删除 index.php 和 .htaccess

    我已经为此工作了一个小时 所以我想我不妨问一下 我正在尝试从 CodeIgniter 应用程序的 URL 中删除 index php 但无法执行此操作 该应用程序在我办公室的专用服务器上运行 我通过 url 访问该应用程序http smr
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 如何访问 mmaped /dev/mem 而不导致 Linux 内核崩溃?

    我有一个简单的程序 尝试访问用户空间中的物理内存 其中内核存储第一个结构页 在 64 位机器上 该地址是 内核虚拟地址 ffffea0000000000 物理地址 0000620000000000 我正在尝试通过用户空间中的 mmap 访问
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • mod_rewrite 可以转换任意数量、任意名称的参数吗?

    我对 mod rewrite 完全是个新手 我想做的事情听起来很简单 我不想拥有domain com script php a 1 b 2 c 3 我想要 domain com script a 1 b 2 c 3 问题是我的脚本采用各种组
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 查看 Linux 上的多核或多 CPU 利用率

    我有一个在 Linux 上运行的程序 我需要确定它如何利用所有 CPU 内核 有没有什么程序可以查看这些信息 跑过 top 命令并按下 1 查看各个核心
  • 使用 gcc 理解共享库

    我试图理解 C 中共享库的以下行为 机器一 cat one c include
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 无法上传大于 8MB 的文件

    我正在尝试制作一个文件上传脚本 并且我已经为这个问题苦苦挣扎了一段时间 我已阅读并尝试了与此相关的所有答案 但无济于事 这是我在 php 中尝试过的 文件名 file uploads On upload max filesize 100M
  • 脚本标头过早结束:媒体(与以下问题相关:rails 应用程序部署+passenger+ubuntu+apache)

    我刚刚设置了一个 linode 服务器并在其上部署了我的 Rails 3 应用程序 它已启动并正在运行 问题是某些图像没有显示在生产中 在本地 它们工作正常 我仔细检查了日志文件 生产 log 但什么也没找到 然后我检查服务器 error
  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • php7ts.dll 无法加载到服务器

    今天我已经安装了php7 但是当我重新启动apache时 它无法启动 尽管我再次编辑了httpd xampp conf文件到配置php7 无论如何我去了C xampp并运行apache start bat 然后我看到以下错误 Apache

随机推荐

  • osmdroid地图

    1 简介 osmdroid是一个开源的地图填充器 全称是 open street map 至于droid我个人认为应该是安卓版的后缀吧 在网络上找了很多资料 大多是加载在线地图的 加载离线地图的很少 所以把代码记录一下 2 初始化 1 在布
  • Nodejs学习路线图

    转自 http www open open com lib view open1403574545233 html 前言 用Nodejs已经1年有余 陆陆续续写了48篇关于Nodejs的博客文章 用过的包有上百个 和所有人一样 我也从Web
  • python代码有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少

    count 0 for i in 1 2 3 4 for j in 1 2 3 4 for k in 1 2 3 4 if i j and j k and i k count 1 print f i j k end print f 一共有
  • c++字符前面的L和_T

    c 字符前面的L和 T 字符串前面加L表示该字符串是Unicode字符串 T是一个宏 如果项目使用了Unicode字符集 定义了UNICODE宏 则自动在字符串前面加上L 否则字符串不变 因此 Visual C 里边定义字符串的时候 用 T
  • virsh console退出 KVM查看、启动、连接、关闭、删除

    1 查看运行的虚拟机 virsh list 查看所有的虚拟机 关闭和运行的 不包括摧毁的 virsh list all 2 启动虚拟机 virsh start 虚拟机名称 虚拟机随物理机启动而启动 virsh autostart 虚拟机名称
  • C#属性和索引器

    属性 C 中类的属性是为了给类中的成员变量提供访问保护的 防止不正确的访问造成程序异常 通常我们都是将成员变量设置为保护或者私有的 然后使用属性来给成员变量提供访问接口 即 class A private int interval 0 pu
  • vscode连接linux虚拟机 环境配置和常见问题解决方案

    vscode连接linux虚拟机配置环境步骤 1 自己安装vscode 傻瓜式安装 配置ssh插件 2 配置虚拟机 1 确保自己的虚拟机上的ssh服务可用 打开虚拟机 在终端命令行上敲入 sudo apt get install opens
  • 自定义v-model事件

    父组件
  • 技术至简-9:什么是脉冲调制以及脉冲幅度调制PAM与脉冲编码调制PCM的区别?

    脉冲调制 在常规的调制中 通常使用正弦波或复指数信号作为载波 来传递基带信号 而脉冲调制是 使用矩形脉冲信号作为载波 来传递基带信号 有分为两种类型 脉冲幅度调制PAM与脉冲编码调制PCM PAM 脉冲幅度调制 利用连续时间的基带时域信号去
  • h264编码算法流程

    xh264编解码 编码层 视频压缩解压缩等核心算法 VLC就是这一系列算法 得到的是编码后的比特序列 即VLC数据 网络抽象层 将压缩后的原始码流拼接头信息用于解码时来识别 安排格式以方便后续的网络传输或者介质存储 将上一步VLC数据映射成
  • springboot集成Druid之后报错:discard long time none received connection. , jdbcUrl:jdbc:mysql://lo

    整合druid的配置 在pom xml中
  • 模拟域频率与数字域频率关系

    我的书 淘宝购买链接 当当购买链接 京东购买链接 数字频率于模拟频率互相转化的公式如下 2 f
  • JS中Promise对象及其使用方式

    聚沙成塔 每天进步一点点 专栏简介 什么是 Promise 对象 如何使用 Promise 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅 这个专
  • 前端性能优化之js优化

    文章目录 引言 一 浏览器加载js文件过程 二 浏览器加载js和图片的对比 三 浏览器加载js资源占总资源加载时间的比例 四 v8的编译原理概述 五 代码层面优化 提高V8编译效率 1 函数优化 1 减少函数大小和复杂度 2 避免使用动态特
  • java ats_ATS连接 https

    HTTPS协议是Http Over SSL 简单来说就是HTTP的安全版本 在HTTP的基础上增加SSL TLS加密传输协议 通过HTTPS加密传输和身份认证保证了传输过程的安全性 在登录网银和电子邮箱时 你会常常看到地址栏的网址显示HTT
  • 梦幻模拟战更新服务器正在维护,“梦幻模拟战2.0”更新维护公告

    欢迎来到梦幻模拟战2 0 史上最丰富的更新内容即将降临 梦幻模拟战 代中异星来客雷因法鲁斯 人气角色贝蒂加入战斗 等级上限全面突破 英雄和士兵能力已经觉醒 全新版本和精彩的冒险故事在前方等着你 服务器将于8月15日1 00进行更新维护 维护
  • 浅谈JDBC的理解(一)

    一 目录 二 概述 简述 JDBC是什么 JDBC英文名为 Java Data Base Connectivity Java数据库连接 官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API 根本上说JDBC
  • python安装maxmind库

    主要参考这个步骤https blog csdn net weixin 33757911 article details 85976603 utm medium distribute pc relevant t0 none task blog
  • 树与图的存储及遍历(分别①采用DFS深度优先遍历;②采用BFS宽度优先遍历)

    树与图的存储 树是一种特殊的图 只是在树中没有环 树是无环连通图 与图的存储方式相同 gt 因此只考虑图的存储即可 gt 图分为有向图和无向图 gt 对于无向图中的边a b 存储两条有向边a gt b和b gt a 即无向图就是特殊有向图
  • git+gerrit+jenkins+sonar 持续集成开发环境搭建

    1 安装git yum y install git 安装成功之后 git version 1 8 3 1 2 安装apache yum install httpd y service httpd start bin systemctl st