JAVA傳統項目交付流程的問題
- 開發和運維間環境有明顯差別
- 代碼缺少統一質量度量
- 客戶要求上線時間緊,人工測試慢,致使測試不充分,時常作線上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 # 查看日誌 |
會跳轉到讓你修改密碼的網頁
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
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能夠跳過此步
下載地址:https://nodejs.org/en/download/
下載 「Linux Binaries (x64)」
下載完解壓之後配置環境變量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爲當前應用的名稱,能夠根據實際狀況定義
名稱填寫 app1 , Authorization 選擇 「Basic Auth」,並填入Artifactory的用戶名密碼,以下圖 8
在Variables標籤條件變量:base_url,值爲artifactory「Custom 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
工具鏈使用要點
- GitLab源碼管理要有良好的版本控制模型
- 使用Jenkins流水線做爲統一的構建平臺進行編譯構建,拋棄傳統的研發本地構建的模式
- 引入SonarQube代碼質量檢查工具創建代碼質量度量,提高代碼質量,減小低級BUG及技術債務
- 構建產物統一上傳到製品庫,運維從製品庫中獲取發佈包,使用ansible自動部署到預發佈環境。
- 經過開發接口測試腳本,從主到次的順序,逐步完善系統的接口自動化測試,減小人工測試消耗的時間,縮短測試周期。
- 將自動部署和自動化測試的步驟也統一集成到流水線中。造成統一交付流水線,提高交付效率
進階改造
- 使用Docker 容器化技術下降環境對軟件的影響。
- 經過Selenium開發腳本,進行UI自動化測試,提高測試效率。
- 使用Artifactory Pro 版本,利用元數據,對製品生命週期進行管理。
- Artifactory Pro版本支持多語言,能夠將自動化工具鏈擴展到其餘語言上。
- 使用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恤