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作为持续集成的关键环节 ...
随机推荐
- 搜索框的测试checklist
一:简单搜索输入框测试用例1:不输入任何字符,点击搜索按钮,一般搜索出网站所有的信息 2:一般搜索输入框中的有文章显示,当鼠标点击时,文章消失 3:输入全角/半角中文字符(一个字符.超长字符.已经信息 ...
- C++ 多文件编译简述:头文件、链接性、声明与定义
目录 Commen Sense 头文件 链接性 static 与链接性控制 extern 与外部链接性 Reference Commen Sense C++ 在编译时对每个翻译单元(Translati ...
- spring实战第五版总结
- vue项目与node项目分离
为了前后端分离,我们在前端和api层中间,架构了一层node层,用来做服务端渲染,来加快用户的首屏可用和对搜索引擎的友好.项目一开始放置在同一个git仓库里面,分别放在client目录和server目 ...
- 滚动翻页vue
<template> <div class="home"> <div style="height:100%; width:100%;&quo ...
- leveldb Arena
背景我们都知道,对于一个高性能的服务器端程序来说,内存的使用非常重要.C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空 ...
- poj3761(反序表)
题目链接:https://vjudge.net/problem/POJ-3761 题意:给出n和k,求通过k趟冒泡排序得到长为n的有序排列(元素为n个不同的数)的原排列有多少个. 思路: 先给出反序表 ...
- Luogu P4823 [TJOI2013]拯救小矮人
题目 \(n^2\)的dp已经成为辣鸡做法了,%%%wch. 首先一个结论:\(a+b\)小的人在上. 这个东西我们有三种方法解决证明: 1.感性理解,\(a+b\)越大的人逃生能力越强,放在下面就越 ...
- POJ 2528 ——Mayor's posters(线段树+区间操作)
Time limit 1000 ms Memory limit 65536 kB Description The citizens of Bytetown, AB, could not stand t ...
- 设备程序远程升级采用两种方式(优先采用IP方式)
设备程序远程升级采用两种方式(优先采用IP方式): 采用应急广播TS流传输技术规范的消息内容表携带升级包数据.当辅助数据类型值为44时,消息内容表传输的数据为程序升级包. 采用IP方式传输升级包数据. ...