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

JAVA傳統項目交付流程的問題

  1. 開發和運維間環境有明顯差別
  2. 代碼缺少統一質量度量
  3. 客戶要求上線時間緊,人工測試慢,致使測試不充分,時常作線上BUG修復

打造工具鏈

● 源碼管理Gitlab
● 持續集成Jenkins
● 代碼掃描SonarQube
● 接口測試PostMan+NewMan
● 製品管理ArtifactoryOSS版本(僅支持Maven)
● 自動部署Ansible
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈node

GitLab安裝

vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.key
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        # 查看日誌

訪問http://localhost
會跳轉到讓你修改密碼的網頁 2-3
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈mysql

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 start jenkins

訪問:localhost:8080
初始密碼在:/var/lib/jenkins/secrets/initialAdminPassword
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈git

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

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

PostMan & NewMan安裝

安裝NodeJS
注意: 若是已經安裝NodeJS能夠跳過此步
下載地址:https://nodejs.org/en/download/
下載 「Linux Binaries (x64)」
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈sql

下載完解壓之後配置環境變量NODE_HOME 和PATH
安裝Newman
在Jenkins的slave節點安裝Newman:
npm install -g newman
安裝Postman
下載地址:https://www.postman.com/downloads/
安裝在windows或者帶UI的Linux機器
安裝文檔:https://learning.postman.com/docs/postman/launching-postman/installation-and-updates/
導出Postman測試集合
建立集合app1
app1爲當前應用的名稱,能夠根據實際狀況定義
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈docker

名稱填寫 app1 , Authorization 選擇 「Basic Auth」,並填入Artifactory的用戶名密碼,以下圖
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈數據庫

在Variables標籤條件變量:base_url,值爲artifactory「Custom Base URL」,例如: http://localhost:8081/artifactory
點擊create按鈕完成並保存
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈npm

建立request

在集合app1右鍵點擊,彈出的request選擇」Add request」
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈json

Request name 填寫 「ping」,而後點擊」Save to app1」按鈕
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈vim

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 保存內容
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈windows

導出集合

在集合app1右鍵點擊,選擇「Export」
利用開源軟件搭建JAVA工程CI&CD自動化工具鏈

導出的名字爲:「app1.postman_collection.json」
安裝Artifactory OSS版本
使用Yum方法安裝
wget https://bintray.com/jfrog/artifactory-rpms/rpm -O bintray-jfrog-artifactory-rpms.repo
sudo mv bintray-jfrog-artifactory-rpms.repo /etc/yum.repos.d/
sudo yum install jfrog-artifactory-oss

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

初始帳號和密碼爲:admin/password,登陸成功後能夠看到如下界面
其餘安裝方法可參考以下連接:
https://www.jfrog.com/confluence/display/RTF6X/Installing+on+Linux+Solaris+or+Mac+OS

安裝Ansible

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install ansible
工具鏈使用要點

  1. GitLab源碼管理要有良好的版本控制模型
  2. 使用Jenkins流水線做爲統一的構建平臺進行編譯構建,拋棄傳統的研發本地構建的模式
  3. 引入SonarQube代碼質量檢查工具創建代碼質量度量,提高代碼質量,減小低級BUG及技術債務
  4. 構建產物統一上傳到製品庫,運維從製品庫中獲取發佈包,使用ansible自動部署到預發佈環境。
  5. 經過開發接口測試腳本,從主到次的順序,逐步完善系統的接口自動化測試,減小人工測試消耗的時間,縮短測試周期。
  6. 將自動部署和自動化測試的步驟也統一集成到流水線中。造成統一交付流水線,提高交付效率

    進階改造

  7. 使用Docker 容器化技術下降環境對軟件的影響。
  8. 經過Selenium開發腳本,進行UI自動化測試,提高測試效率。
  9. 使用Artifactory Pro 版本,利用元數據,對製品生命週期進行管理。
  10. Artifactory Pro版本支持多語言,能夠將自動化工具鏈擴展到其餘語言上。
  11. 使用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恤

報名連接:https://www.bagevent.com/event/6377140

相關文章
相關標籤/搜索