利用開源軟體搭建JAVA工程CI&CD自動化工具鏈
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java開源軟體測試工具大彙總Java
- 開源專案 pyqt 軟體自動更新框架QT框架
- 利用AI智慧體實現自動化公開課AI智慧體
- 軟體自動化測試工具的那些事兒
- 基於GUI的自動化軟體測試工具GUI
- 軟體開發工程師常用的工具軟體工程師
- C/C++ 大型工程工具鏈搭建C++
- 《軟體自動化測試成功之道》學習資源
- 軟體開發中的自動化測試
- 軟體測試自動化
- 快手自動私信軟體引流工具
- 文字自動摘要工具 TextTeaser 開源
- 軟體自動化測試工具的歷史演進
- 談軟體自動化測試工具的評測方法
- 搭建本地軟體源
- 量化機器人開發,自動掛單交易軟體搭建機器人
- 再談“開源軟體供應鏈安全”
- 自動化清理軟體:Hazel for MacMac
- 軟體測試自動化框架框架
- 自動化測試開源策略
- java+appium 自動化環境搭建JavaAPP
- 週末利用Puppeteer做了個社交媒體的自動化和釋出工具
- 各位有開源介面自動化專案原始碼嗎(java)原始碼Java
- 6 個開源的家庭自動化工具
- 軟體測試:自動化測試
- 通用自動化測試軟體 — TAE
- 開源編譯工具和編譯軟體編譯
- 直播軟體開發,自動滾動banner
- UI自動化測試與軟體測試開發工程師所面臨的挑戰UI工程師
- 開源軟體的教育是一個系統工程
- 開源科學工程技術軟體系列文章
- 流程自動化軟體:賦能現代企業的強大工具
- 利用開源視覺化報表工具進入流程化辦公!視覺化
- 利用Google開源Java容器化工具Jib構建映象GoJava
- 開源軟體伸向移動裝置
- 軟體測試工具之開源測試工具彙總
- Cuckoo惡意軟體自動化分析平臺搭建
- 利用tox打造自動自動化測試框架框架