Gitee+Jenkins+SonarQube代码上线的实战

这篇具有很好参考价值的文章主要介绍了Gitee+Jenkins+SonarQube代码上线的实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码上线-流程图

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png文章来源地址https://www.toymoban.com/news/detail-816298.html

添加Nexus流程图

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

机器的环境

172.168.0.1  jenkins         # 建议-机器环境:1C以上,2G以上,40G磁盘以上
172.168.0.2  SonarQube       # 建议-机器环境:2C以上,4G以上,40G磁盘以上
172.168.0.3  nexus(可选)     # 建议-机器环境:1C以上,2G以上,80G磁盘以上
172.168.0.4  web01           # 建议-机器环境:1C以上,2G以上,40G磁盘以上

提示:

  • 该公司的Java业务项目比较多的话,可以单独安装nexus。

  • 如果不多可以使用阿里云的私服器。

安装包

# Jenkins机器的安装包:
jdk-8u201-linux-x64.tar.gz
jenkins-2.277.4-1.1.noarch.rpm

# SonarQube机器的安装包:
sonarqube-7.0.tar.gz
mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

# nexus机器的安装包:
nexus-3.13.0-01-unix.tar.gz

# Web01的机器(执行Java项目的安装包)
jdk-8u201-linux-x64.tar.gz
apache-maven-3.3.9-bin.tar.gz
apache-tomcat-8.0.27.tar.gz

开始部署

1、安装JDK运行环境 和 Jenkins服务

# JAVAtar -zxf /opt/jdk-8u60-linux-x64.tar.gz
ln -s /opt/jdk1.8.0_60 /opt/jdk# 添加java变量vim /etc/profileJAVA_HOME=/opt/jdk
export $PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version# Jenkinsrpm -ivh jenkins-2.277.4-1.1.noarch.rpm# 配置Jekinsvim /etc/sysconfig/jenkins# 编辑状态中JENKINS_USER="root"# 目录文件设置为rootchown -R root:root /var/lib/jenkins /var/cache/jenkins /var/log/jenkins# 启动jenkins systemctl start jenkins && systemctl enable jenkins && systemctl status jenkins# 安装插件(如果你没有Jenkins插件的包话,可以在页面自选安装插件)1、自动安装可选插件2、手动下载插件上传安装3、插件放入的目录地址
ll /var/lib/jenkins     
drwxr‐xr‐x 2 root root 6 8月26 00:31 plugins  # jobs为每次构建后构建的结果目录,plugins为插件目录上传插件包解压到plugins下执行重启  systemctl restart jenkins# jenkins主要的目录 /usr/lib/jenkins/       jenkins安装目录,WAR包会放在这里 
/etc/sysconfig/jenkins  jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置 
/var/lib/jenkins/       默认的JENKINS_HOME /var/log/jenkins/jenkins.log  Jenkins日志文件 

测试-访问Jekins页面地址:http://localhost:8080

2、Maven服务

# Maven临时存放目录
/root/.m2/repository
tar -zxf apache-maven-3.3.9
ln -s /opt/apache-maven-3.3.9 /opt/maven
# 添加Maven变量
vim /etc/profile
MAVEN=/opt/maven
export PATH=$PATH:$MAVEN/bin/
source /etc/profile
mvn -v

# 参数作用信息
mvn package -Dmaven.test.skip=true  跳过测试用例
integration-test(集成测试):   如果有需要,把包处理并部署到可以运行集成测试的环境中去。
validate(验证):   验证项目正确,并且所有必要信息可用。 
compile(编译):    编译项目源码 
test(测试):       使用合适的单元测试框架测试编译后的源码。 
package(打包):    源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
verify(验证):     进行各种测试来验证包是否有效并且符合质量标准。 
install(安装):    把包安装到本地仓库,使该包可以作为其他本地项目的依赖。 
deploy(部署):     在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。 
mvn clean (清除) :  清除上次编译的结果 


提示:如果有您自己搭建了nexus私服器,可以跳过。
# 在Maven的settings.xml 文件里配置:阿里云的子节点。添加阿里云地址
如下操作:
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3、部署私服 Nexus (可选)

下载地址:https://www.sonatype.com/download‐oss‐sonatype
配置仓库两个选项
1、项目下的pom.xml配置、只生效当前的项目
2、在maven配置全局所有项目生效

# JAVA
tar -zxf /opt/jdk-8u60-linux-x64.tar.gz
ln -s /opt/jdk1.8.0_60 /opt/jdk
# 添加java变量
vim /etc/profile
JAVA_HOME=/opt/jdk
export $PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version

# Nexus
tar -zxvf nexus-3.13.0-01-unix.tar.gz -C /opt/
ln -s /opt/nexus-3.13.0-01 /opt/nexus
# 启动
/opt/nexus/bin/nexus start
# 访问Nexus地址 http://localhost:8081
默认账号:admin
默认密码:admin123

配置Maven全局配置文件

cat /opt/maven/conf/settings.xml
...........
133     <server>134       <id>my-nexue-releases</id>135       <username>admin</username>136       <password>admin123</password>137     </server>138     <server>139       <id>my-nexue-snapshot</id>140       <username>admin</username>141       <password>admin123</password>142     </server>...........
156   <mirrors>157   <mirror>158     <id>nexus</id>159     <mirrorOf>*</mirrorOf>160     <url>http://nexus机器IP:8081/repository/maven-public/</url>161   </mirror>...........
174   </mirrors>...........
197   <profiles>...........
262     <profile>263       <id>nexus</id>264       <repositories>265         <repository>266           <id>central</id>267           <url>http://nexus机器IP:8081/repository/maven-public/</url>268           <releases><enabled>true</enabled></releases>269           <snapshots><enabled>true</enabled></snapshots>270         </repository>271       </repositories>272     <pluginRepositories>273       <pluginRepository>274         <id>central</id>275         <url>http://nexus机器IP:8081/repository/maven-public/</url>276           <releases><enabled>true</enabled></releases>277           <snapshots><enabled>true</enabled></snapshots>278         </pluginRepository>279       </pluginRepositories>280     </profile>281   </profiles>..............
291   <activeProfiles>292     <activeProfile>nexus</activeProfile>293   </activeProfiles>

4、部署SonarQube

代码质量检测SonarQube 
1. SonarQube基础java开发,需安装open JDK8版本 
2. SonarQube需要依赖MySQL数据库,至少5.6版本以上 
3. SonarQube的小型实例至少4G内存,如果大型实例需要16G内存

安装SonarQube

unzip sonarqube-7.0.zip -d /opt/
ln -s /opt/sonarqube-7.0 /opt/sonarqube
# 创建soanr用户 并且授权目录为sonar
groupadd sonar
useradd sonar -g sonar
passwd sonar
chown -R sonar.sonar /opt/jdk-11.0.7/
chown -R sonar.sonar /opt/sonarqube-8.9.8.54436

配置Sonar连接本地数据库

cat /opt/sonarqube/conf/sonar.properties.......sonar.jdbc.username=root
sonar.jdbc.password=123456sonar.jdbc.url=jdbc:mysql://Mysql机器IP:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false.......

启动方案有以下二种:
1)使用普通用户启动sonarqube

su - sonar -c "/opt/sonarqube/bin/linux-x86-64/sonar.sh start"

2)创建SonarQube服务

vim /etc/systemd/system/sonarqube.service    
[Unit]Description=SonarQube service
After=syslog.target network.target[Service]Type=simple
User=sonar
Group=sonar
PermissionsStartOnly=true# 备注:ExecStart中的路径请根据版本不同重新设置ExecStart=/usr/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube-7.0/lib/sonar-application-7.0.jar 
StandardOutput=syslog
LimitNOFILE=65536LimitNPROC=8192TimeoutStartSec=5Restart=always
SuccessExitStatus=143[Install]WantedBy=multi-user.target# 启动sonarqube.servicesystemctl daemon-reload
systemctl enable sonarqube.service
systemctl start sonarqube.service

启动后端口为9000

直接访问  http://localhost:9000/about 
用户名admin 
密码admin 

提示:它会生成一个tokin,只显示一次记录好 
jenkins: 0807eba6dcceabe5bce653a9c4efe95ce6a8ac99

配置管理 sonar 安装插件
1.安装中文汉化插件在页面上找到administrator > Marketplace > 搜索框 chinese,出现一个 chinese pack 然后点击install,安装完点击restart 重启生效

2.默认已安装C JAVA Python PHP JS 等代码质量分析工具,如果一个项目使用了JAVA CSS JS HTML,默认情况下sonar只会检测JAVA,JS等代码的漏洞和bug,如果安装了HTML、CSS等插件,则会检测该项目代码中JAVA JS HTML CSS代码的漏洞和bug

手动安装插件(这是UP之前的java项目,打包好的包)

# 先清理之前的jar包,然后推送
rm -rf /opt/sonarqube/extensions/plugins/*
tar -zxvf /opt/sonar_plugins.tar.gz -C /opt/sonarqube/extensions/plugins/
chown sonar.sonar -R /opt/sonarqube/extensions/plugins/
su - sonar -c "/opt/sonarqube/bin/linux-x86-64/sonar.sh restart"

案列:创建Java的流水线项目

1、Gitee里创建代码库(也可以使用其它的代码库,比如:Gitlab、Github等)

1)新建仓库

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

2)设置全局,再创建 git 仓库
提示:有条件的话可以单独一台代码的机器,如果没有就在Jenkins机器等。其它台机器上上传代码

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

2、在Jenkins页面上,创建一个Maven的项目名:Java-Project01

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

前提条件:需要您先使用Git打标签,上传到Gitee代码库才会显示出标签信息。

cd /data/test/Java-Poject01/
git init 
git add .
git commit -am "new XXX"    # 提交到本地仓库中
git tag -a v1.XX -m "v1.XX稳定版"
git push -u origin v1.XX

在Jenkins页面里添加 获取Gitee代码库的标签信息

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

然后再创建 选项参数:实现发布和回滚的功能

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

记得这里要添加 ${git_version} 名

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

实现的结果

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

提示:如果打包过在java项目是没有pom.xml,需要您自己手动先打包才会生成

测试java项目,进行简单打包命令
cd /data/hello-world 
mvn package然后Git打标签,并推送Gitee代码库上

添加 chean package (提醒:Java的项目必须要用到编译的功能 )

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

添加执行shell

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

cat /data/script/java_maven.sh
#!/bin/sh
MAVEN=/opt/tomcat/bin
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/Java-Project01"
WEB_DIR="/opt/tomcat/webapps"
WEB_IP=“IP地址”

get_code_scp(){
        ssh $WEB_IP "cd $WEB_DIR && mkdir java-${git_version}"
        cd $CODE_DIR && scp $CODE_DIR/target/*.war $WEB_IP:$WEB_DIR/java-${git_version}
}

code_tarxf(){
        ssh $WEB_IP "cd $WEB_DIR/java-${git_version} && unzip *.war && rm -rf *.war"
}

ln_html(){
        ssh $WEB_IP "cd $WEB_DIR/ && rm -rf ROOT && ln -s java-${git_version} ROOT && $MAVEN/shutdown.sh && $MAVEN/startup.sh"
}
main(){
        get_code_scp;
        code_tarxf;
        ln_html;
}
if [ "$deploy_env" == "deploy" ];then
        if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
            echo "构建失败该 $git_version 版本号已部署"
    else
    main
    fi
elif [ "$deploy_env" == "rollback" ];then
        ln_html
fi

手动测试下Java项目发布

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

3、实现Java代码,推送到SonarQube检测

客户端其他版本下载地址搜索对应版本,例如:  SonarScanner 4.07
地址:https://docs.sonarqube.org/7.9/analysis/scan/sonarscanner/
下载客户端的包名: sonar-scanner-cli-4.7.0.2747-linux.zip

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

(可选) 到项目目录下进行代码推送分析 打开认证

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

需要在客服端机器执行(比如:web机器)

# 解压
tar -zxvf sonar-scanner-cli-4.7.0.2747-linux.zip -C /opt/

# 添加变量
vim /etc/profile
SONAR_SCANNER=/opt/sonar-scanner
export PATH=$PATH:$SONAR_SCANNER/bin/

# 创建项目后,会有显示以下秘钥,记得一定要复制保存下来
项目名称: ad4bf979f9146c971726d45323dc2a64dfea3020eda4
# 在web机器上执行命令
sonar-scanner \
  -Dsonar.projectKey=项目名称 \   # 你的代码库项目名
  -Dsonar.sources=. \
  -Dsonar.host.url=http://SonarQube的机器IP:9000 \
  -Dsonar.login=ad4bf979f9146c971726d45323dc2a64dfea3020

在Jenkins上配置 Execute SonarQube Scanner(记住一定要 放在在shell上面,因为要先执行SonarQube工具)

sonar.projectName=${JOB_NAME}
sonar.projectKey=java
sonar.sources=.

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

然后执行就OK了,等编译完后会自动推送到SonarQube上

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

Gitee+Jenkins+SonarQube代码上线的实战,软件系统,servlet

image.png

到了这里,关于Gitee+Jenkins+SonarQube代码上线的实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 五.实战软件部署 1-3实战章节-前言&MYSQL 5.7版本在centos系统安装&MYSQL 8.0版本在centos系统安装

    目录 五.实战软件部署 1-实战章节-前言 五.实战软件部署 2-MYSQL 5.7版本在centos系统安装 1-配置yum仓库 2-使用yum安装mysql 3-安装完成后,启动mysql并配置开机自启动 4-检查mysql的运行状态 --配置 1-获取mysql的初识密码 2-登录mysql数据库系统 3-修改root用户密码 4-配置root的简单密码

    2024年02月21日
    浏览(49)
  • sonarqube安装以及jenkins集成sonarqube

    docker 方式安装是最简便的,我选择了这个安装方式 1、下载镜像 2、 创建挂载目录 3、运行容器 4、通过ip 端口访问:http://ip:9090 1、jenkins下载插件: 进入插件管理,搜索sonar,选择SonarQube Scanner for Jenkins安装,安装好后重启jenkins服务。 2、sonarqube创建访问令牌 sonarqube中生成用户

    2024年02月11日
    浏览(51)
  • Java版本spring cloud 工程管理系统软件 系统源代码 自主研发,工程行业适用

           Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1、项目进度图表  2、项目信息 施工地图:1、展示当前角色

    2024年02月06日
    浏览(53)
  • 【系统】【winget】从零开始配置一个开发用的 Windows 11 系统的电脑 - winget 代码终端安装软件

    我有强迫症,需要干净、简单且省心的安装。 我喜欢苹果系统的沙盒机制,在 Win上难以实现或者损耗性能。 我发现可以使用 winget 现在已经可以安装和组织许多软件了,很好用。 微软官方文档:使用 winget 工具安装和管理应用程序 索性电脑一块硬盘只有一个C盘分区,安装软

    2024年02月09日
    浏览(76)
  • 【超级全面】jenkins通过SSH凭证方式拉取Gitee代码(含错误解决方法)

    使用 SSH 密钥方式拉取 Gitee 上的代码,我们只需要在服务器上使用 root 用户生成公钥和私钥,将公钥配置到 Gitee 中,再将私钥配置到 Jenkins 中。这样 Jenkins 就可以免密从 Gitee 上拉取代码了。 1、生成密钥之前检查一下是否已经生成密钥,存在密钥则进行删除: 删除存在的密

    2024年02月09日
    浏览(49)
  • Jenkins集成SonarQube保姆级教程

    Jenkins是自动化部署平台,一个粗眉大眼的糙汉子! SonarQube是代码扫描平台,一个眉目清秀的小女子! 有一天,上天交给我一个任务,去撮合撮合他们! 我抬头看了看天, 不,天花板。 这事儿有戏! 不废话,开干! jenkins和SonarQube的搭建过程就忽略了,不知道的可以看:

    2024年02月15日
    浏览(41)
  • 7.云原生之jenkins集成SonarQube

    云原生专栏大纲 添加应用仓库https://charts.kubesphere.io/main,在仓库中安装SonarQube 搭建 SonarQube 并配置到 KubeSphere 将 SonarQube 集成到流水线 【应用仓库安装】 sonarqube地址: 创建sonar-token生成令牌 240cb3903f4ee4aba15f531686dc6bc598c28cc3 查看jenkins暴露的NodePort端口 http://master节点ip:30180/so

    2024年02月02日
    浏览(34)
  • docker中的jenkins去配置sonarQube

    SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。 1、代码质量和安全扫描和分析平台。 2、多维度分析代码:代码量、安全隐患

    2024年02月14日
    浏览(37)
  • gitee代码管理配置(Gitee+Git安装+TortoiseGit软件)

    ** ** 在Gitee上管理代码,本地的代码,托管到云端,方便管理和多人协作开发。 配置步骤:①在gitee注册账号;②安装git软件;③安装TortoiseGit软件,简称为:小乌龟。 推荐使用手机注册,后续同步时需要用到账号密码,手机号方便输入; 注册后,添加个人邮箱; 创建仓库:

    2024年02月08日
    浏览(54)
  • 微信智能点餐小程序系统软件开发源代码案例以及微信智能订餐小程序系统需要哪些功能

    随着科技的发展和人们生活节奏的加快,智能点餐APP逐渐成为餐饮行业的热门应用。不仅为顾客提供了便捷的点餐服务,还能帮助餐厅提高效率,降低成本。因此,开发一款智能订餐app具有很高的商业价值和社会效益。   开发一款功能齐全、用户体验优秀的智能点餐APP,满足

    2024年04月27日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包