jenkins pipeline 之 deploy k8s 环境并发送邮件通知
项目中有更新代码之后触发jenkins任务,部署好之后并发送邮件给发开人员 #!/usr/bin/env groovy
Date date = new Date()
def time = date.format("yyyyMMdd")
def project_name = "test1"
def mail_list = "test@163.com" def cmd_pods = "kubectl get pods -n test"
def depoly_ip = "192.168.9.181"
def access_port = ""
def pod_status(cmd,type){ script{ if(type == "clean"){
sum = while(true){
sleep
sum +=
echo "${cmd}| grep test| wc -l"
out = sh(script: "${cmd}| grep test| wc -l", returnStdout: true)
echo "${out}"
echo "${cmd}| grep test | wc -l"
if(out.toInteger() == ){
echo "clean test env"
break
}
if(sum == ){
error "not clean env pods"
break
}
} }
if(type == "deploy"){
sum = while(true){
sleep
sum +=
out = sh(script: "${cmd}| grep Running| wc -l ", returnStdout: true)
out1 = sh(script: "${cmd}| grep Completed| wc -l ", returnStdout: true)
if(out1.toInteger() == ) {
if(out.toInteger() >= ) {
echo "depoly success "
break
}
}
if(sum == ){
error "pods not Running"
break
}
} }
} }
pipeline {
agent { label '192.168.9.181' }
//agent any
environment {
def changeBranch = "change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
}
stages {
stage("download code"){
steps{
git branch: "oi" ,url: 'git@test.com:test/test-helm.git'
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
commit_id = sh(returnStdout: true, script: 'git show --pretty=%H| head -1').trim()
mail_name = sh(returnStdout: true, script: 'git show --pretty=%ae| head -1').trim()
change_id = sh(returnStdout: true, script: 'git show --pretty=%b| head -1').trim()
update_info = sh(returnStdout: true, script: 'git show --pretty=%s| head -1').trim() }
}
}
stage("clean env"){
steps{
dir("/root/appaiops/"){
script {
sh(returnStatus: true, script: "./clean-test.sh")
pod_status(cmd_pods,"clean")
}
}
sh "sudo rm -rf /root/appaiops"
}
}
stage ('deploy env') {
steps {
echo "start deploy env"
sh "./build.sh "
dir("/root/appaiops/"){
sh "./run-test.sh ${depoly_ip}"
}
}
}
stage('check pods status') {
steps {
script{
pod_status(cmd_pods,"deploy")
sh "${cmd_pods}"
}
}
}
}
post {
always {
script {
email_format = """
<table border="">
<tr>
<td>Project</td>
<td>${project_name}</td>
</tr>
<tr>
<td>commit_id:</td>
<td>${commit_id}</td>
</tr> <tr>
<td>Author:</td>
<td>${mail_name}</td>
</tr>
<tr>
<td>access address </td>
<td>http://${depoly_ip}:${access_port}</td>
</tr>
<tr>
<td>pods depoly status</td>
<td>Successful</td>
</tr>
</table>
"""
}
}
success {
emailext (
subject: " Deploy Successful ${env.JOB_NAME} [${update_info}]",
body: """
<p>Deploy test/${project_name} env Successful </p>
<p>${BUILD_URL}: SUCCESS </p>
${email_format}""",
to: "${mail_list},${mail_name}",
from: "test1@163.com",)
}
failure {
step([$class: 'Mailer',
notifyEveryUnstableBuild: true, recipients: "${mail_list}",
sendToIndividuals: true]);
}
}
}
jenkins pipeline 之 deploy k8s 环境并发送邮件通知的更多相关文章
- Jenkins指定tag发布到k8s环境
Jenkins指定tag发布到k8s环境 1.Jenkins配置一个Pipeline 工程 首先要安装插件:https://www.cnblogs.com/Dev0ps/p/9125232.html ...
- Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)
通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...
- jenkins pipeline构建后发送邮件通知
jenkins pipeline构建后发送邮件通知 mail配置 进入系统配置 找到最下边的邮件通知 创建任务 Pipeline片段 post { always { bat "" ...
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- Docker的Jenkins Pipeline工作流
原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...
- Jenkins Pipeline 参数详解
Pipeline 是什么 Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一 ...
- 自动化集成:Pipeline整合Docker+K8S
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...
- Kubernetes DevOps: Jenkins Pipeline (流水线)
要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式.Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于 ...
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
随机推荐
- JS正则和点击劫持代码(第十二天 9.27)
JS正则 正则表达式:用单个字符串描述或者匹配符合特定语句规则的字符串一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索,可以去替换 语法:/表达式/修饰符(可选)var para=/icq ...
- hibernate.QueryException: Legacy-style query parameters (`?`) are no longer supported
传统样式查询参数(`?`)不再支持:使用JPA样式的序号参数(例如,`?1’) hibernate4.1之后已经对HQL查询参数中的占位符做了改进: 更改代码:
- URAL_1146/uva_108 最大子矩阵 DP 降维
题意很简单,给定一个N*N的大矩阵,求其中数值和最大的子矩阵. 一开始找不到怎么DP,没有最优子结构啊,后来聪哥给了我思路,化成一维,变成最大连续和即可.为了转化成一维,必须枚举子矩阵的宽度,通过预处 ...
- CSS属性之float浮动属性
float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素. float有四个属性 ...
- JavaEE--JNDI(上,简介)
参考:https://blog.csdn.net/yan372397390/article/details/50450332 https://www.landui.com/help/show-6158 ...
- 数据可视化BI平台——CBoard的部署与使用(笔记整理)
CBoard作为国内自主开发的数据可视化平台,因其方便好用而受到广大用户的使用和好评.现今CBoard有社区版和企业版两个版本,本文所述为社区版的0.4.2版本.注意:所需的一切资源以及相关参考链接都 ...
- Django项目同步到码云
本篇博客主要记录下将刚刚初始化后的Django项目部署到码云中,首先我们需要到码云中注册一个账号,下面会讲解下如何在码云中建立一个仓库,再将其克隆到本地.最后将本地的项目推送到码云的仓库中. 码云内初 ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(三)
本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(二)>,不清楚的请到我的博客空间查看后再看本篇博客,上面两篇博客成功创建了一个简单的SpringCloud项目 ...
- For循环的几个练习
1.括号里面只能放加或减,如果要使等式成立,括号里面应该放什么运算符12()34()56()78()9 = 59 2.蓝球弹起的高度篮球从10米高的地方落下,每次弹起的高度是原来的0.3倍,问弹跳10 ...
- 8. react 基础 - props 默认值和类型限制 与 Props , State , render 函数 关系
一. PropTypes 与 DefaultProps 官方文档 1. PropTypes 属性校验 引入 PropTypes import PropTypes from 'prop-types'; ...