1. 程式人生 > >Rancher之Pipeline JAVA demo

Rancher之Pipeline JAVA demo

無需 導致 ati 有一個 選擇 發現 同時 多個 流程

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