devops-jenkins-Pipeline基础语法
1. jenkins-Pipeline基础语法
1) jenkins-Pipeline总体介绍
• Pipeline,简而言之,就是一套运行与jenkins上的工作流框架,将原本独立运行于单个或多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
• Pipeline是jenkins2.x最核心的特性,帮助jenkins实现从CI到CD与devops的转变
• https://jenkins.io/2.0/
2) 什么是jenkins Pipeline
• jenkins Pipeline是一组插件,让jenkins可以实现持续交付管道的落地和实施。
• 持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现
• 软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布
• Pipeline提供了一组可扩展的工具 ,通过Pipeline Domain Specific Language(DSL) syntax可以达到Pipeline as Code的目的
• Pipeline as code: jenkinsfile存储在项目的源代码库
3) 为什么要用Pipeline
• 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其CD流程
• 可持续性:jenkins重启或者中断后都不会影响Pipeline job
• 停顿:Pipeline可以选择停止并等待人工输入或批准,然后在继续Pipeline运行。
• 多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和并行执行工作的能力。
可扩展:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项
4) pipeline 基础语法
• Stage
• 阶段,一个pipeline可以划分为若干个Stage,每个Stage代表一组操作,列如:“Build”、“Test”、“Deploy”。
• 注意,Stage是一个逻辑分组的慨念,可以跨多个node
• Node
• 节点,一个node就是一jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行环境。
• Step
• 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个docker镜像,由各类jenkins Plugin提供,例如:sh 'make'
5) jenkins Pipeline入门
• pipeline脚本是由Groovy语言实现
• 无需专门学习Groovy
• Pipeline支持两种语法
• Declarative声明式(在Pipeline plugin 2.5中引入)
• Scripted Pipeline脚本式
• 如何创建基本的Pipeline
• 直接在jenkins Web UI网页界面中输入脚本
• 通过创建一个jenkinsfile可以检入项目的源代码管理库
• 最佳实践
• 通常推荐在jenkins中直接从源代码控制(SCM)中载入jenkinsfile Pipeline
6) jenkins编写简单pipeline脚本
node {
stage('拉取代码'){
echo "拉取代码"
}
stage('代码编译'){
echo "代码编译"
}
stage('部署发布测试'){
echo "部署发布测试"
}
}
(1) 构建一个Pipeline-demo流水线

(2) 创建Pipeline-demo流水线

(3) pipeline脚本编写

(4) 然后保存,进行构建

(5) 构建效果

devops-jenkins-Pipeline基础语法的更多相关文章
- Kubernetes DevOps: Jenkins Pipeline (流水线)
要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式.Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于 ...
- Declarative Pipeline 基础语法
Declarative Pipeline(声明式)核心概念 核心概念用来组织pipeline的运行流程 1.pipeline :声明其内容为一个声明式的pipeline脚本 2.agent:执行节点( ...
- Jenkins pipeline:pipeline 语法详解
jenkins pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- Jenkins pipeline 语法详解
原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- 转~Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- jenkins pipeline语法
目录 一.声明式 二.脚本式 基本 判断 异常处理 Steps node withEnv 一.声明式 声明式Pipeline必须包含在名为pipeline的语句块中,典型的声明式Pipeline语法如 ...
- 8.Jenkins进阶之流水线pipeline基础使用实践(1)
目录一览: 0x01 基础实践 (1) Maven 构建之 Pipeline Script (2) Maven 构建之 Pipeline Script from SCM (3) Jenkins pi ...
- devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线
持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...
随机推荐
- require exports module.exports
require 用于引入模块(js文件). JSON.或本地文件 自己写的模块必须是相对路径,省略了node就认为该自定义模块(js文件)是核心模块(内置模块或者第三方模块) node 有模块作用域 ...
- String字符串的最大长度是多少?
在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的"取值范围".那么对于 Stri ...
- leetcode刷题-59螺旋矩阵2
题目 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 思路 与螺旋矩阵题完全一致 实现 class Solution: def generateM ...
- JS的全局变量无法给Ajax里的变量赋值
前阶段遇到这么一个问题,在JS定义一个全局变量,JS方法里的其他地方都能使用,偏偏ajax里无法赋值,也不是无法赋值,但赋值总是慢一拍,具体的解决方案如下图所示:
- 从头看看Tomcat启动Spring容器的原理
通过带注解Spring Boot可以启动一个web容器,并初始化bean容器.那么Tomcat启动并初始化spring容器的原理是怎样的? Tomcat启动web程序时会创建一对父子容器(图1): 有 ...
- 学习STM32的一些记录_创建库函数版本的工程
1.新建一个文件夹,用于存放MDK的工程所有文件.例如新建文件夹Template. 2.在Template下新建一个USER文件夹,用于存放工程. 3.打开MDK5,新建工程,目录在USER下. 4. ...
- [剑指Offer]26-树的子结构
题意 判断一棵树(参数二)是不是另一棵树(参数一)的子结构. 题解 递归第一棵树,找两棵树中值一样的节点.若找到后,用另一个函数判断以相同值得节点为根的树2是不是树1的子结构. 代码 class Tr ...
- zepto | 用事件委托去解决无法给新增添的DOM添加事件的问题
前段时间在做一个任务的时候,碰见了一个问题:zepto无法用on事件去监听新增加的dom事件.这个问题用live可解决, 但是live在ios下失效,为了解决这个问题,我采用了暴力的方法去解决,每次添 ...
- Linux实战(9):Docker一键搭建kms服务
server端 docker pull luodaoyi/kms-server docker run -itd -p 1688:1688 --name kms luodaoyi/kms-server ...
- Scanner输入方法
输入语句: * import java.util.Scanner; * System.out.println("请输入你想输入的东西:"); * Scanner (自定义)sc = ...