Jenkins之自動部署、代碼安全掃描、自動化接口測試


 

 

 

 

搭建Jenkins

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins

systemctl enable jenkins.service #設置jenkins服務為自啟動服務
systemctl start jenkins.service #啟動jenkins服務


vi /etc/sysconfig/jenkins
service jenkins start/stop/restart 

 

或者也可以下載jenkins.war,然后啟動  -jar 啟動。

啟動好之后,可以通過 ip:8080 進行訪問 http://192.168.11.222:8080, 端口默認是8080。 第一次訪問需要進行一些插件的安裝,會比較慢。安裝好之后就可以使用了:

 

 

推薦使用 service jenkins start/stop/restart  方式進行啟停。

 

全局工具配置

我們的項目是基於Maven的,所以需要安裝Maven,

yum install -y maven

安裝好之后,需要修改一下settings文件配置,主要是兩個地方:

“默認 settings 提供” 、 “默認全局 settings 提供”, 全部使用 文件路徑 /var/lib/jenkins/settings.xml:

 

 

settings.xml文件如下(主要是需要配置私服地址,加快下載速度,其中的地址, 可以按照需要進行修改):

settings.xml

 

JDK和Git 按情況進行配置:

yum install -y java

 

 

 

yum install -y git

 

 

系統配置

Jenkins Location配置:

Jenkins URL 是當前Jenkins的地址,是第一次登錄的時候設置的, 也可以此處進行修改。系統管理員郵件地址也是,可寫管理員郵件地址:

 

Extended E-mail Notification 擴展郵件通知配置:

SMTP server 填 smtp.qq.com,Default user E-mail suffix填 @qq.com,Default Content Type選HTML,Default Recipients填默認收件人,如 gaolong@lkk.cn,luokai2@lkk.cn。

Default Subject 填 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 

Default Content填:

$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:

Check console output at $BUILD_URL to view the results.

 

 

 

 

 

插件安裝

Jenkins會默認安裝一些插件,但是可能還不夠,我們需要另外安裝一些; 我們需要 確保下面的插件都已經安裝,后面需要用到:

Ant Plugin、Build Authorization Token Root Plugin、 Email Extension Plugin、 Generic Webhook Trigger Plugin、 GitHub Branch Source GitHub plugin 、Gitlab Authentication plugin 、Gitlab Hook Plugin、 HTML Publisher 、

Publish Over SSH 、SonarQube Scanner for Jenkins

Publish over SSH

Publish over SSH是一款進行遠程部署的插件,可以簡化一些配置,有了他,就不要再去寫sh腳本了。

 

安裝Publish over SSH插件好后,配置一下:

 

我們可以添加多個SSH Servers,每一個SSH Server 可以使用默認值,或進行單獨的配置:

Name、Hostname填ip地址,Username填root,Remote Directory填需要發布的遠程目錄,點擊高級,進行一些高級配置。我們用的比較多的是 修改認證方式,首先勾選“Use password authentication, or use a different key”, 然后有兩個選擇,一是密碼,而是使用SSH Key。

 

采用密碼認證的話,Passphrase / Password 填root的密碼;

 

采用SSH key認證的話,Passphrase / Password 不填,Key填 Jenkins安裝機器上執行 ssh-keygen生成的公鑰,cat /root/.ssh/id_rsa.pub, 然后將/root/.ssh/id_rsa.pub 的內容復制過來粘貼即可:

 

 

 

全局安全配置

主要2個地方需要設置:

  • 訪問控制-授權策略:勾
  • 反勾選:

     

     

集成Sonar

安裝Sonar

安裝參考 https://blog.csdn.net/huiyanshizhen21/article/details/87069356

配置Sonar

Sonar目前還不需要做什么配置,但目前我們需要記錄一個token。

web訪問地址是http://192.168.11.200:19000/projects:(默認端口是9000, 因為有沖突,我這里改成了19000),首次登錄會生成一個token,需要提供一個name,我們填erdp:

 

這個token 很有用,需要記下來。

 

Jenkins中集成Sonar:

先安裝 SonarQube servers插件,主要是SonarQube Scanner for Jenkins插件

 

 

然后,在系統配置中找到SonarQube servers,然后點擊Add 

 

然后填寫相關信息:

Name隨便寫,Server URL 填Sonar的web地址:

 

Server authentication token需要添加一下:

 

注意類型選 Secret text,Secret、ID 都填Sonar首次登錄提供的token

 

然后就好了!

憑據管理

進入:  Jenkins → 憑據 → 系統  → 全局憑據 (unrestricted),然后“添加憑據”

 

name 填 jenkins,

類型選 SSH Username with private key

Private Key 填 從在Jenkins機器 通過ssh-kengen 生成的 /root/.ssh/id_rsa.pub 的內容。

需要注意的是,這個憑據是用來拉取git代碼的,所以需要 gitlab 的一些配置:

 Integrations-Webhook

對於每個微服務,我們需要 Integrations-Webhook配置,從而每當代碼有push的時候,能夠自動觸發構建:

 

關鍵有3個地方需要設置:

URL填 http://120.78.204.40:1200/job/cad/build?token=c1f3458469a2895740fac134, 其中的ip 120.78.204.40:1200 是Jenkins的地址,這里需要一個外網地址,因為我們的gitlab 也位於阿里雲之上。

通過在Jenkins機器上執行 下面的sh命令生成:

openssl rand -hex 12

Trigger 選 Push events 

 

 

 

然后可以進行測試,點擊“Test”→ "Push events":

 

出現了Successfully,即表示成功。 然后點擊“Save changes” 以完成設置。

 

創建任務

 

輸入名稱,然后選擇“自由風格”

 

然后進行配置。配置主要是進行 源碼管理,構建觸發器,構建,構建后操作

源碼管理

源碼管理選擇Git,Repository URL 填微服務工程的git地址:git@gitlab.lkk.cn:erdp/erdp_doc.git,Credentials選之前配置的憑據(或者也可以點擊“添加”進行新增),Branches to build 填develop。源碼庫瀏覽器選gitiles,URL填git地址。

 

 

構建觸發器

構建觸發器勾選

身份驗證令牌填 上面設置Integrations-Webhook→ Secret Token的時候生成的那個(通過openssl rand -hex 12),一定要和Secret Token相同:

 

 

構建

構建選擇“添加構建步驟”→ 調研頂層Maven目標:

 

目標 填 clean -DskipTests=true package

然后 再選擇“添加構建步驟”→ Execute SonarQube Scanner:

 

 

 

Analysis properties填 

sonar.projectKey=erdp_doc
sonar.projectName=erdp_doc
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

 

 

 

構建后操作

構建設置后就是設置 構建后操作,

 

Name 選擇之前創建的SSH Server,表示需要部署的機器

Source files 填 **/erdp_*.war,表示將 *.war的文件部署

Remove prefix 填 ${JOB_NAME}_app/target ,表示不會創建的目錄

Exec command 填

cd /app/java
./kill.sh $JOB_NAME 
sleep 1
./run.sh $JOB_NAME

表示部署后需要執行的腳本:

./kill.sh $JOB_NAME  表示殺死微服務

./run.sh $JOB_NAME 表示啟動微服務

 

 

點擊“應用”或“保持”,完成一個任務的創建!至此,我們完成了代碼自動部署、代碼安全掃描。自動化接口測試 ERDP2.0.0_Interface_Test 。

之后其他的微服務都通過類似的方法創建。 需要注意的是,我們創建的任務,任務名一定是gitlab的微服務名。因為我們用到了微服務名這個變量$JOB_NAME。

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM