Rancher之Pipeline JAVA demo
Rancher Pipeline
Pipeline,簡單來說,就是一套運行於Rancher上的工作流框架,將原本獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜發布流程。
Rancher Pipeline 主要在Rancher環境中用於運行持續集成、持續交付和持續部署任務,講到pipeline就是敏捷開發的延伸的產物,我們不得不說持續集成、持續交付和持續部署。
持續集成:頻繁地(一天多次)將代碼集成到主幹。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。
好處主要有兩個:
- 快速發現錯誤。每完成一點更新,就集成到主幹,可以快速發現錯誤,定位錯誤也比較容易。
- 防止分支大幅偏離主幹。如果不是經常集成,主幹又在不斷更新,會導致以後集成的難度變大,甚至難以集成。
持續集成的目的:讓產品可以快速叠代,同時還能保持高質量。它的核心措施是代碼集成到主幹之前,必須通過自動化測試。只要有一個測試用例失敗就不能集成。
持續交付:將集成後的代碼部署到更貼近真實運行環境的準生產環境中。比如,我們完成單元測試後,可以把代碼部署到連接數據庫的 Staging 環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境中。
持續部署:在持續交付的基礎上,部署的前提是能自動化完成測試、構建、部署等步驟。
Rancher Pipeline是由RancherUI服務,Pipeline服務和Jenkins三部分組成,如圖:
閑言少敘,不懂的直接可以看官網,官網地址。直接整demo了。
Rancher Pipeline DEMO
1、Ranche Pipeline 是Rancher V1.6.13更新發布的新功能。所以如果不是V1.6.13首先要進行 Rancher的升級,升級方法
2、升級到V1.6.13後,我們就可以在 應用商店 中搜索 "Pipeline",點擊部署就OK了。部署完成後會在UI多出一個流水線的頁面。(這裏環境是之前部署好了)
3、Rancher Pipeline中,Rancher用戶可以同時使用GitHub與GitLab進行基於OAuth的身份驗證,無需插件,即可在單一環境中同時拉取、使用和管理托管在GitHub和GitLab的代碼。
案例是gitlab中的OAuth驗證:
1、因為的gitlab是私有化,所以點擊私有化部署。
2、填寫 gitlab地址
3、點擊gitlab驗證
這裏的NAME隨意填。Redirect URI填寫第一個圖片提供的地址。
將Application id和Secret記錄回填到第一個頁面
這樣一個pipeline 準備完畢。接下來講一下java demo
首先我們先介紹Pipeline的幾個基本概念:
-
Source Code:集成gitlab源代碼倉庫。
- Stage: 階段,一個Pipeline可以劃分為若幹個Stage,每個Stage代表一組操作。註意,Stage是一個邏輯分組的概念。
- Step: 步驟,Step是最基本的操作單元,小到創建一個目錄,大到構建一個Docker鏡像。
配置Source Code,配置一個想要發布的項目。
添加一個stage,第一個配置應該是打包編譯,命名為build。可以在串行或並行這兩種任務運行方式中自由選擇,也良好集成的審批系統可以很大程度地提高CI/CD pipeline的安全可控性。
添加一個構建的task,因為是java的gradle項目,所以需要一個gradle依賴。
看一下gradle的Dockerfile,通過Dockerfile構建成鏡像,上傳到自己的鏡像庫。
1 FROM openjdk:8-jdk 2 3 CMD ["gradle"] 4 5 ENV GRADLE_HOME /opt/gradle 6 ENV GRADLE_VERSION 2.14.1 7 8 ARG GRADLE_DOWNLOAD_SHA256=cfc61eda71f2d12a572822644ce13d2919407595c2aec3e3566d2aab6f97ef39 9 RUN set -o errexit -o nounset 10 && echo "Downloading Gradle" 11 && wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" 12 13 && echo "Checking download hash" 14 && echo "${GRADLE_DOWNLOAD_SHA256} *gradle.zip" | sha256sum --check - 15 16 && echo "Installing Gradle" 17 && unzip gradle.zip 18 && rm gradle.zip 19 && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" 20 && ln --symbolic "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle 21 22 && echo "Adding gradle user and group" 23 && mkdir -p /home/gradle/.gradle 24 && chown --recursive root:root /home/gradle 25 26 && echo "Symlinking root Gradle cache to gradle Gradle cache" 27 && ln -s /home/gradle/.gradle /root/.gradle 28 29 # Create Gradle volume 30 USER root 31 VOLUME "/home/gradle/.gradle" 32 WORKDIR /home/gradle 33 34 RUN set -o errexit -o nounset 35 && echo "Testing Gradle installation" 36 && gradle --version
通過gradle的鏡像下的gradle環境構建。
接下來我打包上傳到制品庫
更新stack
這就是一個簡單的pipeline流程。
拉取源碼-->>構建--->>打包--->>發布。
我們可以根據實際情況定義適合當時情景的Pipeline。
推薦Rancher Pipeline的文章
初探Rancher Pipeline
視頻教程
Rancher之Pipeline JAVA demo