Pipeline,簡單來講,就是一套運行於Rancher上的工做流框架,將本來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜發佈流程。java
Rancher Pipeline 主要在Rancher環境中用於運行持續集成、持續交付和持續部署任務,講到pipeline就是敏捷開發的延伸的產物,咱們不得不說持續集成、持續交付和持續部署。git
持續集成:頻繁地(一天屢次)將代碼集成到主幹。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。github
好處主要有兩個:數據庫
持續集成的目的:讓產品能夠快速迭代,同時還能保持高質量。它的核心措施是代碼集成到主幹以前,必須經過自動化測試。只要有一個測試用例失敗就不能集成。安全
持續交付:將集成後的代碼部署到更貼近真實運行環境的準生產環境中。好比,咱們完成單元測試後,能夠把代碼部署到鏈接數據庫的 Staging 環境中更多的測試。若是代碼沒有問題,能夠繼續手動部署到生產環境中。框架
持續部署:在持續交付的基礎上,部署的前提是能自動化完成測試、構建、部署等步驟。gitlab
Rancher Pipeline是由RancherUI服務,Pipeline服務和Jenkins三部分組成,如圖:單元測試
閒言少敘,不懂的直接能夠看官網,官網地址。直接整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源代碼倉庫。
配置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的文章