day072-代碼檢查工具-Sonar與maven私服-Nexus

文章目錄

  • 0. 老男孩思想-選對池塘釣美人魚
  • 1. 代碼回滾方案
  • 2. SonarQube
    • 2.1 代碼檢查工具
    • 2.2 部署sonarqube
      • 2.2.1 軟件要求
      • 2.2.2 安裝軟件
      • 2.2.3 啟動sonar
      • 2.2.4 部署插件
    • 2.3 sonar檢查java代碼
      • 2.3.1 創建sona項目
      • 2.3.2 分析java代碼
      • 2.3.3 Jenkins結合sonar檢查代碼
    • 2.4 sonar檢查非java代碼
      • 2.4.1 創建項目
      • 2.4.2 部署SonarScanner CLI
      • 2.4.3 Jenkins結合sonar檢查代碼
  • 3. nexus-maven倉庫(私服)
    • 3.1 部署軟件
    • 3.2 頁面訪問
    • 3.3 修改遠程倉庫地址
    • 3.4 修改maven的配置地址
  • 4. Jenkins用戶權限管理(RBAC)
    • 4.1 Jenkins設置
    • 4.2 RBAC配置
      • 4.2.1 新增Jenkins用戶
      • 4.2.2 配置權限
      • 4.2.3 分配權限
  • 5. Jenkins基于docker的完整流程
  • 6. 思維導圖

0. 老男孩思想-選對池塘釣美人魚

找女朋友不建議找高學歷的(碩士、博士)。否則就等著人家虐你吧,累的都不知道咋死的。找寵物找智商高的,因為寵物智商最高不過3歲兒童的智商,你可以玩弄于股掌之間,若你找個智商比你還高的寵物,那你不死也會扒層皮。

男生的標配學歷是本科,女生的標配學歷是大專。

找女朋友,要找氣質好的、身材好的,不要找妖艷的。

—以上經驗來自老男孩老師的親身感悟

1. 代碼回滾方案

在這里插入圖片描述

2. SonarQube

SonarQube 是 一個開源的靜態代碼分析平臺,用于幫助開發團隊提升代碼質量和安全性=。它能夠自動檢測代碼中的潛在問題,例如錯誤、漏洞、代碼異味和安全風險,并提供詳細的報告和分析結果。

  • 官方地址:[Code Quality, Security & Static Analysis Tool with SonarQube | Sonar](https://www.sonarsource.com/products/sonarqube/)
  • 官方下載地址:[Download SonarQube | Sonar](https://www.sonarsource.com/products/sonarqube/downloads/)
  • 歷史版本:[下載以前的 SonarQube 服務器版本 |聲納](https://www.sonarsource.com/products/sonarqube/downloads/historical-downloads/)

2.1 代碼檢查工具

使用階段代碼安全檢查工具說明用法
部署前Sonarqube(開源,商業)安全、質量檢查部署前,Jenkins通過sonar命令調用
部署前OWASP Dependency-Check根據漏洞庫,做漏洞掃描Jenkins插件
運行中AppScan(商業)漏掃工具
運行中awvs(商業)掃描業務漏洞、應用樓頂部署
運行中nessus(商業)掃描系統漏洞部署
運行中hm(河馬)(開源)漏掃,webshell(網站后門)部署軟件;二進制部署
運行中綠盟、奇安信、云安全中心
運行中trivy、clair、容器環境掃描容器部署

2.2 部署sonarqube

2.2.1 軟件要求

  • Sonarqube 7.7 jdk 1.8 MySQL數據庫
  • Sonarqube 8.9 lts jdk 11
  • sonarqube從7.9后不支持MySQL,支持PostgreSQL、PSQL、Oracle

  1. sonarqube基于java開發,所以需要安裝OpenJDK8版本
  2. sonarqube需要依賴MySQL數據庫,至少5.6版本以上
  3. sonarqube的小型實例至少需要4G內存,如果是大型實例需要16G

2.2.2 安裝軟件

  • 軟件包和插件:sonarqube-7.7.zip等2個文件 鏈接: https://pan.baidu.com/s/1iAcRDLDrgmqk4i4EUj91tQ?pwd=ubpp 提取碼: ubpp
# 安裝jdk
[root@devops-sonarqube ~]# yum install -y java
# 部署sonarqube
[root@devops-sonarqube ~]# mkdir -p /app/tools
[root@devops-sonarqube ~]# unzip sonarqube-7.7.zip -d /app/tools
……
[root@devops-sonarqube ~]# ln -s /app/tools/sonarqube-7.7 /app/tools/sonar
[root@devops-sonarqube ~]# cd /app/tools/sonar/conf
# sonar對MySQL版本的要求
[root@devops-sonarqube /app/tools/sonar/conf]# grep -E 'MySQL' sonar.properties 
#----- MySQL >=5.6 && <8.0
# 配置普通用戶
# sonar中有elasticsearch,es需要普通用戶運行
[root@devops-sonarqube ~]# useradd sonar
[root@devops-sonarqube ~]# chown -R sonar:sonar /app/tools/sonar/
  • 啟動sonar數據庫:mysql
[root@docker01 ~]# docker run -d --name sonar_db -p 3306:3306 --restart always -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=sonar -e MYSQL_USER=sonar -e MYSQL_PASSWORD=1  mysql:5.7-debian
949f44bdd19213012d9c5761d82b493bb31925dbbeaae117c3d68de47a973dc6
[root@docker01 ~]# docker ps |grep mysql
949f44bdd192   mysql:5.7-debian                      "docker-entrypoint.s…"   7 seconds ago   Up 7 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   sonar_db
  • 修改配置文件:/app/tools/sonar/conf/sonar.properties

在這里插入圖片描述

2.2.3 啟動sonar

[root@devops-sonarqube ~]# su - sonar -c "/app/tools/sonar/bin/linux-x86-64/sonar.sh start"
Starting SonarQube...
Started SonarQube.
[root@devops-sonarqube ~]# ss -lntup |grep -E '9000|9001'
tcp    LISTEN  0       25                        *:9000                 *:*      users:(("java",pid=8266,fd=118))                           
tcp    LISTEN  0       128      [::ffff:127.0.0.1]:9001                 *:*      users:(("java",pid=8177,fd=86))   
  • 主機添加hosts

在這里插入圖片描述

  • 前端頁面訪問

在這里插入圖片描述

在這里插入圖片描述

2.2.4 部署插件

# 刪掉原有插件
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# rm *
文件,目錄已經移動到回收站:/recyle/tmp.o49otsVpDL
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# ll ~/sonarqube*gz
-rw-r--r-- 1 root root 76055738  81 08:34 /root/sonarqube_7.7.plugins_new.tar.gz
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# tar xf ~/sonarqube_7.7.plugins_new.tar.gz 
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# mv plugins/* .
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# rm plugins/
文件,目錄已經移動到回收站:/recyle/tmp.yxCWpFOYKu
  • 重啟sonar
[root@devops-sonarqube ~]# su - sonar -c "/app/tools/sonar/bin/linux-x86-64/sonar.sh restart"
Stopping SonarQube...
SonarQube was not running.
Starting SonarQube...
Started SonarQube.

2.3 sonar檢查java代碼

2.3.1 創建sona項目

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • 令牌:a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67

在這里插入圖片描述

2.3.2 分析java代碼

mvn sonar:sonar \-Dsonar.projectKey=java \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67 clean package
  • 做好hosts解析

在這里插入圖片描述

  • 使用sonar命令編譯代碼

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

2.3.3 Jenkins結合sonar檢查代碼

sonar:sonar
-Dsonar.projectName=${JOB_NAME}
-Dsonar.projectKey=${JOB_NAME}
-Dsonar.host.url=http://sonar.oldboy.cn:9000
-Dsonar.login=a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67
clean package

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

2.4 sonar檢查非java代碼

2.4.1 創建項目

在這里插入圖片描述

在這里插入圖片描述

  • 令牌:b2ca01afe7b2e7807a6389eaee44e2591b025fc9

在這里插入圖片描述

  • sonar命令:
sonar-scanner \-Dsonar.projectKey=china \-Dsonar.sources=. \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9

2.4.2 部署SonarScanner CLI

  • 軟件包:sonar-scanner-cli-4.7.0.2747-linux.zip 鏈接: https://pan.baidu.com/s/1rTT4DbTnYLYkprCrPs8o3A?pwd=6yww 提取碼: 6yww
[root@devops-jenkins /app/tools]# unzip sonar-scanner-cli-4.7.0.2747-linux.zip 
[root@devops-jenkins /app/tools]# ln -s sonar-scanner-4.7.0.2747-linux sonar-scanner
# 測試
[root@devops-jenkins /app/code/china/china-ex-main]# /app/tools/sonar-scanner/bin/sonar-scanner  -Dsonar.projectKey=china   -Dsonar.sources=.   -Dsonar.host.url=http://sonar.oldboy.cn:9000   -Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9
……

2.4.3 Jenkins結合sonar檢查代碼

# sonar掃描器路徑寫絕對路徑
sonar-scanner \-Dsonar.projectName=${JOB_NAME} \-Dsonar.projectKey=${JOB_NAME} \-Dsonar.sources=. \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

3. nexus-maven倉庫(私服)

3.1 部署軟件

  • 軟件包:nexus-3.13.0-01-unix.tar.gz 鏈接: https://pan.baidu.com/s/15Ebhb7K5iro-GR3UNBnPJw?pwd=c1pp 提取碼: c1pp
[root@devops-nexus ~]# mkdir -p /app/tools
[root@devops-nexus ~]# tar xf nexus-3.13.0-01-unix.tar.gz -C /app/tools/
[root@devops-nexus ~]# ln -s /app/tools/nexus-3.13.0-01 /app/tools/nexus
[root@devops-nexus ~]# ln -s /app/tools/nexus/bin/nexus /sbin/
# 安裝jdk1.8
[root@devops-nexus ~]# yum install -y java-1.8.0-openjdk
……
  • 啟動服務,nexus端口是8081
[root@devops-nexus ~]# nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus
[root@devops-nexus ~]# ss -lntup |grep 8081
tcp     LISTEN   0        50               0.0.0.0:8081           0.0.0.0:*      users:(("java",pid=2673,fd=871))  
  • 主機添加解析

在這里插入圖片描述

3.2 頁面訪問

在這里插入圖片描述

在這里插入圖片描述

3.3 修改遠程倉庫地址

  • Nexus向遠程倉庫獲取本地沒有的依賴,默認是官方地址;需要修改成阿里云的下載源
  • https://maven.aliyun.com/nexus/content/groups/public/

在這里插入圖片描述

3.4 修改maven的配置地址

  • maven獲取依賴時,不再直接訪問阿里云,而是訪問Nexus
[root@devops-jenkins /app/tools/maven/conf]# cp settings.xml settings.xml.bak 
[root@devops-jenkins /app/tools/maven/conf]# vim settings.xml
  • maven的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><pluginGroups></pluginGroups><proxies></proxies><servers><server>   <id>my-nexus-releases</id>   <username>admin</username>   <password>admin123</password>   </server>   <server>   <id>my-nexus-snapshot</id>   <username>admin</username>   <password>admin123</password>   </server></servers><mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><url>http://10.0.0.74:8081/repository/maven-public/</url></mirror></mirrors><profiles><profile><id>nexus</id><repositories><repository><id>central</id><url>http://10.0.0.74:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://10.0.0.74:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories></profile></profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
  • 編譯代碼,測試一下

在這里插入圖片描述

在這里插入圖片描述

4. Jenkins用戶權限管理(RBAC)

  • Jenkins默認每個用戶的權限都是最?權限。
  • 需要讓用戶與任務關聯(RBAC)
  • RBAC:基于角色的認證

4.1 Jenkins設置

  • 查看RBAC插件是否安裝

在這里插入圖片描述

在這里插入圖片描述

  • 用戶權限策略

在這里插入圖片描述

在這里插入圖片描述

4.2 RBAC配置

4.2.1 新增Jenkins用戶

在這里插入圖片描述

在這里插入圖片描述

4.2.2 配置權限

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

4.2.3 分配權限

在這里插入圖片描述

在這里插入圖片描述

5. Jenkins基于docker的完整流程

在這里插入圖片描述

6. 思維導圖

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀請你加入共享群「老男孩教育Linux運維99期-孫克旭」一起進行文檔協作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92629.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端基礎】15、列表元素、表格元素、表單元素(注:極其粗略的記載。)

一、列表元素 1、什么是列表元素2、有序列表&#xff08;ol、li&#xff09; ol有序列表 直接子元素只能是li。 li列表中的每一項。3、無序列表&#xff08;ul、li&#xff09; ol無序列表 直接子元素只能是li。 li列表中的每一項。4、定義列表&#xff08;dl、dt、dd&#xff…

IRFBG30PBF Vishay威世MOSFET場效應管

IRFBG30PBF Vishay威世&#xff1a;超快MOSFET 場效應管一、產品定位IRFBG30PBF 是Vishay威世推出的600V/30A N溝道功率MOSFET&#xff0c;采用第五代TrenchFET技術&#xff0c;專為開關電源、電機驅動、新能源逆變器等高功率場景設計。以85mΩ超低導通電阻和超快反向恢復&…

【07-AGI的討論】

AI ANI&#xff1a;artificial narrow intelligence; 如 智能音箱&#xff1b;自動駕駛汽車&#xff0c;網絡搜索&#xff0c;其他用于專業特定事項的工具&#xff1b; AGI&#xff1a;artificial general intelligence; building AI systems that could do anything a typical…

[激光原理與應用-225]:機械 - 3D圖與2D圖各自的作用

在機械設計與加工領域&#xff0c;3D圖和2D圖是兩種核心的工程表達方式&#xff0c;它們在產品設計、制造、裝配及維護等環節中扮演不同角色&#xff0c;具有互補性。以下是它們各自的作用及具體應用場景的詳細解析&#xff1a;一、3D圖的作用1. 直觀展示產品全貌三維可視化&am…

【從零開始java學習|第一篇】java中的名詞概念(JDK、JVM、JRE等等)

目錄 一、核心運行環境三要素&#xff08;JVM/JRE/JDK&#xff09; 二、常用開發指令&#xff08;JDK 自帶工具&#xff09; 三、一些其他概念 四、總結核心邏輯鏈 要入門 Java&#xff0c;理解核心概念之間的關系是基礎。以下是 Java 中最核心的基礎概念、工具及相關名詞的…

UVa12345 Dynamic len(set(a[L:R]))

[TOC](UVa12345 Dynamic len(set(a[L:R]))) 題目鏈接 UVA - 12345 Dynamic len(set(a[L:R])) 題意 有編號從 0 到 n?1 的 n 個數&#xff0c;有兩種操作&#xff1a; Q L R 詢問編號 L 到編號 R?1 的數中有多少個不同的數字。M X Y 將編號為 X 的數字改為 Y。 你的任務就是…

[Ubuntu] VNC連接Linux云服務器 | 實現GNOME圖形化

將桌面環境修改為 GNOME 并通過 VNC 遠程訪問的步驟 & TightVNC 的安裝與配置說明&#xff1a;1. 安裝 GNOME 桌面環境 sudo apt update sudo apt install ubuntu-gnome-desktop -y2. 安裝 TightVNC 服務器 sudo apt install tightvncserver -y3. 初始化 VNC Server 并設置…

進程、網絡通信方法

一、進程間通信(IPC)方法 適用于同一臺主機上的進程間數據交換。 管道(Pipe) 匿名管道:單向通信,僅用于父子進程。 命名管道(FIFO):通過文件系統路徑訪問,支持無親緣關系進程。 消息隊列(Message Queue) 結構化消息(類型+數據),按類型讀取,支持異步通信。…

[激光原理與應用-241]:設計 - 266n皮秒深紫外激光器,哪些因素影響激光器紫外光的輸出功率?

一、短期穩定性266nm皮秒深紫外激光器紫外光輸出功率的穩定性受非線性晶體性能、光學系統設計、熱管理效果、重復頻率與脈沖能量匹配度、環境干擾控制等因素影響&#xff0c;具體分析如下&#xff1a;1. 非線性晶體性能晶體選擇與狀態&#xff1a;BBO&#xff08;偏硼酸鋇&…

Django配置sqllite之外的數據庫

當連接到其他數據庫后端時&#xff0c;如 MariaDB、MySQL、Oracle 或 PostgreSQL&#xff0c;將需要額外的連接參數。請參閱下面的 ENGINE 配置&#xff0c;了解如何指定其他數據庫類型。這個例子是針對 PostgreSQL&#xff1a; 在django項目的settings.py文件里&#xff0c;關…

銀河通用招人形機器人強化學習算法工程師了

人形強化學習算法工程師&#xff08;26屆&#xff09;&#xff08;崗位信息已通過jobleap.cn授權&#xff0c;可在csdn發布&#xff09;銀河通用機器人 北京收錄時間&#xff1a; 2025年08月11日職位描述1. 研發基于深度強化學習的足式機器人運動控制算法&#xff0c;提升機器…

使用MongoDB存儲和計算距離

一、MongoDB 計算距離的優勢 優勢說明原生地理空間索引支持 2dsphere 索引&#xff0c;高效處理地理坐標查詢&#xff08;毫秒級響應&#xff09;。內置地理計算函數提供 $near、$geoWithin、$geoNear 等操作符&#xff0c;無需手動實現復雜計算。高性能基于B樹索引優化&#…

鴻蒙開發-ArkUI中@Type作用詳細解答

在鴻蒙&#xff08;HarmonyOS&#xff09;應用開發中&#xff0c;Type 是 ArkUI 框架中用于 類型定義和類型檢查 的關鍵注解&#xff08;裝飾器&#xff09;。它的主要作用是為自定義組件的屬性提供明確的類型約束&#xff0c;確保數據傳遞的類型安全性。 核心作用解析&#xf…

MCU中的存儲器映射(Memory Map)

MCU中的存儲器映射(Memory Map) 在MCU(微控制器單元)中,存儲器映射(Memory Map)是指將不同類型的存儲器(如Flash、RAM、外設寄存器等)和功能模塊分配到統一的地址空間的過程。這種映射方式使得CPU可以通過訪問特定地址來讀寫數據或控制外設,而無需關心物理存儲介質的…

Rust面試題及詳細答案120道(11-18)-- 控制流與函數

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

數據結構-排序(2)

一、堆排序 &#xff08;借助樹&#xff09;1.利用完全二叉樹構建大頂堆 2.堆頂元素和堆底元素進行交換&#xff0c;堆底元素不再參與構建&#xff0c;剩余元素繼續構建大頂堆3.時間復雜度 O(nlogn)1.完全二叉樹&#xff1a;按照從上到下&#xff0c;從左到右的順序進行排序2.…

Qt-信號和槽

一.信號和槽概念1. 信號&#xff08;Signal&#xff09;概念&#xff1a;信號是 Qt 對象在狀態發生變化或事件發生時自動發出的通知。比如按鈕被點擊、文本框內容變化、定時器超時等&#xff0c;都會發出相應信號。本質&#xff1a;它只是一個函數聲明&#xff08;沒有函數體&a…

NLP學習開始-02邏輯回歸

邏輯回歸什么是邏輯回歸邏輯回歸的應用場景邏輯回歸幾個重要概念Sigmoid 函數損失函數構建邏輯回歸模型的步驟舉個例子參數解釋模型優化什么是邏輯回歸 邏輯回歸&#xff08;Logistic Regression&#xff09;是一種廣泛應用于分類問題的統計學習方法&#xff0c;盡管名字中帶有…

【運維進階】LAMPLNMP 最佳實踐

LAMP/LNMP 最佳實踐 LAMP/LNMP 組件 LAMP&#xff1a;LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP&#xff1a;LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux&#xff1a;操作系統&#xff0c;提供程序運行基礎。Apache/Nginx&#xff1a;Web 服務器&#xff0c;提供網…

深入解析 resolv.conf 文件:DNS 配置的核心

/etc/resolv.conf 文件是 Linux 和類 Unix 系統中 DNS 配置的核心組件。它決定了系統如何將域名解析為 IP 地址&#xff0c;這是網絡通信的關鍵環節。本文將深入探討 resolv.conf 文件的核心內容&#xff0c;重點講解 nameserver 指令以及 options 配置中的 attempts 和 rotate…