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的文章