jenkins piplien ci 以及构建通知企业微信

447 阅读1分钟

jenkinsfiels 文件

try{
node{
    stage("prepare"){
         checkout scm
         def start = new Date().format('yyyy-MM-dd HH:mm:ss')
         def pom = readMavenPom file: 'pom.xml'
         echo " group: ${pom.groupId} , artifactId: ${pom.artifactId}, version: ${pom.version} "
         build_name= "cc.jar"

         // 集群空间 这些参数是在jenkins里面配置的
         namespace = "${params.namespace}"
         // 项目名称
         appName= "${params.appName}"
         // 项目名称
         configCenter= "${params.configCenter}"
         // 镜像名称
         image_name = "${namespace}-${appName}"
         // 应用group
         container_group= image_name
         // 端口
         server_port= "${params.serverPort}"

         script {
             build_tag= sh(returnStdout:true, script: 'git rev-parse --short HEAD').trim()
         }
         seconds = (System.currentTimeMillis()/1000).intValue()
         // 容器名称
         conatianer_name = "${container_group}-${build_tag}-${seconds}"

    }
    stage("test"){
      echo "test stage , skip "
    }
    stage ("build"){
        sh " echo 'success'";
        sh 'echo Build stage ...'
        sh 'export CHAT_WEBHOOK_KEY=cc; sh /home/send_message.sh wechat "测试环境正在构建" "构建第一步 successfully completed..."'
        sh "mvn clean package -U  -DskipTests -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"
        sh " cp  -rf ${WORKSPACE}/lianli-beauty-lyh-start/target/${build_name}  /home/zouxulei/local/script/dockers/ "
        sh "docker build -t ${image_name}:${build_tag}"+
                    " --build-arg BUILD_TARGET=${build_name} /home/local/script/dockers/"
    }
    stage("clear_old"){
        sh 'echo Test stage ...'
        sh 'export CHAT_WEBHOOK_KEY=cc; sh /home/send_message.sh wechat "流水线第二步" "构建第二步 successfully completed..."'
        sh "docker stop \$(docker ps -aq --no-trunc --filter name=${container_group}) || echo 'stop fail' "
        sh "docker rm \$(docker ps -a -q --no-trunc --filter name=${container_group}) || echo 'container rm failed' "
        sh   "find /home/local/script/dockers/ -mtime +1 -name \"*.jar\" -exec rm -Rf {} \\; "
    }
    stage("deploy"){
        sh "sleep 5"
        sh 'echo deploy stage ...'
        sh 'export CHAT_WEBHOOK_KEY=cc; sh /home/send_message.sh wechat "流水线第三步" "最终构建 successfully completed..."'
        def increase_port= Math.abs("${image_name}-${build_tag} ".hashCode() % 800)
        sh "docker run -d -e JAVA_OPTS=\"-Xmx1G -Dspring.cloud.nacos.config.server-addr=${configCenter}  -Dspring.cloud.nacos.config.namespace=${namespace}  -Dspring.cloud.nacos.discovery.port=${server_port} \" -p ${server_port}:8080 " +
                "  -v /home/data/logs:/app/logs -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro --name=${conatianer_name}    ${image_name}:${build_tag} "
    }

}
}catch(e){
    currentBuild.result = 'FAILURE'
}
if(currentBuild.result == 'FAILURE') {
	node(env.BuildMachineLabel){
		stage("Post Build") {
				// 在使用send_message脚本之前需要先配置CHAT_WEBHOOK_KEY
				  sh 'export CHAT_WEBHOOK_KEY=ss; sh /home/send_message.sh wechat "构建失败" "failed completed..."'
		} // stage
	} // node
} // if

构建通知相关

第一步 sendmessage.sh 脚本文件


#!/bin/sh

usage(){
echo "usage: $0 TYPE TITLE CONTENT [URL]"
echo "       TYPE: wechat|dingtalk"
}

TYPE="$1"
TITLE="$2"
CONTENT="$3"
URL="$4"

CHAT_CONTENT_TYPE='Content-Type: application/json'
DEFAULT_PIC_URL="https://img-blog.csdnimg.cn/20191227152859635.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9saXVtaWFvY24uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70"
DINGTALK_DEFAULT_WORDS=" [LiuMiaoMsg]"
if [ $# -lt 3 ]; then
usage
exit 1
fi

if [ _"${TYPE}" = _"wechat" ]; then
CHAT_WEBHOOK_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key'
elif [ _"${TYPE}" = _"dingtalk" ]; then
CHAT_WEBHOOK_URL='https://oapi.dingtalk.com/robot/send?access_token'
else
usage
exit 1
fi

if [ _"${CHAT_WEBHOOK_KEY}" = _"" ]; then
echo "please make sure CHAT_WEBHOOK_KEY has been exported as environment variable"
usage
exit 1
fi
#!换成自己的构建地址
if [ _"${URL}" = _"" ]; then
URL='https://blog.csdn.net/sha1024/article/details/118600085?spm=1001.2014.3001.5501'

fi

echo "## send message for : ${TYPE}"
if [ _"${TYPE}" = _"wechat" ]; then
curl "${CHAT_WEBHOOK_URL}=${CHAT_WEBHOOK_KEY}" \
-H "${CHAT_CONTENT_TYPE}" \
-d '
{
"msgtype": "news",
"news": {
"articles" : [
{
"title" : "'"${TITLE}"'",
"description" : "'"${CONTENT}"'",
"url" : "'"${URL}"'",
"picurl" : "'"${DEFAULT_PIC_URL}"'"
}
]
}
}'
elif [ _"${TYPE}" = _"dingtalk" ]; then
curl "${CHAT_WEBHOOK_URL}=${CHAT_WEBHOOK_KEY}" \
-H "${CHAT_CONTENT_TYPE}" \
-d '
{
"msgtype": "link",
"link": {
"text": "'"${CONTENT}${DINGTALK_DEFAULT_WORDS}"'",
"title": "'"${TITLE}"'",
"picUrl": "'"${DEFAULT_PIC_URL}"'",
"messageUrl": "'"${URL}"'"
}
}'
else
usage
exit 1
fi

第二步 登录自己的服务器

登录自己的服务器,touch send_message.sh vim send_message.sh 把上面的文本内容添加进去 image.png

第三步 修改jenkinsfiles 脚本

在原先的脚本里面加入这两行

  sh 'echo Build stage ...'
  sh 'export CHAT_WEBHOOK_KEY=cc; sh /home/wusha/send_message.sh wechat "测试环境正在构建" "构建第一步 successfully completed..."'

主要是修改里面的CHAT_WEBHOOK_KEY 这个企业微信构建机器人的key 替换成你自己企业微信群机器人的key,然后执行流水线就可以成功推送了。 CHAT_WEBHOOK_KEY = key image.png image.png