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 jenkinsjava

systemctl enable jenkins.service #設置jenkins服務爲自啓動服務
systemctl start jenkins.service #啓動jenkins服務git


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

 

或者也能夠下載jenkins.war,而後啓動  -jar 啓動。api

啓動好以後,能夠經過 ip:8080 進行訪問 http://192.168.11.222:8080, 端口默認是8080。 第一次訪問須要進行一些插件的安裝,會比較慢。安裝好以後就能夠使用了:瀏覽器

 

 

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

 

全局工具配置

咱們的項目是基於Maven的,因此須要安裝Maven,app

yum install -y mavenssh

安裝好以後,須要修改一下settings文件配置,主要是兩個地方:maven

「默認 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

安裝參考 http://www.javashuo.com/article/p-cmqnwdfp-hw.html

配置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。

 

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索