• Jenkins--基本介绍


    Jenkins详解 https://blog.csdn.net/qq_26848099/article/details/78901240
     
    Jenkins简述
    Jenkins 是一款基于Java开发的流行的开源持续集成(Continuous Integration)工具,旨在提供一个开放易用的软件平台, 主要可用于持续、自动地构建/测试软件项目
    Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
    通常与版本管理工具、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
     
    Jenkins的主要功能是:
    • 自动地构建/测试软件项目
    • 监控一些定时执行的任务
    • 远程部署、异常监控
    使用 Jenkins 的阶段
    • 阶段一(人工发布)
    • 阶段二(free styleproject)
    • 阶段三(free styleproject+ shell)
    • 阶段四(pipline job+ shell )
    • 阶段五(pipline job+ groovy)
    • 阶段六(pipline job+ groovy + 消息队列 + 定时任务)
    • 阶段七(阶段六 + 即时通知)
    阶段一(人工发布)
    • 流程:开发同学编译+打包+发包给运维,运维同学复制包到服务器。
    • 问题:人工操作容易失误,发布效率低。
    • 解决方案:引入jenkins自动发布。
    阶段二(free styleproject)
    • 流程:创建 Jenkins 的 freestyle project 进行自动化发布。
    • 问题:当项目越来越多,开发语言越来越多(目前 http://asp.net、.netcore、nodejs(html/pm2)、java、python),需要部署的服务器越来越多之后,其中自定义的公共部分无法共用,类似开发中,代码无法重用、抽象不够。
    • 解决方案:使用脚本化的方式代替一些简单插件的使用。
    阶段三(free styleproject + shell)
    • 流程:抽象、重构、提取,使用脚本的方式实现,弱化一些简单插件的使用。
    • 问题:在 Jenkins 中配置的 project 不便于使用源代码方式管理。很难进行团队协作。
    • 解决方案:使用 pipeline project,将 Jenkinsfile 提交到代码仓库。
    阶段四(pipline job + shell)
    • 流程:把已经在 free style projetc 中抽象好的发布流程,在 pipeline project 中按照 stage 的方式进行编排,已经写好的脚本直接移植过来。
    • 问题:随着 shell 脚本不断增多,就会出现使用不同内核 shell 带来的一些问题,而且调试 shell 是一个让人抓狂的过程(曾经一个转移字符的问题,调了两天的时间)。
    • 解决方案:使用 groovy 代替 shell。
    阶段五(pipline job + groovy)
    • 流程:和阶段四并无大的变化。
    • 问题:公司需要上市,每次的发布都需要都需要符合流程并在 jira 中保留证据,其中需要 DevOps 做的事情是,发布之前检查(一定要有测试通过+PO/管理者的同意),发布之后保留证据(发布完成标记+本次 Jenkins 发布 job 的截图)。
    • 解决方案:jenkins + 定时任务 + 消息队列。
    阶段六(pipline job+ groovy + 消息队列 + 定时任务)
    • 流程:
    • 定时任务检查需要发布的任务
    • 定时任务通过调用jira JQL 的方式找到符合发布条件的 ticket,发送到发布消息队列。
    • 定时任务遍历发布消息队列
    • 通过 jenkins api 调用 jenkins 发布,在 jenkins 的 pipeline 中增加一个post, 判断 job 成功还是失败,发送到发布完成消息队列。
    • 定时任务遍历发布完成消息队列
    • 更新对相应的 ticket(发布完成标记+ jenkins job 的截图)。
    • 问题:虽然 DevOps 的体力活成功交给了代码,但是,发布完成通知项目干系人的事情还是人工通知,非常不及时,容易忘记,发布不透明。
    • 解决方案:阶段六 + 即时通知
    阶段七(阶段六 + 即时通知)
    • 流程:团队使用钉钉、企业微信作为内部通讯工具,在 pipeline 的 post 中增加调用钉钉、企业微信的 api 发送消息。
     
     
     
     

  • 相关阅读:
    类之间的关系:关联、组合、聚合、依赖关系比较
    贫血模型和充血模型
    WCF(五) 深入理解绑定
    WCF(四) 绑定
    WCF(四) 深入契约
    PythonStudy——函数默认值
    PythonStudy——函数的参数 Function argument
    PythonStudy——函数的返回值 The return value of the function
    PythonStudy——函数的分类 Classification of functions
    PythonStudy——函数的使用 Use of functions
  • 原文地址:https://www.cnblogs.com/absoluteli/p/13959856.html
Copyright © 2020-2023  润新知