groovy 脚本实例 调整k8s的副本数定时任务
调整k8s的副本数定时任务
package platform
node('ecs_wuhan_docker') {
println "${BUILD_URL}console"
def wxKey = 'xxxxxx'
def proposerName = PROPOSER_NAME
def proposerMobile = PROPOSER_MOBILE
// pause,start
def type = OPT_TYPE
try {
stage('update pod') {
if (type == 'pause') {
changeWorkerNumbers(ENVIRONMENT_NAME, 0)
wxNotice("${proposerName}暂停:${ENVIRONMENT_NAME}", wxKey, proposerMobile)
executeSql("update T_ENVIRONMENT_MANAGER set ENVIRONMENT_STATUS = 'pause' where ENVIRONMENT_NAME = '${ENVIRONMENT_NAME}'")
} else {
changeWorkerNumbers(ENVIRONMENT_NAME, 1)
wxNotice("${proposerName}启动:${ENVIRONMENT_NAME}", wxKey, proposerMobile)
executeSql("update T_ENVIRONMENT_MANAGER set ENVIRONMENT_STATUS = 'running', UPDATE_DATE = NOW() where ENVIRONMENT_NAME = '${ENVIRONMENT_NAME}'")
}
}
} catch (e) {
wxFailNotice(wxKey, proposerName)
throw e
} finally {
println "${BUILD_URL}console"
deleteDir()
}
}
def executeSql(sql) {
def remote = [:]
remote.name = 'mysqlServer'
remote.host = "192.168.61.52"
remote.allowAnyHosts = true
remote.user = "root"
remote.password = "A09QXN2Ds1w5NDSN"
sshCommand remote: remote, failOnError: false, command: "mysql -uroot -pYuaNian@2999! -D ecs-cicd -e \"${sql}\""
}
def wxFailNotice(wxKey, proposerName) {
def text = "<font color=info>【${proposerName}的${JOB_NAME}】</font>修改副本数<font color=warning>失败!!!</font>\\n >[查看控制台](${CICD_SERVER_URL}'/pipeline/job/consolesHTML/'${jobName}'/'${BUILD_NUMBER})"
sh """curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='${wxKey}'' -H 'Content-Type: application/json' -d '{ "msgtype": "markdown", "markdown": { "content": "${text}", } }'"""
sh """curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='${wxKey}'' -H 'Content-Type: application/json' -d '{ "msgtype": "text", "text": { "mentioned_mobile_list":["18201292571"] } }'"""
}
def wxNotice(msg, wxKey, proposerMobile) {
sh """
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${wxKey}' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "${msg}",
"mentioned_mobile_list":["${proposerMobile}"]
}
}'
"""
}
def changeWorkerNumbers(environmentName, changeWorkNumber) {
sh "rancher kubectl scale --all StatefulSet -n ${environmentName} --replicas=${changeWorkNumber} || echo 'skip'"
sh "rancher kubectl scale --all deployment -n ${environmentName} --replicas=${changeWorkNumber}"
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!