1 Star 0 Fork 5

reno-day / jenkins_demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
multi_branch_jenkinsfile 7.37 KB
一键复制 编辑 原始数据 按行查看 历史
huangxunhui 提交于 2020-06-24 11:37 . 更改文件编码。
pipeline {
// 指定集群 any 表示所有
agent any
// 工具
tools {
maven 'maven'
jdk 'jdk'
}
// 定义常量
environment {
// 钉钉机器人编号
rebootId = 'a3c07482-d031-47a6-8542-05ac56c5f17a'
// 开始logo
imageOfStart = 'https://www.easyicon.net/api/resizeApi.php?id=1229977&size=128'
// 成功logo
imageOfSuccess = 'https://www.easyicon.net/api/resizeApi.php?id=1194837&size=128'
// 失败logo
imageOfFailure = 'https://www.easyicon.net/api/resizeApi.php?id=1201052&size=128'
// 不稳定logo
imageOfUnstable = 'https://www.easyicon.net/api/resizeApi.php?id=1219854&size=128'
// 终止logo
imageOfAborted = 'https://www.easyicon.net/api/resizeApi.php?id=1183198&size=128'
// 认证Id
credentialsId = '98e9c197-f0ae-44c3-8f67-4ca0339028a8'
// 仓库地址
repositoryUrl = 'https://gitee.com/huangxunhui/jenkins_demo.git'
// 打包命令
mavenProd = 'mvn clean package -P prod -Dmaven.test.skip=true'
mavenTest = 'mvn clean package -P test -Dmaven.test.skip=true'
mavenDev = 'mvn clean package -P dev -Dmaven.test.skip=true'
// 服务器名称 - 案例测试-全部部署到dev环境
devServer = 'dev'
testServer = 'dev'
prodServer = 'dev'
// sshPublisher 配置
removePrefix = '/target'
remoteDirectory = '/home/project/jenkins_demo'
sourceFiles = '**/target/jenkins_demo.jar'
execCommandProd = 'cd /home/project && ./manage.sh jenkins_demo/ restart'
execCommandTest = 'cd /home/project && ./manage.sh jenkins_demo/ restart'
execCommandDev = 'cd /home/project && ./manage.sh jenkins_demo/ restart'
}
stages {
stage('开始构建通知'){
steps {
dingtalk (
robot: "${rebootId}",
type: 'LINK',
title: "${env.JOB_NAME}",
text: [
"开始构建-编号为#${BUILD_NUMBER}"
],
messageUrl: "${env.BUILD_URL}",
picUrl: "${imageOfStart}"
)
}
}
stage('拉取代码'){
steps {
echo "拉取 ${BRANCH_NAME} 分支的代码。"
checkout([$class: 'GitSCM', branches: [[name: "*/${BRANCH_NAME}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${credentialsId}", url: "${repositoryUrl}"]]])
}
}
stage('进行打包'){
steps {
script {
if (env.BRANCH_NAME == 'master') {
sh "${mavenProd}"
} else if (env.BRANCH_NAME == 'test') {
sh "${mavenTest}"
} else if (env.BRANCH_NAME == 'dev') {
sh "${mavenDev}"
} else {
sh "${mavenDev}"
}
}
}
}
stage('项目部署'){
steps {
script {
if (env.BRANCH_NAME == 'master') {
// 部署生产环境
sshPublisher(publishers: [sshPublisherDesc(configName: "${prodServer}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "${execCommandProd}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${remoteDirectory}", remoteDirectorySDF: false, removePrefix: "${removePrefix}", sourceFiles: "${sourceFiles}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
} else if (env.BRANCH_NAME == 'test') {
// 部署测试环境
sshPublisher(publishers: [sshPublisherDesc(configName: "${testServer}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "${execCommandTest}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${remoteDirectory}", remoteDirectorySDF: false, removePrefix: "${removePrefix}", sourceFiles: "${sourceFiles}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
} else if (env.BRANCH_NAME == 'dev') {
// 部署开发环境
sshPublisher(publishers: [sshPublisherDesc(configName: "${devServer}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "${execCommandDev}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${remoteDirectory}", remoteDirectorySDF: false, removePrefix: "${removePrefix}", sourceFiles: "${sourceFiles}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
} else {
sshPublisher(publishers: [sshPublisherDesc(configName: "${devServer}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "${execCommandTest}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${remoteDirectory}", remoteDirectorySDF: false, removePrefix: "${removePrefix}", sourceFiles: "${sourceFiles}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
}
// 流水线结束通知
post {
// 成功通知
success {
dingtalk (
robot: "${rebootId}",
type: 'LINK',
title: "${env.JOB_NAME}",
text: [
"构建成功-编号为#${BUILD_NUMBER}"
],
messageUrl: "${env.BUILD_URL}",
picUrl: "${imageOfSuccess}"
)
}
// 失败通知
failure {
dingtalk (
robot: "${rebootId}",
type: 'LINK',
title: "${env.JOB_NAME}",
text: [
"构建失败-编号为#${BUILD_NUMBER}"
],
messageUrl: "${env.BUILD_URL}",
picUrl: "${imageOfFailure}"
)
}
// 构建不稳定通知
unstable {
dingtalk (
robot: "${rebootId}",
type: 'LINK',
title: "${env.JOB_NAME}",
text: [
"构建不稳定-编号为#${BUILD_NUMBER}"
],
messageUrl: "${env.BUILD_URL}",
picUrl: "${imageOfUnstable}"
)
}
// 构建终止通知
aborted {
dingtalk (
robot: "${rebootId}",
type: 'LINK',
title: "${env.JOB_NAME}",
text: [
"构建终止-编号为#${BUILD_NUMBER}"
],
messageUrl: "${env.BUILD_URL}",
picUrl: "${imageOfAborted}"
)
}
}
}
Java
1
https://gitee.com/reno-day/jenkins_demo.git
git@gitee.com:reno-day/jenkins_demo.git
reno-day
jenkins_demo
jenkins_demo
master

搜索帮助