博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pipeline as Code with Jenkins
阅读量:6672 次
发布时间:2019-06-25

本文共 2473 字,大约阅读时间需要 8 分钟。

hot3.png

##什么是jenkins 请参看这个

输入图片说明

pipeline就是一套运行于jenkins之上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,pipeline的实现方式是一套groovy DSL,任何发布流程都可以表述为一段groovy脚本,并且jenkins支持从代码库直接读取脚本,从而实现pipeline as code的理念。

##pipeline功能:

  • 可持续的,即在发布过程中,如果jenkins挂掉,正在运行中的pipeline并不会受到影响,也就是pipeline的进程是独立于jenkins进程本身的。
  • 可停顿的,和bash中的read命令类似,jenkins2.0允许暂停发布流程,等待人工确认后继续下一步流程。
  • 多功能的,pipeline支持复杂的CD需求,包括fork,loop,parallel等。
  • 可扩展的,可以在pipeline插件上集成其他的插件。
  • 有利于工作流的构建步骤的迁移
  • 更好地控制环境变量
  • 暂存和检索文件

##pipeline的基本概念

  • stage 一个pipeline可以划分为若干个stage,每个stage代表一组操作,stage是一个逻辑分组的概念,是可以跨多个node的
  • node 一个node即指一个jenkins的节点,或者是master,或者是agent,在不指定时,是随机分配在任意一个节点上执行的,其是执行step的具体运行环境。
  • step step是最基本的操作单元,小到一个目录的创建,大到构建一个docker镜像,其具体是由各类jenkins插件提供的。

##熟悉jenkins的术语

  • master
  • agent
  • executor executor是指具体执行构建或pipeline step的计算资源。

##pipeline对jenkins版本的要求

  • jenkins 1.642.3 以后的版本(推荐是jenkins 2.0及以上)

##安装pipeline插件及其周边插件

##pipeline with SCM

##jenkins的docker demo 可以用docker安装一个docker版的jenkins,这是

##创建一个pipeline

node {    echo 'Hello from Pipeline'}
Started by user anonymous[Pipeline] echoHello from Pipeline[Pipeline] End of PipelineFinished: SUCCESS

##并行执行

parallel 'integration-tests':{    node('mvn-3.3'){}}, 'functional-tests':{    node('selenium'){}}

##使用片段生成器

##添加tools

node {     git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'     def mvnHome = tool 'M3'     sh "${mvnHome}/bin/mvn -B verify"  }

注意:sh是在linux或类unix系统上,而在windows上表示为

bat "${mvnHome}\\bin\\mvn -B verify"

##一个java环境下的Maven自动化构建流程 输入图片说明

##groovy语法的pipeline配置

git([url: 'https://github.com/joe_user/simple-maven-project-with-tests.git', branch: 'master'])

一般的,在step只有一个参数时,你可以省略参数的名称,如:

sh 'echo hello'

其原意为

sh([script: 'echo hello'])

##管理环境变量

node {  git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'  def mvnHome = tool 'M3'  env.PATH = "${mvnHome}/bin:${env.PATH}"  sh 'mvn -B verify' }
  • 把一个执行的路径添加到环境变量env.PATH中,这样在当前node中其就被加入到环境变量中了。
  • 你也可以覆盖某些环境变量。
  • 在执行mvn就不需要完整的路径。

##也可以添加为一个局部的环境变量

node {   git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'   withEnv(["PATH+MAVEN=${tool 'M3'}/bin"]) {     sh 'mvn -B verify'   } }

##收集测试结果

node {   git 'https://github.com/joe_user/simple-maven-project-with-tests.git'   def mvnHome = tool 'M3'   sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify"   archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true   junit '**/target/surefire-reports/TEST-*.xml' }

##pipeline一些具体的实例 请参考这个链接

##jenkins所有插件 位置

转载于:https://my.oschina.net/wangzongtao/blog/747150

你可能感兴趣的文章
linux学习笔记(一)
查看>>
IOS 自定义圆形进度条UISlider
查看>>
【Spring Boot】13.整合druid
查看>>
Java并发和并行的区别
查看>>
extjs down 的用法
查看>>
IDEA快捷键介绍使用
查看>>
layabox基础:hello world
查看>>
ClassUtil
查看>>
Elastic-Job定时任务
查看>>
真实分享记录我学习Linux系统遇到的问题
查看>>
Linux下查找占用内存最多的进程
查看>>
mongodb 配置文件
查看>>
查看 docker 容器使用的资源
查看>>
Jedis的配置和优化
查看>>
layui + 阿里巴巴iconfont图标库导入
查看>>
2017总结一
查看>>
Spring boot 入门--1
查看>>
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
查看>>
Power Designer数据库建模工具,正向、逆向工程
查看>>
Libevent学习-02:搭建CentOS下的开发环境
查看>>