DevOps之持续集成Pipeline(一)
一、Pipeline介绍
Jenkins2.0中最大的一个特性就是Pipeline,实际使用中Pipeline已经超越了我们对jenkins本身的理解,可能在之前我们大多数把Jenkins当做是一个持续集成的工具。但是在Jenkins2.0中,Jenkins完成了CI到CD的华丽转身,而且因为Jenkins的开放性,随着一些测试plugin的加入,CT持续测试也可以在Jenkins Pipeline上实现。以及多节点的组合式任务,使得Jenkins可以实现复杂的发布流程。
Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
官方资料:https://jenkins.io/2.0/
1、Jenkins持续集成架构图

2、Pipeline的组成部分
①Node
我们可以将Node称为是节点或者Agent。节点可以执行某一阶段(Stage)、某几阶段(Stage)乃至整个Pipeline,就看我们Pipeline中在哪里去定义Node。我们可以将Node作为Jenkins Master的Slave 节点来分担Master节点的构建以及执行job负载。也可以将Node当做测试、部署的专用节点。比如我们可以增加一个Ansible节点用来做自动化部署,增加 一个Jmeter节点用来做性能测试。
②Stage
我们可以将Stage称为阶段,每一个Stage为Pipeline中的一个小部分,而每个Stage中最小部分为Step。比如一个简单的持续集成Pipeline。我们可以分为两个Stage,第一个是git clone code,把最新代码拉下来,第二个为Build,即利用Ant、Maven等工具进行代码编译构建。
③Step
我们可以把Step称为步骤,一个或者多个Step将会组成一个Stage,Step是Pipeline组成的最小单位。一个Step可以很简单,比如echo “hello”。也可以很复杂,比如sh‘’ “docker build -t jenkins:master ”。
3、Pipeline两种语法
Pipeline脚本是由Groovy语言实现
①声明式Pipeline
pipeline {
agent any //定义使用哪个Node进行Job的执行
stages {
stage('Build') { //定义Build的stage
steps { //定义Build的stage下面的所有step
//
}
}
stage('Test') {
steps {
//
}
}
stage('Deploy') {
steps {
//
}
}
}
}
②脚本式Pipeline
node { //定义使用哪个Node进行Job的执行与声明式中的Agent等同。
stage('Build') { //定义Build的stage步骤
// //定义Build的stage下面的所有step步骤
}
stage('Test') {
//
}
stage('Deploy') {
//
}
}
4、如何写Pipeline
Jenkins贴心的为我们提供了快速生成脚本的功能

①拉取代码为例

②生成Pipeline脚本

③Pipeline最佳实践
通常推荐在 Jenkins中直接从源代码控制(SCM)中载入Jenkinsfile Pipeline,这样可以对Jenkinsfile也进行分支管理以及不同版本的管理。

更多Pipeline的使用和说明请参照官方文档:https://jenkins.io/doc/book/pipeline/
DevOps之持续集成Pipeline(一)的更多相关文章
- 在推送提交之后阻止Azure DevOps (TFS)持续集成
在Azure DevOps服务器上配置生成定义时,可以配置连续集成(CI)生成.每次签入或提交到源代码库时都会自动运行一个CI构建.这种机制允许开发人员启动一个自动化的过程,例如编译和部署构建.这是一 ...
- DevOps之持续集成SonarQube代码质量扫描
一.SonarQube介绍 SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...
- DevOps之持续集成Jenkins+Gitlab
一.什么是DevOps DevOps(英文Development(开发)和Operations(技术运营)的组合)是一组过程.方法与系统的统称,DevOps是一组最佳实践强调(开发.运维.测试)在应用 ...
- DevOps - CI - 持续集成(Continuous Integration)
初见 持续集成是什么? 持续集成基础概念介绍 持续集成服务器与工具集 了解 敏捷开发中的持续集成 使用Jenkins进行持续集成 案例 gitlab+gerrit+jenkins持续集成框架 使用Ge ...
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- Jenkins Pipeline 持续集成
Jenkins Pipeline 持续集成 Pipeline Script 执行流程 在使用Pipeline之前请确保Jenkins是2.x版本以上,并且安装了Pipeline插件. Jenkins提 ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...
- devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线
持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...
- 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成
1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...
随机推荐
- 【VS开发】visual studio 2015的NuGet Manager解决方案管理功能
NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装.升级开源库和工具. 官网地址:http://www.nuget.org/ 官网最醒目的位置就是下载链接,安装 ...
- Spring Boot 2.0 多数据源编程
多数据源配置 创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置.如下例子中,主数据源配置为spring.datasource.p ...
- XCode8.3真机调试设置
本文使用XCode8.3.3 首先XCode->Preferncs,进入下面的界面 点击左下角“+”号,并输入账号,然后点击Manage Certificates,左下角添加IOS develo ...
- 2019JAVA第四次实验报告
JAVA实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/29 评分等级 实验四 类的继承 1.实验目的 掌握类的继承方法: 变量的继承和覆盖,方法的继承.重载和 ...
- [codeforces#592Div2]C-G题
题目链接 感觉这场难度迷茫,个人觉得难度排序为$A<B<D=E=G<C<F$ C题: 比赛结束1500+pp,结果出分900+fst,我就是fst的睿智Orz. 题意为给出$n ...
- 洛谷P1029 最大公约数和最小公倍数问题 (简单数学题)
一直懒的写博客,直到感觉不写不总结没有半点进步,最后快乐(逼着)自己来记录蒟蒻被学弟学妹打压这一年吧... 题目描述 输入22个正整数x_0,y_0(2 \le x_0<100000,2 \le ...
- [LeetCode] 矩形面积
题目链接: https://leetcode-cn.com/problems/rectangle-area 难度:中等 通过率:41.3% 题目描述: 在 二维 平面上计算出两个 由直线构成的 矩形重 ...
- shell脚本之删除内容相同的重复文件
#!/bin/bash #!当前文件夹下,删除内容相同的重复文件,只保留重复文件中的一个. ls -lS --time-style=long-iso | awk 'BEGIN{ getline;get ...
- Eclipse集成开发环境搭建
gdbserver安装: 安装gdb-server的环境变量要放在arm-linux-gcc的环境的前面,因为arm-linux-gcc的安装包里面也有gdb,linux系统在找指令时从/root/. ...
- AIX查看系统日志
1.查看系统启动日志 在AIX中可以使用alog命令来查看系统日志. 启动日志: /var/adm/ras/bootlog /var/adm/ras/bosinstlog /var/adm/ras ...