2022-01-03 day62 pipaline流水线作业

今日作业:

1.pipeline实现流程:

拉取代码-->编译-->部署测试-->发送测试通知-->确认是否部署-->部署服务-->发送部署结果通知

pipeline {

    agent any

parameters {

        gitParameter branch: '', branchFilter: '.*', defaultValue: 'v1.0', description: '请选择要发布的版本:', name: 'git_version', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_TAG'

        choice choices: ['deploy', 'rollback'], description: '''请选择操作方式:

            deploy --> 发布

            rollback --> 回滚''',

name: 'deploy_env'

    }

    stages {

        stage('拉取代码'){

            steps {

                checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], extensions: [], userRemoteConfigs: [[url: '[email protected]:root/java-helloworld.git']]])

            }

        }

stage('编译'){

steps {

sh "cd /var/lib/jenkins/workspace/${JOB_NAME} && /opt/maven/bin/mvn clean package"

}

}

stage('部署测试'){

steps {

sh "echo 请测试功能!"

}

}

stage("是否部署"){

            steps{

                input message: '确定要部署吗?', ok: 'ok'

            }

        }

stage('部署'){

steps {

sh "bash -x /opt/deploy_java.sh"

}

}

stage('通知'){

steps {

sh "echo 通知成功"

}

post {

                success {

                    dingtalk (

                        robot: '1',

                        type: 'TEXT',

                        text: [

                            '${JOB_NAME} 构建成功!',

                            '去看看吧,服务器炸了'

                        ],

                        at: [

                            '15817118156'

                        ]

                    )

                }

            }

}

    }

}

2.部署测试的需求:

- 判断编译后的war包是否生成

- 判断编译后的war包版本是否匹配参数化选择的版本

- 判断远程的tomcat是否启动

- 判断远程的tomcat代码目录是否存在

- 将判断结果保存到日志里

3.将部署测试的结果发送到钉钉上

pipeline {

    agent any

parameters {

        gitParameter branch: '', branchFilter: '.*', defaultValue: 'v1.0', description: '请选择要发布的版本:', name: 'git_version', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_TAG'

        choice choices: ['deploy', 'rollback'], description: '''请选择操作方式:

            deploy --> 发布

            rollback --> 回滚''',

name: 'deploy_env'

    }

    stages {

        stage('拉取代码'){

            steps {

                checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], extensions: [], userRemoteConfigs: [[url: '[email protected]:root/java-helloworld.git']]])

            }

        }

stage('编译'){

steps {

sh "cd /var/lib/jenkins/workspace/${JOB_NAME} && /opt/maven/bin/mvn clean package"

}

}

stage('部署测试'){

steps {

sh "bash /opt/5.sh"

}

}

stage("是否部署"){

            steps{

                input message: '确定要部署吗?', ok: 'ok'

            }

        }

stage('部署'){

steps {

sh "bash -x /opt/deploy_java.sh"

}

}

stage('通知'){

steps {

sh "echo 通知成功"

}

post {

                success {

                    dingtalk (

                        robot: '1',

                        type: 'TEXT',

                        text: [

                            '${JOB_NAME} 构建成功!',

                            '去看看吧,服务器炸了'

                        ],

                        at: [

                            '15817118156'

                        ]

                    )

                }

            }

}

    }

}

使用zabbix那天内容,shell脚本发送钉钉消息

/opt/5.sh

#!/bin/bash

tag=$git_version

[ -f /var/lib/jenkins/workspace/${JOB_NAME}/target/*.war ] && echo "war包已经生成" || echo "war没有生成"

version=$(awk -F'[ <]' 'NR==6{print$4}' "/var/lib/jenkins/workspace/${JOB_NAME}/target/hello-world-war-${tag}/index.jsp")

if [ ${git_version} -eq ${version} ];then

    title1=$(echo "选择版本是${git_version}")

    titel2=$(echo "拉取的版本是${version}")

    title3=$(echo "war包版本已经匹配参数化选择的版本")

    curl 'https://oapi.dingtalk.com/robot/send?access_token=c9f939509f67deb5b7dbff3abc34669a6e00a3e18308db1a0abb7f9724593aea' \

    -H 'Content-Type: application/json' \

    -d '{"msgtype": "text","text": {"content":"'"jenkins${title1}\n${title2}\n${title3}"'"}}'

else

  title1=$(echo "选择版本是${git_version}")

    tile2=$(echo "拉取的版本是${version}")

    tile3=$(echo "war包版本与匹配参数化选择的版本不一致")

    curl 'https://oapi.dingtalk.com/robot/send?access_token=c9f939509f67deb5b7dbff3abc34669a6e00a3e18308db1a0abb7f9724593aea' \

    -H 'Content-Type: application/json' \

    -d '{"msgtype": "text","text": {"content":"'"jenkins${title1}\n\n${title2}\n\n${title3}"'"}}'

fi

tomcat=$(ssh 10.0.0.7 "netstat -lntup |grep 8080|wc -l")

if [ ${tomcat} -eq 1 ];then

    title=$(echo "tomcat已经启动")

    curl 'https://oapi.dingtalk.com/robot/send?access_token=c9f939509f67deb5b7dbff3abc34669a6e00a3e18308db1a0abb7f9724593aea' \

    -H 'Content-Type: application/json' \

    -d '{"msgtype": "text","text": {"content":"'"jenkins${title}"'"}}'


else

  tile=$(echo "tomcat启动失败")

    curl 'https://oapi.dingtalk.com/robot/send?access_token=c9f939509f67deb5b7dbff3abc34669a6e00a3e18308db1a0abb7f9724593aea' \

    -H 'Content-Type: application/json' \

    -d '{"msgtype": "text","text": {"content":"'"jenkins${title}"'"}}'

fi

[ -f ssh 10.0.0.7 "/opt/tomcat/webapps/hello/index.jsp"] && echo "tomcat代码目录存在" || echo "tomcat 代码目录不存在"

你可能感兴趣的:(2022-01-03 day62 pipaline流水线作业)