• 02 DevOps 之 Jenkins


    1. 什么是CICD

    推荐阅读:CICD原理及流程
    CICD面试题
    pipline 语法 推荐阅读
    在要介绍jenkins之前,我们需要了解CICD是什么?
    Continuous Integration (CI) 持续集成
    Continuous Delivery (CD) 持续交付
    Continuous Deployment (CD) 持续部署

    1.1 持续集成

    持续集成的工作原理:是将小的代码块推送到Git仓库中托管的应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中(jenkins拉起的构建、部署,测试)。

    假设一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要多次推送代码更改。对于每次向仓库的推送,你都可以创建一组脚本来自动构建和测试你的应用程序,从而减少了向应用程序引入错误的机会。这种做法称为持续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会自动连续进行构建和测试,以确保所引入的更改通过你为应用程序建立的所有测试,准则和代码合规性标准。

    1.2 持续交付

    持续交付是超越持续集成的更进一步的操作。应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,尽管部署是手动触发的,但作为一个附加步骤,它也可以连续部署。此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发以必输此次变更。

    1.3 持续部署

    与持续交付类似,但不同之处在于,你无需将其手动部署,而是将其设置为自动部署。完全不需要人工干预即可部署你的应用程序

    1.4 gitlab CI/CD && Jenkins CICD 如何工作

    gitlab 也能够实现CICD,但是此处不做太多介绍。我们主要了解Jenkins 怎么实现CICD的

    1.4.1 GitLab CI/CD 如何工作

    为了使用GitLab CI/CD,你需要一个托管在GitLab上的应用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。

    在这个文件中,你可以定义要运行的脚本,定义包含的依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要自动运行脚本或手动触发脚本。

    它涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。

    1.4.2 Jenkins CICD如何工作

    大概的流程是:1. 研发推送代码到gitlab 2. Jenkins拉取代码 3. 编译代码 4. 构建镜像 5. 推送镜像到镜像仓库 6.开发,测试,生产拉去镜像
    在这里插入图片描述

    2. Jenkins 简介

    Jenkins是一个可扩展的持续集成引擎。
    持续集成,就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础。
    持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。
    每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

    3. Jenkins pipline 语法

    推荐阅读:jenkins pipline基础语法与示例

    3.1 Pipeline 支持两种语法

    3.1.1 声明式(jenkins2.5新加入的语法)

    • 特点:
      1.最外层必须由pipline{ //do something }来进行包裹
      2.不需要分好作为分隔符,每个语句必须在一行内
      3.不能直接使用groovy语句(例如循环判断等),需要被script {}包裹
    • Declarative Pipeline(声明式)核心概念
    核心概念用来组织pipeline的运行流程
    1.pipeline :声明其内容为一个声明式的pipeline脚本
    2.agent:执行节点(job运行的slave或者master节点)
    3.stages:阶段集合,包裹所有的阶段(例如:打包,部署等各个阶段)
    4.stage:阶段,被stages包裹,一个stages可以有多个stage
    5.steps:步骤,为每个阶段的最小执行单元,被stage包裹
    6.post:执行构建后的操作,根据构建结果来执行对应的操作
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    3.1.2 2.脚本式

    • 特点:
      1.最外层有node{}包裹
      2.可直接使用groovy语句
      在这里插入图片描述
  • 相关阅读:
    3.地图控制器(MapController)
    关于 Ceph 的一些维护工作总结
    螺旋矩阵问题C代码
    基于javaweb的家政服务平台系统(java+ssm+jsp+mysql)
    git与Github命令行使用教程
    动态规划笔记+经典习题十道
    [附源码]java毕业设计 停车场管理系统
    Foxmail 服务器的超大附件服务无效的解决方案
    用高并发技巧解决redis热key问题
    SpringMVC
  • 原文地址:https://blog.csdn.net/admin321123/article/details/127895041