Rancher之Pipeline JAVA demo

Rancher Pipeline

Pipeline,簡單來講,就是一套運行於Rancher上的工做流框架,將本來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜發佈流程。java

Rancher Pipeline 主要在Rancher環境中用於運行持續集成、持續交付和持續部署任務,講到pipeline就是敏捷開發的延伸的產物,咱們不得不說持續集成、持續交付和持續部署。git

持續集成:頻繁地(一天屢次)將代碼集成到主幹。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。github

好處主要有兩個:數據庫

  • 快速發現錯誤。每完成一點更新,就集成到主幹,能夠快速發現錯誤,定位錯誤也比較容易。
  • 防止分支大幅偏離主幹。若是不是常常集成,主幹又在不斷更新,會致使之後集成的難度變大,甚至難以集成。

持續集成的目的:讓產品能夠快速迭代,同時還能保持高質量。它的核心措施是代碼集成到主幹以前,必須經過自動化測試。只要有一個測試用例失敗就不能集成。安全

持續交付:將集成後的代碼部署到更貼近真實運行環境的準生產環境中。好比,咱們完成單元測試後,能夠把代碼部署到鏈接數據庫的 Staging 環境中更多的測試。若是代碼沒有問題,能夠繼續手動部署到生產環境中。框架

持續部署:在持續交付的基礎上,部署的前提是能自動化完成測試、構建、部署等步驟。gitlab

Rancher Pipeline是由RancherUI服務,Pipeline服務和Jenkins三部分組成,如圖:單元測試

 

 閒言少敘,不懂的直接能夠看官網,官網地址。直接整demo了。測試

Rancher Pipeline DEMO

一、Ranche Pipeline 是Rancher V1.6.13更新發布的新功能。因此若是不是V1.6.13首先要進行 Rancher的升級,升級方法gradle

二、升級到V1.6.13後,咱們就能夠在 應用商店 中搜索 "Pipeline",點擊部署就OK了。部署完成後會在UI多出一個流水線的頁面。(這裏環境是以前部署好了)

 

三、Rancher Pipeline中,Rancher用戶能夠同時使用GitHub與GitLab進行基於OAuth的身份驗證,無需插件,便可在單一環境中同時拉取、使用和管理託管在GitHub和GitLab的代碼。

案例是gitlab中的OAuth驗證:

一、由於的gitlab是私有化,因此點擊私有化部署。

二、填寫 gitlab地址

三、點擊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

視頻教程

相關文章
相關標籤/搜索