说明

再官网文档上有说明pipeline的工作流程,具体可以参考pipeline文档语法文档。 这里将pipeline的生命周期图贴出来 

我们暂时不会用到完整的流程,只摘取有用的部分,完成最小的流程即可,下面是我举的几个实际例子

一般流程

node {
dir('/home/share/node/falcon') {
stage("git") {
sh "git fetch origin"
sh "git checkout -f origin/master"
}
stage("cpm install") {
sh "cnpm install"
}
stage("build") {
sh "npm run build"
}
stage("restart server") {
sh '''
pm_result=`pm2 ls`
if [[ $pm_result =~ `pwd` ]]
then
echo "`pwd` exists, restart"
pm2 delete app.js
pm2 start app.js --name `pwd`
exit 0
else
pm2 start app.js --name `pwd`
fi
'''
}
}
}

例子中用到了几个方法

  • dir() 更换执行目录,jenkins默认的执行目录在环境设置中设置,默认是/,如果我们使用的是multibranch pipeline的话,它会在jenkins的安装目录下找到workspace进行pipeline操作,目前来说,太麻烦了,所以就直接在脚本中设置好执行目录
  • stage() 方法是阶段的名称,这个是完全自定义的,相当于给构建流程中的某些步骤称为一个阶段,比如git操作阶段、安装依赖阶段、编译阶段、发布阶段,具体效果可以到 构建 章节看
  • sh 后接的就是命令行操作了,如果只有一行,那么用''或者用""包裹起来,如果有多行的话,用'''包裹

条件判断

在构建项目时,我们可以写一些条件,例如在一个新的服务器上进行完整的安装时,我们可以不通过命令行进行git clone把项目拉下来,可以通过判断目标目录是否有项目,然后决定我们是git clone 还是 git fetch origin

node {
dir('/home/share/www') {
stage('Git') {
if(fileExists('openapi')) {
dir('/home/share/www/openapi') {
sh 'git fetch origin'
sh 'git checkout master'
sh 'git pull'
}
} else {
sh 'git clone git@git.coding.net:flashtd1/DPOpenAPI.git openapi'
}
}
}
}

交互流程

在进行版本切换的时候,需要手动输入一些内容,比如分支名称,commit名称等,所以需要用户输入变量,下面举个例子

node {
stage('Git') {
def branch = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch')] echo branch
}
}

执行上述例子,会出现如下情况  当输入后,会得到如下结果 

如果一次性想输入多个参数,可以在parameters数组中添加更多的变量,如下面的例子

node {
stage('Git') {
def input_result = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch'), string(defaultValue: '', description: 'commit to switch', name: 'commit')] echo input_result.branch
echo input_result.commit
}
}

除了用.的形式,也可以用['branch']这样的形式,如果要在sh中使用变量,可以写作

node {
stage('Git') {
def input_result = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch'), string(defaultValue: '', description: 'commit to switch', name: 'commit')] sh "echo ${input_result.branch}"
sh "echo ${input_result.commit}"
}
}

注意sh后的是"",不然会出现错误

这里只举了简单的字符串输入的情况,其实还有很多可以输入的类型,不过文档里并没有写的很详细。这里介绍一下Jenkins的语法生成器,一些插件生成脚本的语句都可以在这里调出来

在Pipeline编辑的输入框下,有一个Pipeline Syntax超链接 红色标记的下拉框中可以找到已经安装了插件的支持编写脚本的选项列表,这里用input来举例  按照提示填完后,可以点击下面的Generate Pipeline Script按钮生成脚本 生成的脚本就可以复制到自己的脚本里啦

最新文章

  1. 【转】JS编码解码、C#编码解码
  2. JavaScript基础——定义变量
  3. Delphi的文件操作
  4. mysql 批量更新和批量插入
  5. (并查集 or BFS+二分)HDU5652
  6. Dreamweaver标签库
  7. 【HDOJ】4729 An Easy Problem for Elfness
  8. 使用搬瓦工搭建javaweb环境
  9. easyui 分页实现
  10. 简单讲解iOS应用开发中的MD5加密的相关使用
  11. 设计模式值六大原则——设计模式之六大原则——单一职责原则(SRP)
  12. Unity带有网络功能——创建服务,并连接到一个特定的服务
  13. 集群技术(三)MySQL集群深度解析
  14. 使用 mysqltuner 检测 mysql 稳定性
  15. js动态添加元素绑定事件问题
  16. 【angularjs】pc端使用angular搭建项目,实现导出excel功能
  17. Vue -- 数据监听
  18. 关于 global nonlocal 用法
  19. suse glibcxx版本过高问题
  20. 获取form表单元素值的4种方式

热门文章

  1. 3.spring cloud eureka 高可用
  2. 一些常用的UI控件
  3. LeetCode OJ:Climbing Stairs(攀爬台阶)
  4. Linux输入输出管理
  5. Composer 扩展包安装方法
  6. 每周荐书:云原生、Docker、Web算法(评论送书)
  7. Android Studio3.0 Kotlin工程问题集
  8. 打开U盘时出现“使用驱动器 X:中的光盘之前需要将其格式化。”字样
  9. 高德地图 Android编程中 如何设置使 标记 marker 能够被拖拽
  10. native 方法列表说明