pipeline {
agent any
parameters {
string defaultValue: 'master', description: '分支', name: 'branch_name'
choice choices: ["user","wechat"], description: '请选中服务', name: 'service_name'
booleanParam defaultValue: false, description: '发布后端', name: 'issue_springboot'
booleanParam defaultValue: false, description: '发布定时器', name: 'issue_scheduler'
booleanParam defaultValue: false, description: '发布前端admin', name: 'issue_vue_admin'
booleanParam defaultValue: false, description: '发布前端mobile', name: 'issue_vue_mobile'
}
environment {
rootDirectory = "/home/cloud"
}
stages {
stage('Confirm Stage') {
steps {
script {
// 创建确认提示框
def userInput = input(
message: "即将操作服务:[$service_name],分支:[$branch_name] 是否继续执行?",
ok: '继续'
)
}
}
}
stage('拉取代码') {
steps {
git branch: "$branch_name", credentialsId: 'b7eaf7c71-99e0-42a4-83e6-5d66cc32b3e4', url: 'http://wtx/root/wtx.git'
echo '拉取成功'
}
}
stage('构建上传service') {
when {
//判断表达式是否为true,如果为true则执行
expression { params.issue_springboot }
}
steps {
script {
newPath="$rootDirectory/$service_name/service"
echo '开始构建Service'
bat "mvn --version"
bat "mvn clean package -DskipTests -pl wtx-service/wtx-$service_name-service -am"
echo '构建Service完成'
//verbose=true 显示执行详细信息
sshPublisher(publishers: [sshPublisherDesc(configName: '服务器地址', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand:"""
cd $newPath
./start.sh
""", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "$service_name/service", remoteDirectorySDF: false, removePrefix: "wtx-service\\wtx-$service_name-service\\target", sourceFiles: "wtx-service\\wtx-$service_name-service\\target\\wtx-$service_name-service-0.0.1-SNAPSHOT.jar")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo '启动Service完成'
}
}
}
stage('构建上传scheduler') {
when {
//判断表达式是否为true,如果为true则执行
expression { params.issue_scheduler }
}
steps {
script {
newPath="$rootDirectory/$service_name/scheduler"
echo '开始构建scheduler'
bat "mvn --version"
bat "mvn clean package -DskipTests -pl wtx-scheduler/wtx-$service_name-scheduler -am"
echo 'scheduler构建完成'
sshPublisher(publishers: [sshPublisherDesc(configName: '服务器地址', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """
cd $newPath
./start.sh
""", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "$service_name/scheduler", remoteDirectorySDF: false, removePrefix: "wtx-scheduler\\wtx-$service_name-scheduler\\target", sourceFiles: "wtx-scheduler\\wtx-$service_name-scheduler\\target\\wtx-$service_name-scheduler-0.0.1-SNAPSHOT.jar")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo '启动scheduler完成'
}
}
}
stage('构建上传vue_admin') {
when {
//判断表达式是否为true,如果为true则执行
expression { params.issue_vue_admin }
}
steps {
script {
echo '开始构建vue_admin'
bat "npm --version"
bat "cd wtx-web/wtx-$service_name-admin && npm install && npm run uat"
echo 'vue_admin构建完成'
sshPublisher(publishers: [sshPublisherDesc(configName: '服务器地址', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "$service_name/web/admin", remoteDirectorySDF: false, removePrefix: "wtx-web\\wtx-$service_name-admin", sourceFiles: "wtx-web\\wtx-$service_name-admin\\dist\\**")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo 'vue_admin推送完成'
}
}
}
stage('构建上传vue_mobile') {
when {
//判断表达式是否为true,如果为true则执行
expression { params.issue_vue_mobile }
}
steps {
script {
echo '开始构建vue_mobile'
bat "npm --version"
bat "cd wtx-web/wtx-$service_name-mobile && npm install && npm run uat"
echo 'vue_mobile构建完成'
sshPublisher(publishers: [sshPublisherDesc(configName: '服务器地址', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "$service_name/web/mobile", remoteDirectorySDF: false, removePrefix: "wtx-web\\wtx-$service_name-mobile", sourceFiles: "wtx-web\\wtx-$service_name-mobile\\dist\\**")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo 'vue_mobile推送完成'
}
}
}
}
}
jenkins pipeline 简单编写
于 2023-07-05 10:40:00 首次发布