• 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

    视频教程

  • 相关阅读:
    悲观锁、乐观锁、行级锁、表级锁
    MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)
    刷题-力扣-148. 排序链表
    刷题-力扣-206. 反转链表
    刷题-力扣-203. 移除链表元素
    刷题-力扣-474. 一和零
    刷题-力扣-494. 目标和
    刷题-力扣-160. 相交链表
    刷题-力扣-34. 在排序数组中查找元素的第一个和最后一个位置
    刷题-力扣-33. 搜索旋转排序数组
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/8125389.html
Copyright © 2020-2023  润新知