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

視頻教程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM