今日作业:
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 代码目录不存在"