项目中有更新代码之后触发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 环境并发送邮件通知的更多相关文章

  1. Jenkins指定tag发布到k8s环境

    Jenkins指定tag发布到k8s环境 1.Jenkins配置一个Pipeline 工程 首先要安装插件:https://www.cnblogs.com/Dev0ps/p/9125232.html ...

  2. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  3. jenkins pipeline构建后发送邮件通知

    jenkins pipeline构建后发送邮件通知 mail配置 进入系统配置 找到最下边的邮件通知 创建任务 Pipeline片段 post { always { bat "" ...

  4. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  5. Docker的Jenkins Pipeline工作流

    原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...

  6. Jenkins Pipeline 参数详解

    Pipeline 是什么 Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一 ...

  7. 自动化集成:Pipeline整合Docker+K8S

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...

  8. Kubernetes DevOps: Jenkins Pipeline (流水线)

    要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式.Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于 ...

  9. Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

随机推荐

  1. Linux重要命令练习之bc

  2. 【pwnable.kr】 flag

    pwnable从入门到放弃 第四题 Download : http://pwnable.kr/bin/flag 下载下来的二进制文件,对着它一脸懵逼,题目中说是逆向题,这我哪会啊... 用ida打开看 ...

  3. PHP ~ 设置和读取 Cookie

    一,设置 Cookie setcookie("user",$user,time()+3600);     // user 为用户名,$user 为变量的值   二,读取 Cooki ...

  4. Linux Shell编程case语句

    http://blog.csdn.net/dreamtdp/article/details/8048720 case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变 ...

  5. BZOJ 3442 学习小组

    题解: 神建图 普通的二分图费用流建完后 添加学生x->t 容量为k-1的边 表示尽量让x参加一个活动,剩下的k-1次机会可以不参加 #include<iostream> #incl ...

  6. 下页小希学MVC5+EF6.2 学习记录二

    目的:1 学习mvc+ef 2  写下日记也是对自己的督促 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛 ...

  7. 二十一、CI框架之MCV

    一.我们在M模型文件里面添加一个文件,代码如下: 二.在C控制器中加载模型,并调用模型函数,输出达到View,控制器代码如下: 三.在View里面输出控制器传过来的参数 四.显示效果如下: 五.我们对 ...

  8. Essay写作的六大黄金法则以及四大禁区

    虽然Essay这么难写,但是,也有一些可以拿高分的准则,本文小编就为大家分享高分Essay写作必知黄金法则,希望对想要在Essay拿高分的留学生小伙伴们有些帮助. 黄金法则1.关注相关问题的重点词汇 ...

  9. 2020PHP面试-网络篇

    一.网络协议分层 OSI七层: 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. TCP/IP四(五)层 : 物理层(主要是光电信号的传输). 数据链路层(MAC地址.以太网协议).网络层 ...

  10. CCCC 连续因子

    题意: 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列 ...