首頁>技術>

場景說明

本文實現的是一個比較複雜的基於Jenkins的CI/CD Pipeline流程。該流程實現如下持續整合和部署操作和場景:

1. 首先從**Git**或**Gogs**中獲取java應用程式碼。

2. 然後將其編譯成WAR應用包。

3. 使用**JUnit**進行功能測試

4. 使用**SonarQube**對其進行程式碼分析

5. 將WAR應用包推送至**Nexus**的Maven倉儲中

6. 構建**App Image**

7. 部署到**DEV**環境

8. 人工確認是否遷生至**STAGE**環境

9. 最後將App Image部署至STAGE環境

執行環境

本場景可以在OpenShift 3.11/4.x執行環境,並已經在minishift和OpenShift CRC的執行環境中驗證。不過由於執行的軟體比較多,如使用minishift/OpenShift CRC,建議啟動時指定記憶體至少為10GB。

配置操作過程 準備執行所需資源

1. 新建三個專案,分別是執行Jenkins的CICD專案,以及開發(Dev)和準上線環境(Stage)。

$ oc new-project USER-ID-dev$ oc new-project USER-ID-stage$ oc new-project USER-ID-cicd

2. 用管理員使用者執行命令,允許從USER-ID-cicd專案訪問另外兩個專案的資源。

$ oc policy add-role-to-group edit system:serviceaccounts:USER-ID-cicd -n USER-ID-dev$ oc policy add-role-to-group edit system:serviceaccounts:USER-ID-cicd -n USER-ID-stage

3. 執行命令建立應用模板(其實也可直接基於模板檔案建立應用)

$ oc create -f https://raw.githubusercontent.com/liuxiaoyu-git/OpenShift-HOL/master/Maven-Gogs-Sonar-Pipeline-Template.yaml -n openshift

4. 成功後可以進入OpenShift Console中的Developer檢視,然後在USER-ID-cicd專案中進入“+Add”的“From Catalog”。

6. 再次執行第4步,在模板中選擇CI/CD分類中點選“Gogs+Nexus+Sonar used by Jenkins”,然後點選“Instantiate Template”,然後在“Instantiate Template”頁面中將DEV和STAGE專案名設為USER-ID-dev和USER-ID-stage,最後點選Create即可。

7. 在部署完後(其狀態應該是深藍色),可以在OpenShift Console的Developer檢視中檢視USER-ID-cicd專案部署的應用和狀態。應該如下圖包括6個部署(其中4個應用2個數據庫)。

8. 執行命令獲

得Jenkins、Gogs、Nexus和SonarQube的控制檯訪問地址,並設定到環境變數中。

$ GOGS=http://$(oc get route gogs -n USER-ID-cicd -o template --template '{{.spec.host}}')$ JENKINS=https://$(oc get route jenkins -n USER-ID-cicd -o template --template '{{.spec.host}}')$ NEXUS=http://$(oc get route nexus -n USER-ID-cicd -o template --template '{{.spec.host}}')$ SONARQUBE=https://$(oc get route sonarqube -n USER-ID-cicd -o template --template '{{.spec.host}}')

訪問使用者名稱和密碼為:

- gogs: gogs/gogs

- nexus: admin/admin123

- sonarqube:admin/admin

配置Gogs並匯入應用程式碼

為了能讓Jenkins從Gogs獲取應用程式碼,我們先需要將應用程式碼匯入到Gogs。

3. 在Clone Adress欄中填https://github.com/OpenShiftDemos/openshift-tasks,然後在Repository填openshift-task,最後點選Migration Repository。成功會看到gogs/openshift-tasks的Repository和相關應用程式碼。

執行Jenkins Pipeline

1. 執行命令啟動Jenkins的Pipeline流程。

$ oc start-build tasks-pipeline

2. 可以在OpenShift Console中進入Builds->tasks-pipeline->Builds->tasks-pipeline-1檢視執行進度。當出現以下步驟時, 點選"Input Required"連結跳轉到Jenkins。

3. 在Jinkins Console中通檢視Jenkins -> USER-ID-cicd -> USER-ID-cicd/tasks-pipeline -> #1的Console Output,此時執行停在以下步驟中。然後點選Promote即可。

4. 用admin/admin登入並

訪問SonarQube的控制檯,可以檢視Bugs的情況。

5. 訪問Nexus控制檯,用admin/admin123登入,然後檢視下載的應用依賴檔案。

7. 獲取部署在USER-ID-dev和USER-ID-stage專案中的應用route,然後用瀏覽器訪問。

其他說明

在我們使用的https://raw.githubusercontent.com/liuxiaoyu-git/OpenShift-HOL/master/Maven-Gogs-Sonar-Pipeline-Template.yaml模板檔案中引用了gogs-template.yaml、sonarqube-template.yml等另外幾個模板,在這些模板中指定了用到的Image的名稱和版本。如果這些Image更新後無法訪問舊版本了,需要手工修改這些Template的YAML檔案,更新它們使用的Image版本後再次建立模板即可。

80

Java

Git

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • springboot應用接入SpringbootAdmin監控