jenkins根据操作类型重启服务还是更新代码重新部署流水线写法示例
1. 首先看效果
能够根据operate操作来选择是重启服务(不更新代码)还是重新获取代码重新部署服务,且能够选择分支进行部署。
图一 是参数选择构建界面
图二 根据选择不同operate操作的显示结构
2. 附上流水线代码
2.1 代码
pipeline {
agent any
tools{
maven "maven3"
}
// 配置参数,后续可以用params来获取name值。
parameters {
choice(
choices: ['restart' , 'deploy'],
description: 'restart 表示重启,不更新代码 deply 部署最新代码',
name: 'OPERATE')
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'test', name: 'BRANCH', type: 'PT_BRANCH'
}
stages {
stage('PULL') {
// when表示有条件执行
when {
// Only say hello if a "greeting" is requested
expression { params.OPERATE == 'deploy' }
}
steps {
echo "获取最新代码"
//注意 引用必须使用双引号“”,字符串是单引号
git branch: "${params.BRANCH}",
// 需要提前配置git登录的用户
credentialsId: 'a057784c$$%%^^&&&***(((((((-db5eff90a75e', url: 'http://url/zqm/zeus.git'
}
}
stage('COMPILE') {
when {
// Only say hello if a "greeting" is requested
expression { params.OPERATE == 'deploy' }
}
steps {
echo "开始compile"
sshPublisher(publishers: [sshPublisherDesc(configName: 'dev',
transfers: [sshTransfer(cleanRemote: false, excludes: '',
// 此处需要填写全路径
execCommand: 'sh /***/***/compile.sh',
execTimeout: 120000, flatten: false,
makeEmptyDirs: false, noDefaultExcludes:
false, patternSeparator: '[, ]+',
//此处将影响git pull 代码的位置
remoteDirectory: '/***/***/jenkins',
remoteDirectorySDF: false, removePrefix: '',
sourceFiles: '**/**')],
usePromotionTimestamp: false, useWorkspaceInPromotion:
false, verbose: false)])
}
}
stage('DEPLOY') {
steps {
echo "开始构建"
sshPublisher(publishers: [sshPublisherDesc(configName: 'dev',
transfers: [sshTransfer(cleanRemote: false, excludes: '',
// 此处需要填写全路径
execCommand: 'sh /**/deplou.sh', execTimeout: 120000,
flatten: false, makeEmptyDirs: false,
noDefaultExcludes: false, patternSeparator: '[, ]+',
//此处将影响git pull 代码的位置
remoteDirectory: '/jenkins_project/zeus/jenkins',
remoteDirectorySDF: false, removePrefix: '',
sourceFiles: '**/**')],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
2.配置流水线过程如下
- 新建任务如图一
新建流水线任务 - 配置流线型如图二
编写流水线代码 - 构建界面如图三
流水线展示的操作界面 - 构建展示如图四
不同操作的效果图
第十六次构建是deploy,会更新代码
第十五次构建是重启,不会更新代码,不会编译工程,只是重启jar服务