.Jenkins 流水线
.CI/CD
.流水线
1.承前
作为运维,逃不掉的工作之一就是Jenkins 。哪怕开发同学自己会搭也一定会等你来完成,不然像抢了某人的责任田一样。
2. Jenkins 流水线

3.CI/CD
说起 CI/CD,大家自然会想起来 Jenkins ,其实这两个东西没啥直接联系,Jenkins 充其量是个持续集成工具而已。
于是有人就说了,怎么会没关系,CI/CD 不就是持续集成和持续交付么。定义没错,但你做到了么?所谓的持续集成并不是指把代码拿出来,打成jar包之类,那个就叫打包。
所谓集成的概念有点类似代码合并,延伸出来的话就是通过构建大量不同级别的自动化测试,确认代码修改没有对应用造成。
因为验证流程是很繁琐的,所以需要持续集成,不停的做验证操作,以保证代码开发的效率。
而主流的玩法却是先集成起来,最多套个gerrit 增加点眼缘,然后就打成包发往不同环境了,等测试同学发现问题,自动回滚代码已经不太现实,多半覆盖修复了。
基于以上原因,说大家都没有CI起来。至于CD,有些同学会理解成持续部署,毕竟两个词都是D开头的,但其实是交付,也就是由CI引出来的,通过持续交付自动将已验证的代码发布到存储库,使之随时有可以部署到生产的代码库。
同样,第一步没有完成,第二步也没有可能完成。持续部署大家都玩儿的挺溜的,这个功能其实是CD的延伸,只不过没了CICD以后,大家或是不开放生产自动部署,或是启用流程系统控制流转,也倒圆的过来。
4.流水线
CI/CD 因为是持续自动化的一系列操作,也被称为CI/CD管道。无独有偶,Jenkins 也有类似的东西 Pipeline,所以大家就玩的不亦乐乎,毕竟都是管道流水线操作嘛,虽然没有灵魂。
Jenkins 的基础知识就不介绍了,挺简单的,一个Java 程序罢了。我们直接看Pipeline ,Pipeline 是一个套件,支持把持续交付流水线集成到 Jenkins里。而流水线的定义一般被写到一个文本文件中,Jenkinsfile,该文件“编制”了整个构建软件的过程。
流水线组成:
.Pipeline 流水线,整个构建过程
.Node 节点,是一个机器, Jenkins环境的一部分
.Stage 阶段,一般是不同子集,构建、测试、发布
.Step 步骤,单一任务,用的较少
流水线的写法有两种,声明式写法和脚本化写法。两种用的语言都是 Groovy的语法,不过表述方式上会有点差别,可以根据自己喜好选取。

#声明式
Jenkinsfile (Declarative Pipeline)
pipeline {agent anystages {stage('Build') { steps {sh 'make' }}stage('Test') { steps {}}stage('Deploy') { steps {}}}
}

.Pipeline块定义了整个流水线中完成的所有工作
.agent:定义代理上执行流水线
.stage(‘Build’):定义Build阶段,举例
.steps:执行某阶段相关的步骤

#脚本式
Jenkinsfile (Scripted Pipeline)
node {  stage('Build') { sh 'make' }stage('Test') { }stage('Deploy') { }
}

脚本式会简化一些,甚至stage 标记也可以省略掉,没有声明式那么层次清晰。
5. 变量
1)sh命令执行时使用${var}获取的是groovy变量,如果执行命令过程中生成了shell变量,调用时需要"$",添加反斜杠.
2)通常情况下:sh 中都可以引用groovy的变量,即加env.或者不加都可获取
6.总结
基本内容就到这里,起个头就行了,具体的语法和最佳实践请参考官方文档https://www.jenkins.io/doc/book/pipeline/,再描述下去也不过是把手册搬过来,还可能有遗漏,所以就不了。后面有机会 yann 会尝试介绍下生产里的部署,或者 Jenkins X 也是不错的方向,敬请期待。

Jenkins 流水线说明相关推荐

  1. navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线

    本文转载自:Jenkins 中文社区 这也是一种自定义流水线 DSL 的方法 几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续 ...

  2. Jenkins 流水线 获取git 分支列表_Jenkins扩展共享库进阶

    读完需 16 分钟 速读需 7 分钟 前言 前面我们介绍了Jenkins多分支流水线.Jenkins流水线即代码之扩展共享库,其实都是"流水线即代码"的体现.我们将Jenkinsf ...

  3. 使用jenkins流水线完成自动部署服务到K8s

    说明 通过本文章,您可以轻松入门cicd过程.本地测试环境为springboot微服务项目.用户提交代码到gitlab,触发jenkins拉取gitllab上的代码,然后完成编译构建成jar包,同步完 ...

  4. go Jenkins流水线极速打包镜像上传

    在使用Jenkins流水线进行打包时,发现直接使用Dockerfile去构建一个java或者go程序会非常慢,go好一点也要一分钟,java则需要3分钟以上.Java&Gradle极速打包设置 ...

  5. Jenkins流水线极速打包

    在使用Jenkins流水线进行打包时,发现直接使用Dockerfile去构建一个java或者go程序会非常慢,go好一点也要一分钟,java则需要3分钟以上.go极速打包设置见:这里 dockerfi ...

  6. Docker 搭建 Jenkins 流水线项目配置

    本篇介绍 Jenkins 流水线项目的配置及流水线脚本语法规则.至于 Jenkins 的安装及其它配置,我之前写过一篇文章可以查看. https://www.yuque.com/testpu/pro/ ...

  7. [Mattermost]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)

    其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇) ...

  8. [Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)

    其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost ...

  9. jenkins流水线(jenkinsfile)详解,保姆式教程

    jenkins流水线(jenkinsfile)详解 在学习本篇文章的时候,可以去看看jenkins官网的文档,jenkins官网支持中文,观看十分便捷 此教程使用的是gitee+docker+jenk ...

最新文章

  1. PHP与MySQL连接菜鸟教程_PHP 连接 MySQL - PHP 教程 - 菜鸟学堂-脚本之家
  2. sqoop配置与使用
  3. 包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解
  4. Bootstrap 插件的选项
  5. java se development kit可以卸载吗_首款纯电版MINI COOPER详细评测,或将国产,值得等吗?...
  6. 复制assert目录文件到私有目录_每天学点之CentOS文件/目录的权限
  7. java:Eclipse插件springsource-tool-suite的下载和安装
  8. java启动RabbitMQ消息报异常解决办法
  9. 生存的关键往往在于偶然的机遇——李光耀
  10. Maven入门指南12:将项目发布到私服
  11. MATLAB绘制中国地图超全教程
  12. C#路径中使用斜杠/和反斜杠\的区别
  13. 适用于 Windows 10 的触摸板手势
  14. C. Alternating Sum(数论——等比数列公式与变换)
  15. css 字体颜色 样式大全
  16. 用日志构建坚固的数据基础设施/为什么双写不好
  17. Android_ProGuard一览天下
  18. 高用户体验,减少跳出率
  19. 互联网营销方法十五个
  20. 结合案例轻松理解PID到底是个啥?

热门文章

  1. atoi函数的模拟实现
  2. WinCE系统编译过程
  3. 驾驶证识别/驾驶证OCR详解
  4. 基于LigerUI+JBPM5自定义表单+Node.js的J2EE大型金融项目《财务预算系统》开发全程实录
  5. python中用来返回序列的最大函数_Python程序设计2——列表和元组
  6. Unity学习笔记——Unity基础一:unity界面、场景、游戏物体、组件等基本概念
  7. python语言简介-发展历程-特点-应用领域
  8. 讨教大学|2022年中国质量协会六西格玛考试成绩查询
  9. 才华战胜资本,原创受到尊重(抄袭事件后续)
  10. 微型连接器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)