热点新闻
Gitee+Jenkins+SonarQube代码上线的实战操作
2023-08-01 16:31  浏览:1125  搜索引擎搜索“早勤网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在早勤网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

代码上线-流程图




image.png

添加Nexus流程图




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服务

# 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 # Jenkins rpm -ivh jenkins-2.277.4-1.1.noarch.rpm # 配置Jekins vim /etc/sysconfig/jenkins # 编辑状态中 JENKINS_USER="root" # 目录文件设置为root chown -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=123456 sonar.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=65536 LimitNPROC=8192 TimeoutStartSec=5 Restart=always SuccessExitStatus=143 [Install] WantedBy=multi-user.target # 启动sonarqube.service systemctl 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)新建仓库





image.png




image.png

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





image.png

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




image.png




image.png




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代码库的标签信息




image.png

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




image.png

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




image.png

实现的结果




image.png

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

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

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




image.png

添加执行shell




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项目发布




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




image.png

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





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=.


image.png

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




image.png




image.png

发布人:466b****    IP:117.173.23.***     举报/删稿
展会推荐
  • 2023-08-01浏览:1209
让朕来说2句
评论
收藏
点赞
转发