• Jenkins Pipeline


    SDLC

    软件开发的生命周期SDLC(Software Development Life Cycle),它集合了计划、开发、测试和部署过程。

    主要分为以下五个阶段:

    • 需求分析
    • 设计
    • 实现
    • 测试
    • 进化维护

    瀑布模型

    优势劣势
    简单医用和理解各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
    当前一阶段完成后,您只需要去关注后续阶段由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险
    为项目提供了按阶段划分的检查节点瀑布模型的突出缺点是不适应用户需求的变化

    敏捷开发

    敏捷开发(Agile Development)核心是迭代开发(Iterative Development)与增量开发(Incremental Development)

    迭代开发:将大的开发周期拆分为多个小周期。

    增量开发:每个周期均增加一个用户可感知的完整功能。

    每次版本均为一次小的瀑布模型,不遗漏每一个环节。

    优点:可以早期交付,降低风险。

    CI

    持续集成(Continuous integration)指的是,频繁地将代码集成到主干。

    目的:让产品可以快速迭代,同事保持高质量。

    流程:

    • 提交
    • 测试(代码)
    • 构建
    • 测试(功能)
    • 部署
    • 回滚

    好处:

    • 降低风险
    • 对系统健康持续检查
    • 减少重复性工作
    • 持续部署,提供可部署单元包
    • 持续交付可供使用的版本
    • 增强团队信心

    CI/CD介绍:

    Jenkins安装配置

    安装流程见官网

    启动时,为了防止占用过高,可以配置启动参数。

    修改jenkins(/etc/sysconfig/jenkins)配置文件,找到JAVA_OPTIONS参数

    1. vim /etc/sysconfig/jenkins
    2. JENKINS_JAVA_OPTIONS="-Djava.awt.headless"
    3. # 修改成
    4. JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms256m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

    具体参数根据自己的机器实际情况调整。

    若插件下载速度慢,也可以搜索使用国内镜像,提高下载插件速度。

    打开jenkins目录中的default.json文件,一般在 /var/lib/jenkins/updates

    1. cd /var/lib/jenkins/updates
    2. sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json && sudo sed -i 's#www.google.com#www.baidu.com#g' default.json

    Pipeline

    Pipeline是Jenkins 2.0版本的精华所在,是帮助Jenkins实现从CI到CD华丽转身的关键工具!

    Pipeline的实现方式是基于一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins 2.0 Pipeline支持从代码仓库(Git/SVN)直接读取脚本,从而实现了Pipeline as Code的理念。

    Pipeline的功能和优点

    • 可暂停性:Pipeline基于Groovy脚本可以实现Job的暂停和等待用户的输入或批准然后继续执行。
    • 更灵活的并行任务:通过Groovy脚本可以实现Step,Stage间的并行执行,和更复杂的相互依赖关系。
    • 可扩展性:通过Groovy的脚本编程更容易按需扩展CI任务。
    • 优雅型性:设计Pipeline = 设计代码,非常符合程序员思维
    • As Code:集中管理CI脚本、用代码库来管理脚本、从代码库直接读取脚本,从而可以将项目CI迅速拉起来!

    Pipeline 支持两种语法,Declarative(声明式)和Scripted Pipelin(脚本式)。

    日志分割

    配置日志分割工具

    1. wget http://down.zimeitang.cn/package/tomcat/cronolog-1.6.2.tar.gz
    2. tar zxvf cronolog-1.6.2.tar.gz
    3. cd cronolog-1.6.2
    4. ./configure && make && make install && echo "cronolog is ok"
    5. which cronolog

    构建示例

    使用 Extended Choice Parameter 插件,同时启动多个项目

    Pipeline Jenkinsfile

     
    

    deploy_microservice.sh

     
    

    SonarQube

    SonarQube 是一种自动代码审查工具,它可以帮助检测bug、漏洞、坏味道。

    它可以和现有的工作流集成,比如Jenkins,集成至Jenkins时只需要安装有一个SonarQube Scanner插件,流程如下图所示。

    需要下载SonarQube Scanner插件,之后在全局工具配置中配置安装。(这里名称为 SonarQube-Scanner,下面流水线配置时会用到)

    之后在系统配置中,配置sonar的名称,地址以及token即可使用了。 (这里名称为 SonarQube,下面流水线配置时会用到)

    之后在自由风格的构建计划中就可以增加构建步骤,选择声呐扫描

    这里贴一段常用的配置

    Java项目

     
    

    如果构建时出现 Tasks support was removed in SonarQube 7.6. 错误。将Task to run清空。

    对应pipeline的模式,首先需要在项目根目录下创建 sonar-project.properties 文件,贴入上面的配置,之后在Jenkinsfile中使用。

    1. stage('check code') {
    2. steps {
    3. script {
    4. // 配置sonar scanner的名称
    5. scannerHome = tool 'SonarQube-Scanner'
    6. }
    7. // Sonar环境名称
    8. withSonarQubeEnv('SonarQube') {
    9. // 具体可执行文件所在位置
    10. sh "${scannerHome}/bin/sonar-scanner"
    11. }
    12. }
    13. }

    docker

    容器化部署

    构建计划

    1. jenkins pipeline 流水线
    2. 使用docker
    3. 接入sonarqube
    4. 使用k8s

    未完待续。。。

  • 相关阅读:
    管理类报表可视化工具有哪些:图形可视化和数据分析软件
    【Educoder作业】C&C++线性表实训
    web:[ACTF2020 新生赛]Include
    xp 系统 安装 python 2.7 ide pip
    OceanBase V4.2特性解析:用 Show Trace 快速定位数据库性能瓶颈
    零样本和少样本学习
    Promise简(resolve,reject,catch)
    监控Android Looper Message调度的另一种姿势
    Python sklearn实现SVM鸢尾花分类
    工具软件---Linux下安装Arthas
  • 原文地址:https://blog.csdn.net/jx_ZhangZhaoxuan/article/details/126061887