当前位置: 首页 > news >正文

搭建一个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.lryc.cn/news/204851.html

相关文章:

  • 漏洞扫描系统的主要功能有哪些
  • Spring Boot配置多个Kafka数据源
  • Learning Open-World Object Proposals without Learning to Classify(论文解析)
  • 前端在项目中添加自己的功能页面
  • 数据库MySQL(二):DDL数据定义语言
  • Spring FactoryBean 源码讲解
  • 【C语言】零碎知识点|细节
  • 电影评分数据分析案例-Spark SQL
  • vue如何使用冻结对象提升代码效率及其原理解析
  • 基于深度学习网络的手势识别算法matlab仿真
  • [论文笔记] 多语言模型中的负干扰研究结果和元学习算法
  • 【OpenVINO】行人摔倒检测 — 基于 OpenVINO C# API 部署PP-Human-下篇
  • 运行报错(三)git bash报错fatal: detected dubious ownership in repository at
  • nvm 的安装及使用
  • xcode Simulator 安装
  • 【Maven教程】(八):使用 Nexus 创建私服 ~
  • 螺旋矩阵[中等]
  • babel6使用ES2020最新js语法
  • 【iOS】简单的网络请求
  • Vulnhub系列靶机---mhz_cxf: c1f
  • SDRAM与DRAM
  • 数据库基础(一)【MySQL】
  • C++ -- 位运算与常用库函数(ACWING语法基础)
  • 老卫带你学---leetcode刷题(557. 反转字符串中的单词 III)
  • IEEE754 标准存储浮点数
  • CSS 两栏布局
  • RHCSA常用命令总结
  • 【Spring Boot】详解restful api
  • LISTAGG 函数
  • 485modbus转profinet网关连三菱变频器modbus通讯配置案例