Hygieia-你值得擁有!!!(上篇)

  • 2019 年 10 月 4 日
  • 筆記

背景介紹

Hygieia,由Capitalone公司開源的DevOps系統,可構建軟體需求、開發、測試、部署全流程的端到端Dashboard看板平台,採集各種常見系統的數據並圖形化集中動態展示,涉及的系統包括不限於jira、gitlab、github、svn、jenkins、sonarqube等。使用Hygieia後,在整個軟體開發周期中,用戶可以選擇VersionOne或Jira進行用戶故事的追蹤,選擇Subversion或GitHub作為程式碼倉庫,選擇Jenkins或Hudson進行構建,選擇Selenium和SonarQube用於品質檢測,以及選擇uDeploy或Jenkins進行部署等等,當然Hygieia不止這點,它的api基於rest風格插件設計,其他的一些軟體工程組件可以很輕鬆的接入到Hygieia,他的dashboard大盤可以展示軟體創建到交付的整個生命周期數據。

Hygieia架構圖?

Hygieia開發用到技術棧?

Hygieia主要java開發的,使用了spring boot框架,前端使用angular.js開發,閱讀實踐本文,你需要了解如下相關技術棧:

  • 前端相關:node、npm、bower、gulp
  • 後端相關:java、spring boot、maven
  • 資料庫:mongoDB

效果如下圖

這麼高大上的系統,你也一定希望能夠擁有吧? 下面給大家分享一下部署和配置的過程。

源碼及文件下載地址

官方幫助文檔:http://hygieia.github.io/Hygieia/getting_started.html 備註:部分說明有些不準確,文檔僅供參考

Hygieia 主工程

  • Github地址:https://github.com/Hygieia/Hygieia.git
  • Release版本下載地址:https://github.com/Hygieia/Hygieia/archive/v3.1.0.tar.gz
  • 說明:Going forward Hygieia project will only have the UI component. All components api, api-audit and collectors now have their own repositories. This version v3.1.0 is the baseline UI only Hygieia project going forward.

Dashboard UI Layer

  • Github地址:https://github.com/Hygieia/UI.git
  • Release版本下載地址:無
  • 說明文檔:https://github.com/Hygieia/UI/blob/master/README.md
  • 備註:主工程中已包含UI模組,故如果已下載了主工程,則無需獨立下載。

REST API Layer

  • Github地址:https://github.com/Hygieia/api.git
  • Release版本下載地址:https://github.com/Hygieia/api/archive/v3.1.1.tar.gz
  • 配置文檔:https://github.com/Hygieia/Hygieia/blob/gh-pages/pages/hygieia/api/api.md

Hygieia-core

  • Github地址:https://github.com/Hygieia/hygieia-core.git
  • Release版本下載地址:https://github.com/Hygieia/hygieia-core/archive/v3.1.5.tar.gz

在接下來的文章中主要講述以下各分系統的搭建步驟:

Hygieia部署與配置

  • Hygieia 主工程部署、配置及運行
  • Hygieia UI 部署、配置及運行
  • Hygieia API 部署、配置及運行
  • Hygieia Core 部署、配置及運行

環境要求

  • Java – Version 1.8 is recommended
  • Maven – Version 3.3.9 and above are recommended
  • Git – Install Git

第一步:Hygieia 主工程部署

1. 獲取主工程程式碼

獲取程式碼的方式有兩種,克隆或者下載:

  • 克隆,獲取最新的程式碼,執行 「git clone https://github.com/Hygieia/Hygieia.git」 ,存在的風險是無法工程可能編譯不成功;
  • 下載,獲取最新的Release版本, https://github.com/Hygieia/Hygieia/archive/v3.1.0.tar.gz ,推薦使用。

2. Hygieia 配置

  • 進入hygieia根目錄
  • 運行以下命令 mvn clean install package

第二步:Hygieia UI 部署

1. 獲取UI工程程式碼

  • 方法1:下載主工程,在/Hygieia/UI目錄下既是UI工程程式碼
    • 獲取最新程式碼部署,執行 「 git clone https://github.com/Hygieia/Hygieia.git 」 ,缺點是存在編譯失敗的風險;
    • 使用最新Release版本部署,下載地址:https://github.com/Hygieia/Hygieia/archive/v3.1.0.tar.gz ,推薦使用。
  • 方法2:下載UI獨立工程程式碼
    • 獲取最新程式碼部署,執行 「 git clone https://github.com/Hygieia/UI.git 」 ,缺點是存在編譯失敗的風險;

2. 配置UI構建及環境

  • 進入UI工程根目錄
  • 執行以下命令,安裝bower、gulp npm install -g bower npm install -g gulp
  • 安裝成功後,執行構建 gulp serve

構建完成後,會在/Hygieia/UI/dist目錄下生成前端頁面的文件。

3. Hygieia UI 配置

工程配置文件:/Hygieia/UI/gulpfile.js

  • 如果需要修改UI連接Hygieia-api的埠,請參考以下步驟:
    • 編輯vi Hygieia/UI/gulpfile.js;
    • var proxyTarget = config.api || 'http://localhost:8080';
    • 修改為真實api地址及埠號,如下圖。

4. Hygieia UI 運行

運行方式有兩種:

  1. 構建運行 執行命令:gulp serve 訪問:http://10.152.102.183:3000 或 http://localhost:3000 備註:默認埠為3000,缺點是執行命令的窗口需要一直開著,如果關閉,則前端頁面無法訪問。
  2. 搭配Nginx運行 實例配置文件下載如下; 備註:通過Nginx配置,web頁面可以隨時訪問。
server  {  	listen *:3000;  	server_name hygieia.qa.sogou;    	access_log /search/odin/nginx/log/hygieia.qa.sogou_log main;    	root html;    	error_page   500 502 503 504  /50x.html;            location / {               root   /search/odin/Hygieia/Hygieia/UI/dist;               index  index.html index.htm;            }      	location = /50x.html  	{  		root   html;  	}            location ~ .php$ {               root           /search/odin/html;               fastcgi_pass   127.0.0.1:9000;               fastcgi_index  index.php;               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;               include        fastcgi_params;           }      	location ^~/api/{  	    proxy_set_header Host $host;  	    proxy_set_header X-Real-IP $remote_addr;  	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  	    proxy_pass http://localhost:8080;  	}  } 

5.UI 展示如下:

登錄頁面如下:

第三步:Hygieia API 主工程部署

1. 獲取主工程程式碼

獲取程式碼的方式有兩種,克隆或者下載:

  • 克隆,獲取最新的程式碼,執行 「git clone https://github.com/Hygieia/api.git」 ,存在的風險是無法工程可能編譯不成功;
  • 下載,獲取最新的Release版本, https://github.com/Hygieia/api/archive/v3.1.1.tar.gz ,推薦使用。

本系統使用的資料庫為Mongon,具體的搭建方法網上有很多,就不在這裡敘述了。

2. Hygieia API 配置

  • 進入api根目錄
  • 修改配置: vim /src/main/resources/application.properties
  • 修改配置文件 # 需要在mongon中創建 dbname=xxxxx # 連接資料庫的用戶名 dbusername=xxxxx # 連接資料庫的密碼 dbpassword=xxxxx # 資料庫的IP dbhost=xxxxxx # 資料庫的埠 dbport=27017 dbreplicaset=false dbhostport=xxxxxx:27017 server.contextPath=/api # API服務埠 server.port=8080
  • 編譯打包: mvn clean install package

3. Hygieia API 運行

啟動服務:

  • 前台運行: java -jar target/api.jar –spring.config.location=src/main/resources/api.properties -Djasypt.encryptor.password=hygieiasecret
  • 靜默運行: nohup java -jar target/api.jar –spring.config.location=src/main/resources/api.properties -Djasypt.encryptor.password=hygieiasecret &

驗證啟動狀態:

訪問:http://10.152.102.183:8080/api/ping,返回true證明運行成功

第四步:Hygieia Core 工程部署

1. 獲取工程程式碼

獲取程式碼的方式有兩種,克隆或者下載:

  • 克隆,獲取最新的程式碼,執行 「git clone https://github.com/Hygieia/hygieia-core.git」 ,存在的風險是無法工程可能編譯不成功;
  • 下載,獲取最新的Release版本, https://github.com/Hygieia/hygieia-core/archive/v3.1.5.tar.gz ,推薦使用。

2. Hygieia Core 編譯打包

  • 進入core根目錄
  • 執行命令 mvn clean install package

至此,這個系統就搭建完成了,在後續的文章中,我們在繼續講解各個collector的部署、配置及運行

  • hygieia-scm-gitlab-collector 部署、配置及運行
  • hygieia-build-jenkins-collector 部署、配置及運行
  • hygieia-codequality-sonar-collector 部署、配置及運行
  • ……