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

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

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

 

打造工具鏈

  • 源碼管理Gitlab
  • 持續集成Jenkins
  • 代碼掃描SonarQube
  • 接口測試PostMan+NewMan
  • 製品管理ArtifactoryOSS版本(僅支持Maven
  • 自動部署Ansible   

GitLab安裝

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

[gitlab-ce]mysql

name=gitlab-cegit

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6sql

Repo_gpgcheck=0docker

Enabled=1數據庫

Gpgkey=https://packages.gitlab.com/gpg.keynpm

sudo yum makecachejson

sudo yum intall gitlab-cevim

sudo gitlab-ctl start    # 啓動全部 gitlab 組件;windows

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

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

https://img-blog.csdn.net/20180416222403465

https://img-blog.csdn.net/20180416222416118

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  

https://images2018.cnblogs.com/blog/463776/201804/463776-20180404082707338-423425522.png

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

 

https://box.kancloud.cn/bb3476fd07c4238b9960a88674aea5a5_1340x526.png

 

PostMan & NewMan安裝

安裝NodeJS

注意: 若是已經安裝NodeJS能夠跳過此步

下載地址:https://nodejs.org/en/download/

下載 Linux Binaries (x64)

下載完解壓之後配置環境變量NODE_HOME PATH

安裝Newman

Jenkinsslave節點安裝Newman

npm install -g newman

安裝Postman

下載地址:https://www.postman.com/downloads/

安裝在windows或者帶UILinux機器

安裝文檔:https://learning.postman.com/docs/postman/launching-postman/installation-and-updates/

導出Postman測試集合

建立集合app1

app1爲當前應用的名稱,能夠根據實際狀況定義  

名稱填寫 app1 Authorization 選擇 Basic Auth,並填入Artifactory的用戶名密碼,以下圖  8

Variables標籤條件變量:base_url,值爲artifactoryCustom Base URL」,例如: http://localhost:8081/artifactory

點擊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 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  

初始帳號和密碼爲: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. 將自動部署和自動化測試的步驟也統一集成到流水線中。造成統一交付流水線,提高交付效率

進階改造

  1. 使用Docker 容器化技術下降環境對軟件的影響。
  2. 經過Selenium開發腳本,進行UI自動化測試,提高測試效率。
  3. 使用Artifactory Pro 版本,利用元數據,對製品生命週期進行管理。
  4. Artifactory Pro版本支持多語言,能夠將自動化工具鏈擴展到其餘語言上。
  5. 使用JFrog Xray對提高軟件安全係數。

 

 

更多精彩內容請微信搜索公衆號: jfrogchina

更多技術分享能夠關注225日在線課堂:《深刻解析Deployment

 

課程介紹

Kubernetes以其先進的理念、活躍的社區,已成爲當前容器集羣化編排、部署和運行的事實標準。愈來愈多的企業和團隊將Kubernetes引入了本身的研發和生產環境。

DeploymentKubernetes上最經常使用的對象,用與建立和管理無狀態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

相關文章
相關標籤/搜索