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

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

相关文章

Springboot 常用注解

自动装配 ComponentScan 用于配置Spring需要扫描的被组件注解注释的类所在的包。 Component 用于标注一个普通的组件类&#xff0c;它没有明确的业务范围&#xff0c;只是通知Spring被此注解的类需要被纳入到Spring Bean容器中并进行管理。 Autowired Autowired用于自动装配…

Linux--进程终止

1.进程退出场景 进程退出场景只有三种&#xff1a; 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果错误代码在运行期间异常中断&#xff0c;退出进程 比如&#xff1a;对于错误的进程&#xff0c;可以通过不同的返回值来确定&#xff0c;什么是错误码呢&#x…

微信小程序前后端交互与WXS的应用

目录 前言 一、后台数据交互 1.数据表 2.后端代码的实现 3.前后端交互 3.1.后端接口URL管理 3.2.发送后端请求 3.3.请求方式的封装 4.前端代码的编写 二、WXS的使用 1、.wxs 文件 2.综合运用 前言 当今社交媒体的普及使得微信小程序成为了一种流行的应用开发形式。…

BUUCTF 大白 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 看不到图&#xff1f; 是不是屏幕太小了 。 密文&#xff1a; 下载附件后解压&#xff0c;发现一张名为dabai.png的图片。 &#xff08;似乎因为文件被修改过&#xff0c;原图片无法放在这里&#xff0c;这张图片是…

【JavaScript】深入浅出理解事件循环

1. 浏览器的进程模型 1.1 进程 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 1.2 线程 有了进程后&#xff0c;就可以运…

【讲座笔记】基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023 | 字节开源

引言 三个问题 (问题解法) 1套SQL 2种语法 统一SQL的实践案例 虚拟列的实践案例 SQL Define Function 指标管理的实现 在这里插入图片描述

还不知道光场相机吗?

1.什么是光场&#xff1f; 光场&#xff08;light field&#xff09;&#xff1a;就是指光在每一个方向通过每一个点的光量。 从概念里&#xff0c;你至少可以得到两点信息&#xff1a; 光场包含光的方向光场包含一个点的光量 2.什么是光场相机 我们知道普通的相机拍照成像…

【MyBatisPlus】快速入门、常用注解、常用配置

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MyBatisPlus 一、快速入门1.1 引入MyBatisP…

发挥服务器的无限潜能:创意项目、在线社区和更多

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

docker 安装 sftpgo

sftpgo 简介 sftpgo 是一个功能齐全且高度可配置的 SFTP 服务器&#xff0c;具有可选的 HTTP/S、FTP/S 和 WebDAV 支持。支持多种存储后端&#xff1a;本地文件系统、加密本地文件系统、S3&#xff08;兼容&#xff09;对象存储、Google 云存储、Azure Blob 存储、SFTP。 官…

Rust之自动化测试(三): 测试组合

开发环境 Windows 10Rust 1.73.0 VS Code 1.83.1 项目工程 这里继续沿用上次工程rust-demo 测试组合 正如本章开始时提到的&#xff0c;测试是一个复杂的学科&#xff0c;不同的人使用不同的术语和组织。Rust社区根据两个主要类别来考虑测试:单元测试和集成测试。单元测试很…

轻松搭建个人web站点:OpenWRT教程结合内网穿透技术实现公网远程访问

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器&#xff0c;目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器&#xff0c;并且和…

ubuntu启动模式介绍以及如何进入单用户模式和恢复模式

Ubuntu操作系统提供了多种启动模式&#xff0c;每种模式都有不同的用途和功能。下面将深入介绍Ubuntu的几种启动模式&#xff1a; 正常启动模式&#xff08;Normal boot&#xff09;&#xff1a;这是默认的启动模式&#xff0c;也是大多数用户使用的模式。在正常启动模式下&am…

mk语法示例

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

gitlab 离线安装问题解决:NOKEY,signature check fail

文章目录 1&#xff0c;安装gitlab-ce-161.1&#xff0c;rpm安装gitlab问题: NOKEY、signature check fail1.2, docker 启动 gitlab: ThreadError: cant create Thread: Operation not permitted 2&#xff0c;安装gitlab-ce-142.1 修改配置&#xff0c;重新编译2.2 root用户启…

陪诊小程序|陪诊小程序关爱健康,无忧陪伴

随着社会发展和人们生活水平的提高&#xff0c;健康问题成为人们关注的焦点。然而&#xff0c;在就医过程中&#xff0c;许多患者常常感到孤独和无助&#xff0c;缺乏得到家人陪伴的温暖与安慰。为了解决这一问题&#xff0c;我们公司开发了一款创新的陪诊小程序软件&#xff0…

迁移conda环境后,非root用户执行pip命令和jupyter命令报错/bad interpreter: Permission denied

移动conda环境&#xff0c;在移动的环境执行pip和jupyter 报错-bash: /data/home/用户名/anaconda3/envs/llm/bin/pip: /root/anaconda3/envs/llm/bin/python: bad interpreter: Permission denied 报错信息 一、原因 原因是当前的这个data/home/用户名/anaconda3/envs/环境名…

POSIX信号量

目录 信号量的原理 信号量函数 使用信号量实现线程互斥功能 基于环形队列的生产消费模型 生产者和消费者必须遵守的两个规则 信号量的原理 通过之前的学习&#xff0c;我们知道有的资源可能会被多个执行流同时申请访问&#xff0c;我们将这种资源叫做临界资源&#xff0c…

记录一次线下渗透电气照明系统(分析与实战)

项目地址:https://github.com/MartinxMax/S-Clustr 注意 本次行动未造成任何设备损坏,并在道德允许范围内测试 >ethical hacking< 发现过程 在路途中,发现一个未锁的配电柜,身为一个电工自然免不了好奇心(非专业人士请勿模仿,操作不当的话220V人就直了) 根据照片,简…

算法__中缀表达式转后缀表达式

文章目录 概念算法中缀转后缀案例讲解 后缀算值案例讲解 概念 中缀表达式就是日常生活中遇到的运算表达式&#xff0c;例如a*(b-c)&#xff1b; 后缀表达式则是另一种运算表达式&#xff0c;其特点在于运算符在对象后&#xff0c;且表达式中没有括号&#xff0c;例如abc-* 算…