groovy 脚本实例 调整k8s的副本数定时任务

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}"
}

posted @   liwenchao1995  阅读(203)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示