jenkins 流水线构建 并发送html邮件
#!/usr/bin/env groovypipeline{agent anyenvironment {REVISION = "OperationCenterPlatform.${env.BUILD_ID}"project_name = "ocp-web"project_version = "0.0.1-SNAPSHOT"git_project_bran...
·
#!/usr/bin/env groovy
pipeline{
agent any
environment {
REVISION = "OperationCenterPlatform.${env.BUILD_ID}"
project_name = "ocp-web"
project_version = "0.0.1-SNAPSHOT"
git_project_branch="master"
git_project_commitID1 = sh returnStdout: true ,script: "git rev-parse --short HEAD"
//去掉空格
git_project_commitID = git_project_commitID1.trim()
git_url="git@xxxx"
Recipient="xxxx"
project_path="${params.project_path}"
project_port="${params.project_port}"
git_branch="${params.git_branch}"
//传给xhell脚本,作为tomcat名字的一部分
git_branch_name_temp=git_branch.replace("origin/","")
// 去掉空格
git_branch_name = git_branch_name_temp.trim()
project_num="${params.project_num}"
}
options{
disableConcurrentBuilds()
skipDefaultCheckout()
timeout(time: 1, unit: 'HOURS')
timestamps()
}
parameters{
choice(name: 'build_env', choices: '开发环境\n测试环境\n生产环境\n', description: '请选择构建的环境')
}
stages{
stage ('Initialize') {
steps {
script {
currentBuild.displayName = "${REVISION}"
}
sh '''
echo "任务初始化..."
echo "构建版本revision:${REVISION}"
'''
sh '''
echo "项目检出...."
'''
git url: "${git_url}"
sh 'git checkout "${git_branch}"'
}
}
stage ('Build') {
steps {
echo "您选择了:${params.build_env}"
echo '构建阶段....'
sh "'${MAVEN_HOME}/bin/mvn' -Dmaven.test.failure.ignore clean install -f OperationCenterPlatform/pom.xml"
}
}
stage ('Deploy') {
steps {
echo '发布阶段....'
script
{
if (params.build_env == '测试环境') {
echo '=====》》》测试环境进行远程发布。'
sh '''
ssh apps_dev@xxx "cd /home/yunovo; sh createdir_springboot.sh ${project_name};"
scp OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar apps_dev@xxx:/home/yunovo/wars/${project_name}
ssh root@xxx " su - apps_dev; cd /home/yunovo; sh start_springboot_ocp.sh ${project_path} ${project_port} ${project_name} ${git_branch_name} ${git_project_commitID} ${project_version} ${project_num};"
'''
}else if(params.build_env=='生产环境'){
echo '=====》》》生产环境进行远程发布。'
sh '''
ssh yunovo@10.0.3.51 "cd /home/yunovo; sh p_createdir.sh ${project_name}"
scp OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar yunovo@xxx:/home/yunovo/repos/${project_name}/${project_name}-${project_version}.${git_branch_name}.${git_project_commitID}.jar
'''
}
else {
echo '=====》》》 默认(开发)环境进行远程发布。'
sh '''
ssh apps_dev@xxx "cd /home/yunovo; sh createdir_springboot.sh ${project_name};"
scp OperationCenterPlatform/${project_name}/target/${project_name}-${project_version}.jar apps_dev@xxx:/home/yunovo/wars/${project_name}
ssh root@xxx " su - apps_dev; cd /home/yunovo; sh start_springboot_ocp.sh ${project_path} ${project_port} ${project_name} ${git_branch_name} ${git_project_commitID} ${project_version} ${project_num};"
'''
}
}
}
}
}
post {
always {
echo '构建结束...'
}
success {
echo '恭喜您,构建成功!!!'
mail subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 执行成功",
body: """
<div id="content">
<h1>CI报告</h1>
<div id="sum2">
<h2>Jenkins 运行结果</h2>
<ul>
<li>Job URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
<li>jenkins的执行结果 : <a>jenkins 执行成功</a></li>
<li>jenkins的Job名称 : <a id="url_1">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a></li>
<li>jenkins的URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
<li>jenkins项目名称 : <a>${env.JOB_NAME}</a></li>
</ul>
</div>
<div id="sum0">
<h2>GIT 信息</h2>
<ul>
<li>GIT项目的地址 : <a>${git_url}</a></li>
<li>GIT项目当前的分支名 : ${git_branch}</li>
<li>GIT最后一次提交的commitID : ${git_project_commitID}</li>
</ul>
</div>
<div id="sum0">
<h2>运行环境</h2>
<ul>
<li>项目发布的环境: ${params.build_env}</li>
<li>项目环境访问地址: ${params.mail_project_url} </li>
<li>项目运行环境的IP : ${params.mail_project_ip}</li>
<li>项目运行环境的jar路径 : ${params.project_path}</li>
<li>项目的运行包的名称: ${project_name}-${project_version}.${git_branch_name}.${git_project_commitID}.jar</li>
</ul>
</div>
</div>
""",
charset: 'utf-8',
from: 'yunovo@yunovo.cn',
mimeType: 'text/html',
to: 'zhangchuan@yunovo.cn'
//to : "${Recipient}"
}
failure {
echo '抱歉,构建失败!!!'
mail subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 执行失败",
body: """
<div id="content">
<h1>CI报告</h1>
<div id="sum2">
<h2>Jenkins 运行结果</h2>
<ul>
<li>Job URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
<li>jenkins的执行结果 : <a>jenkins 执行失败</a></li>
<li>jenkins的Job名称 : <a id="url_1">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a></li>
<li>jenkins的URL : <a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></li>
<li>jenkins项目名称 : <a>${env.JOB_NAME}</a></li>
</ul>
</div>
<div id="sum0">
<h2>GIT 信息</h2>
<ul>
<li>GIT项目的地址 : <a>${git_url}</a></li>
<li>GIT项目当前的分支名 : ${git_branch}</li>
<li>GIT最后一次提交的commitID : ${git_project_commitID}</li>
</ul>
</div>
</div>
""",
charset: 'utf-8',
from: 'yunovo@yunovo.cn',
mimeType: 'text/html',
//to : "${Recipient}"
to: 'zhangchuan@yunovo.cn'
}
unstable {
echo '该任务已经被标记为不稳定任务....'
}
changed {
echo ''
}
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)