利用開源軟體搭建JAVA工程CI&CD自動化工具鏈

JFrog傑蛙科技發表於2020-02-24

JAVA 傳統專案交付流程的問題

1.        開發和運維間環境有明顯差異

2.        程式碼缺乏統一質量度量

3.        客戶要求上線時間緊,人工測試慢,導致測試不充分,時常做線上BUG 修復

 

打造工具鏈

        原始碼管理 Gitlab

        持續整合Jenkins

        程式碼掃描SonarQube

        介面測試PostMan+NewMan

        製品管理ArtifactoryOSS 版本(僅支援Maven

        自動部署Ansible   

 

GitLab 安裝

vim /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]

name=gitlab-ce

baseurl=

Repo_gpgcheck=0

Enabled=1

Gpgkey=

sudo yum makecache

sudo yum intall gitlab-ce

sudo gitlab-ctl start    # 啟動所有 gitlab 元件;

sudo gitlab-ctl stop        # 停止所有 gitlab 元件;

sudo gitlab-ctl restart          # 重啟所有 gitlab 元件;

sudo gitlab-ctl status        #   檢視服務狀態;

sudo gitlab-ctl reconfigure          # 啟動服務;

sudo vim /etc/gitlab/gitlab.rb          # 修改預設的配置檔案;

gitlab-rake gitlab:check SANITIZE=true --trace    # 檢查 gitlab

sudo gitlab-ctl tail        # 檢視日誌

訪問

會跳轉到讓你修改密碼的網頁 

Jenkins 安裝

wget -O /etc/yum.repos.d/jenkins.repo  

rpm --import  

yum install -y   jenkins

systemctl start   jenkins

 

訪問:localhost:8080

初始密碼在:/var/lib/jenkins/secrets/initialAdminPassword  

SonarQube 安裝

# 使用 Docker 安裝

# 下載啟動 Mysql 使用 Docker

docker run --name mysql5.7 -v /data/mysql5.7-data:/var/lib/mysql -p   3306:3306 -e MYSQL_ROOT_PASSWORD=123456    -d mysql:5.7

# 進入容器

docker exec -it mysql5.7 bash

# 進入資料庫

mysql -uroot -p123456

# 建立資料庫及授權

create database db_sonar character set utf8 collate utf8_general_ci;

flush privileges;

grant all privileges on db_sonar.* to 'sonar'@'%'identified by 'sonar'   with grant option;

flush privileges;

# 檢視容器 IP 地址

cat /etc/hosts

127.0.0.1         localhost

::1     localhost   ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes  

ff02::2 ip6-allrouters

172.17.0.2        ec7039cd8020

# 下載並啟動 SonarQube

docker run -d --name sonar -p 9000:9000 -p 9092:9092  -v /data/sonar/conf:/opt/sonarqube/conf  -v /data/sonar/data:/opt/sonarqube/data -v   /data/sonar/logs:/opt/sonarqube/logs -v   /data/sonar/extensions:/opt/sonarqube/extensions -e   "SONARQUBE_JDBC_USERNAME=sonar"    -e "SONARQUBE_JDBC_PASSWORD=sonar" -e "SONARQUBE_JDBC_URL=jdbc:mysql://172.17.0.2:3306/db_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false"   sonarqube:6.7.5

 

 

PostMan & NewMan 安裝

安裝NodeJS

注意: 如果已經安裝NodeJS 可以跳過此步

下載地址:

下載 Linux Binaries (x64)


下載完解壓以後配置環境變數NODE_HOME PATH

安裝Newman

Jenkins slave 節點安裝Newman

npm install -g newman

安裝Postman

下載地址:

安裝在 windows 或者帶 UI Linux 機器

安裝文件:

匯出Postman 測試集合

建立集合app1

app1 為當前應用的名稱,可以根據實際情況定義  

名稱填寫 app1 Authorization 選擇 Basic Auth , 並填入Artifactory 的使用者名稱密碼,如下圖  

Variables 標籤條件變數: base_url ,值為 artifactory Custom Base URL ”,例如:

點選 create 按鈕完成並儲存  

 

建立request

在集合app1 右鍵點選,彈出的request 選擇”Add request” 

Request name 填寫 ping ”,然後點選”Save to app1” 按鈕 

Api url   {{base_url}}/api/system/ping

Tests 標籤填入一下內容:

pm.test("Status code is 200", function () {

    pm.response.to.have.status(200);

});

pm.test("Body is correct", function () {

    pm.response.to.have.body("OK1");

});

這是兩個測試用例,分別測試返回值是否為200 ,返回內容是否為“OK1 ”,最後同時按 Ctrl+s 儲存內容 

 

匯出集合

在集合app1 右鍵點選,選擇“Export  

匯出的名字為:“app1.postman_collection.json

安裝Artifactory OSS 版本

使用Yum 方法安裝

wget -O bintray-jfrog-artifactory-rpms.repo

sudo mv bintray-jfrog-artifactory-rpms.repo /etc/yum.repos.d/

sudo yum install jfrog-artifactory-oss  

初始賬號和密碼為:admin/password ,登入成功後可以看到以下介面

其他安裝方法可參考如下連結:

安裝Ansible

yum install

yum install ansible

工具鏈使用要點

1.        GitLab 原始碼管理要有良好的版本控制模型

2.        使用Jenkins 流水線作為統一的構建平臺進行編譯構建,拋棄傳統的研發本地構建的模式

3.        引入SonarQube 程式碼質量檢查工具建立程式碼質量度量,提升程式碼質量,減少低階BUG 及技術債務

4.        構建產物統一上傳到製品庫,運維從製品庫中獲取釋出包,使用ansible 自動部署到預釋出環境。

5.        透過開發介面測試指令碼,從主到次的順序,逐步完善系統的介面自動化測試,減少人工測試消耗的時間,縮短測試周期。

6.        將自動部署和自動化測試的步驟也統一整合到流水線中。形成統一交付流水線,提升交付效率

進階改造

1.        使用Docker 容器化技術降低環境對軟體的影響。

2.        透過Selenium 開發指令碼,進行UI 自動化測試,提升測試效率。

3.        使用Artifactory Pro 版本,利用後設資料,對製品生命週期進行管理。

4.        Artifactory Pro 版本支援多語言,可以將自動化工具鏈擴充套件到其他語言上。

5.        使用JFrog Xray 對提升軟體安全係數。

 

 

更多精彩內容請微信搜尋公眾號: jfrogchina

更多技術分享可以關注2 25 日線上課堂:《深入解析Deployment

 

課程介紹

Kubernetes 以其先進的理念、活躍的社群,已成為當前容器叢集化編排、部署和執行的事實標準。越來越多的企業和團隊將Kubernetes 引入了自己的研發和生產環境。

Deployment Kubernetes 上最常用的物件,用與建立和管理無狀態Pod 物件的叢集,並實現叢集自動化的擴容、縮容和升級等運維工作。要想應用好Deployment 物件,首先要充分了解和熟悉Deployment 的原理、機制和應用方式。

本期將深入、細緻地分析Deployment 的設計原則和執行機制,並透過實操演示的方式,來講解Deployment 如何實現對於Pod 叢集的自動化管理工作。

 

 

課堂收益

透過本期的講解和演示,能夠幫助大家深入理解Deployment 的內部機制,熟悉Deployment 的應用方式,掌握Deployment 實現Pod 叢集自動化擴容、縮容和升級等運維的工作機制,使得大家能夠在實際工作中更好的應用和管理Deployment 物件。

 

本期話題

1 Deployment 的定義和組成

2 Deployment 實現自動化運維的工作原理

3 實操演示Deployment 的應用方式

 

課堂活動

本期課堂講師會在結束前進行抽獎活動

第一名:小愛音響

第二名:JFrog 新版T


報名連結:



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2677019/,如需轉載,請註明出處,否則將追究法律責任。

相關文章