搭建一个windows的DevOps环境记录

边搭建边记录,整个DevOps环境的搭建可能会很久。。。

一、安装Jenkins:

参考:Jenkins基础篇--windows安装Jenkins-CSDN博客

注意上面选择JDK的路径,选择到安装目录,该目录并不一定要在path中配置了(就是因为不在path中,这里的选择JDK的目录才很有用)。

安装完后,先不着急登录使用,如果需要修改项目主空间目录,最好这时候整,不然后面还要重新下一次插件。可参考:

Jenkins持续集成之修改jenkins工作目录_jenkins修改工作空间根目录-CSDN博客

二、安装额外的插件:

Manage Jenkins -> Plugins-> Available plugins

三、安装SonarQube:

1、先安装PostgreSQL:https://blog.csdn.net/GoodburghCottage/article/details/125975089

2、再安装SonarQube:https://blog.csdn.net/weixin_44009447/article/details/132646864

2.1 数据库的配置,可以使用默认的:

sonar.jdbc.url=jdbc:postgresql://localhost/postgres?currentSchema=public

2.2 这时候如果JDK没有在Path里面配置,那大概率会出现:

Starting SonarQube...
Unrecognized option: --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

类似的日志。这时候可以参考:https://blog.csdn.net/wang_624/article/details/129961824

这时候再配置环境变量增加SONAR_JAVA_PATH可能会需要重启电脑,那么再简单粗暴一点,直接在代码里配置上JDK的路径:

    set SONAR_JAVA_PATH="C:\Users\XXXXX\.jdks\corretto-17.0.8.1\bin\java.exe"
    if not "%SONAR_JAVA_PATH%"=="" (

启动,正常了。

四、安装Sonar_Scaner:

可参考:百度安全验证icon-default.png?t=N7T8https://baijiahao.baidu.com/s?id=1766818517549151742&wfr=spider&for=pc

不过文章中说的使用sonar-scaner去扫描java的方式,好像在新版本的SonarQube里已经不能用了,除非替换某个jar包成旧版本的。这里就不折腾,java还是使用maven来检测。下面会介绍。

五、安装Maven(我一般用IDE里面自带的,没想到这里还要装一个):

https://blog.csdn.net/swadian2008/article/details/113530102

六、Maven检测代码并上传到SonarQube中进行显示:

大体流程可以参考这篇文章的使用部分:Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)_sonarqube windows安装_Keson Z的博客-CSDN博客

1、下载完整的代码到本地;

2、检查本地代码里面有没有target目录,没有就新建一个(一般都有的);

3、配置maven,加上SonarQube的相关信息:

  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
  </pluginGroups>

   <profiles>

        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.login>sqa_5e74a2bd324e59f457028ssssss</sonar.login>
                <sonar.host.url>http://localhost:9000</sonar.host.url>
            </properties>
        </profile>

</profiles>

以上代码profile片段如果在运行mvn命令的时候指定了url、login的token估计就都不会生效,而优先使用命令行里的了。这里先配置上。

4、SonarQube里面新建项目(这里的项目名和key不一定需要按照artifactId来写),一路往下点,并获取到建议的命令,比如:

mvn clean verify sonar:sonar -Dsonar.projectKey=yudao -Dsonar.host.url=http://localhost:9000  -Dsonar.login=sqp_4a6d289cb9e356f4bb54645746734561d72a3

在下面这个页面里获取到:

这里mvn需要走到verify则需要先跑test,但有些情况下test可能跑不下去,这时候可以先跳过,增加一个-DskipTests属性即可:

mvn clean verify sonar:sonar -Dsonar.projectKey=yudao -Dsonar.host.url=http://localhost:9000  -Dsonar.login=sqp_4a6d289cb9e356f4bb54645746734561d72a3 -DskipTests

注意,最好也加上-Dsonar.projectName属性,否则下次pom.xml里面的name更新后,SonarQube里对外展示的项目名也会跟着更新,不可控。

5、可能会遇到的问题:

5.1 windows配置环境里使用的是jre而不是jdk。这时候会报说没有编译工具,会提示你是不是用了jre,这时候下载一个jdk安装就好了;

5.2 SonarQube、Maven、代码使用的版本不一致,会报很长一段错误(隐约记得有说接口不匹配),这时候需要把这三位的JDK版本搞一致,最好使用同样的JDK包。

5.3 报很多单元测试问题。可以先使用-DskipTests屏蔽掉测试环节,后面再把测试调通后放开。

5.4 报错“Authentication error when executing blame svn”,这个需要在SonarQube的下面这个地方把SCM禁用掉(打开开关就是禁用):

七、Jenkins集成SonarQube并通过maven扫描:

可参考:13.Jenkins集成sonarqube_jenkins sonarqube_做咩啊~的博客-CSDN博客

JAVA项目使用的还是Maven集成会更顺利,但是遇到一个问题报错是:

'mvn' 不是内部或外部命令,也不是可运行的程序

通过这篇文章介绍的:Jenkins构建时,报“‘mvn‘ 不是内部或外部命令,也不是可运行的程序_jenkins mvn不是内部或外部命令-CSDN博客第二个方法,可以解决这个问题(记得要重启节点,如果是build-in的,则重启Jenkins整个服务器)。

八、Jenkins集成SonarQube并通过Scaner扫描(比如扫描vue代码):

之前安装Scaner的时候已经集成到Jenkins了,这里就讲一下在构建中如何使用。

1、同样的,还是在SonarQube里面先新建项目,比如:

2、一路往下点击,生成新的token或者使用已有的token都可以:

把上面的命令拷贝出来,有需要使用。

sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=这里换成大家自己的"

3、回到Jenkins里面,把以上命令里面的参数添加到Build Steps里面就可以(各属性直接拷贝粘贴就好):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中使用cv2.resize()函数批量自定义缩放图像尺寸

目录 常用插值缩放方法缩放示例代码总结 常用插值缩放方法 cv2.resize()函数中的interpolation参数指定了图像缩放时使用的插值方法。以下是常用的插值方法&#xff1a; cv2.INTER_NEAREST&#xff1a;最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最…

【Unity地编细节】为什么Unity笔刷在地形上面刷不出来

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

python+unittest+requests+HTMLRunner编写接口自动化测试集

问题描述&#xff1a; 搭建接口测试框架&#xff0c;执行用例请求多个不同请求方式的接口 实现步骤&#xff1a; ① 创建配置文件config.ini&#xff0c;写入部分公用参数&#xff0c;如接口的基本url、测试报告文件路径、测试数据文件路径等配置项 1 [DATABASE] 2 data_addre…

redis的key超时策略和key淘汰机制(面试题详解)

ChatGPT给出的回答&#xff1a; Redis中的Key超时策略和Key淘汰机制是为了有效管理内存和控制数据的生命周期。 Key超时策略&#xff1a;Redis可以为每个Key设置过期时间&#xff0c;一旦Key过期&#xff0c;它将自动从Redis中删除。可以使用EXPIRE命令为Key设置过期时间&…

【自然语言处理】理解词向量、CBOW与Skip-Gram模型

文章目录 一、词向量基础知识1.1 One-hot表示1.2 Distributed表示 二、word2vec基础知识2.1 CBOW和Skip-gram 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型3.1 CBOW 模型3.2 Skip-gram 模型 参考资料 由于计算机不能直接对各种字符进行运算&#xff0c;为此需要…

Python中文分词、词频统计并制作词云图

中文分词、词频统计并制作词云图是统计数据常用的功能&#xff0c;这里用到了三个模块快速实现这个功能。 中文分词、词频统计 import jieba from collections import Counter# 1. 读取文本内容并进行分词 with open(demo.txt, moder, encodinggbk) as f:report f.read() wo…

党建展馆vr仿真解说员具有高质量的表现力和互动性

随着虚拟数字人应用渐成趋势&#xff0c;以虚拟数字人为核心的营销远比其他更能加速品牌年轻化进程和认识&#xff0c;助力企业在激烈的市场竞争中脱颖而出&#xff0c;那么企业虚拟IP代言人解决了哪些痛点? 解决品牌与代言人之间的风险问题 传统代言人在代言品牌时&#xff0…

【C语言|关键字】C语言32个关键字详解(4)——其他(typedef、sizeof)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

vue面试题及答案【集合目录】

前言&#xff1a; 欢迎浏览和关注本专栏《 前端就业宝典 》&#xff0c; 不管是扭螺丝还是造火箭&#xff0c; 多学点知识总没错。 这个专栏是扭螺丝之上要造火箭级别的知识&#xff0c;会给前端工作学习的小伙伴带来意想不到的帮助。 本专栏将前端知识拆整为零&#xff0c;主要…

【技能树笔记】网络篇——练习题解析(九)

目录 前言 一、OSPF双栈 1.1 OSPFv3 LSA 1.2 OSPFv3 二、ISIS双栈 2.1 ISISv6 2.2 ISIS高级特性 三、BGP双栈 四、PIM双栈 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filot…

2023 10月最新Vmd 下载安装教程,WindowsLinux

文章目录 下载Vmdwindows版本安装LINUX版本安装 下载Vmd 谷歌搜索VMD 点击左下角download VMD 可选择对应版本 注&#xff1a;点击后会出现输入用户名和密码&#xff0c;由于我已注册&#xff0c;界面不见了&#xff0c;所以直接描述一下。 输入用户名和密码然后会出现让登记…

AI工具大爆发,写作工具选择谁?

AI在生活中的发挥的作用越来越明显&#xff0c;许多人也想使用AI工具来提高自己的工作效率又或者学习效率&#xff0c;那么作为AI小白的我们该怎么选择写作工具呢&#xff1f;跟着小编的脚步&#xff0c;接着往下阅读。 首先我们需要选择一个适合自己的AI工具以便开展后续工作…

Linux下磁盘备份、文件备份和定时备份命令指南

文章目录 磁盘备份和定时备份命令指南1. 引言2. 磁盘备份命令dda. 简介和基本用法b. dd命令的参数和选项说明c. 使用dd命令进行磁盘镜像备份的步骤d. 恢复备份数据的方法和注意事项e. 示例&#xff1a;使用dd命令备份和还原磁盘镜像 3. 磁盘备份命令tara. 简介和基本用法b. tar…

【1024程序员节特刊】算法题目易错之处干货总结

前言 本文收藏了博主在做编程题目debug过程当中最常遇到的问题&#xff0c;本文随时更新&#xff0c;同时&#xff0c;如果文章有什么错误&#xff0c;或者其它的经验&#xff0c;希望各位大佬在评论区中分享 正文 1.sort排序的时候&#xff0c;如果数组下标从1开始&#xf…

HTML图像标签

html文件&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图像标签学习</title> </head> <body> <img src"../resources/image/01.jpg" alt"小狗图…

玩转 MaxCompute SQL 训练营! 数据分析挖掘迅速出师

云布道师 用 MaxCompute 在数据里面挖呀挖呀挖&#xff0c;写花样的 sql 分析花样的数据&#xff01;云原生大数据计算服务 MaxCompute 是企业级 Serverless 智能数仓&#xff0c;向用户提供了完善的数据导入方案以及多种经典的分布式计算模型&#xff0c;能够更快速的解决用户…

《基于 Vue 组件库 的 Webpack5 配置》9.module.exports 可为数组类型且注意编译顺序

module.exports常见是对象类型&#xff0c;其实也可用数组类型&#xff1b;注意编译顺序&#xff0c;从后往前 编&#xff1a; 也就是说先编 another.js&#xff0c;再编 index.js&#xff1b;所以代码第 9 行不能设置为 true&#xff0c;仅在第一次&#xff0c;也就是代码第19…

SQL NULL Values(空值)

什么是SQL NULL值&#xff1f; SQL 中&#xff0c;NULL 用于表示缺失的值。数据表中的 NULL 值表示该值所处的字段为空。 具有NULL值的字段是没有值的字段。 如果表中的字段是可选的&#xff0c;则可以插入新记录或更新记录而不向该字段添加值。然后&#xff0c;该字段将被保存…

多变量GARCH模型R代码实现

大家好&#xff0c;我是带我去滑雪&#xff01; 多变量GARCH&#xff08;Generalized Autoregressive Conditional Heteroskedasticity&#xff09;模型是一种用于建模多个时间序列变量之间的条件异方差性&#xff08;conditional heteroskedasticity&#xff09;的统计模型。它…

一文读懂:什么是块存储、文件存储、对象存储?

大家好&#xff0c;我是小学僧。 提到"存储"&#xff0c; 你首先想到的是这个&#xff1f; 还是这个&#xff1f; 也或者还有这个&#xff1f; 哈哈&#xff0c;没错&#xff0c;我们生活中已经离不开存储&#xff0c;视频、音乐、图片、文本、表格这样的数据文件都…