day073-Jenkins消息通知与pipline流水线

文章目录

  • [0. 老男孩思想-老男孩名言警句](#0. 老男孩思想-老男孩名言警句)
  • [1. Jenkins通知](#1. Jenkins通知)
    • [1.1 配置钉钉通知](#1.1 配置钉钉通知)
      • [1.1.1 安装dingtalk插件](#1.1.1 安装dingtalk插件)
      • [1.1.2 钉钉添加机器人](#1.1.2 钉钉添加机器人)
      • [1.1.3 Jenkins配置dingtalk通知](#1.1.3 Jenkins配置dingtalk通知)
    • [1.2 配置企业微信通知](#1.2 配置企业微信通知)
      • [1.2.1 企业微信添加机器人](#1.2.1 企业微信添加机器人)
      • [1.2.2 Jenkins配置企业微信通知](#1.2.2 Jenkins配置企业微信通知)
  • [2. Jenkins分布式](#2. Jenkins分布式)
    • [2.1 添加node节点](#2.1 添加node节点)
    • [2.2 使用子节点](#2.2 使用子节点)
  • [3. Jenkins-pipline流水线](#3. Jenkins-pipline流水线)
    • [3.1 简单案例](#3.1 简单案例)
    • [3.2 实现docker-java项目](#3.2 实现docker-java项目)
      • [3.2.1 生成代码工具](#3.2.1 生成代码工具)
      • [3.2.2 编写Jenkinsfile文件](#3.2.2 编写Jenkinsfile文件)
      • [3.2.3 修改Jenkinsfile](#3.2.3 修改Jenkinsfile)
  • [4. 思维导图](#4. 思维导图)

0. 老男孩思想-老男孩名言警句

  • 技术的提升仅是量的积累,思想的提升才是质的飞跃
  • 成功绝非偶然,而是正确选择和持续努力后的必然
  • 成功最有效的途径就是不断的和有经验的、成功的人学习
  • 学习成功人士的思维和习惯,是成功的捷径
  • 要做别人不敢做、做不到的事,才能从竞争者胜出
  • 自己最不想改变的,往往是自己最需要改变的;要多接收、多学习他人的思维或习惯
  • 找一个能让自己快速成长的企业,比多1-2千工资更重要
  • 身份影响认知,气度主导格局,性格决定命运
  • 超越自我,就是做自己不想做的事
  • 永远不要试图改变一个人,只能去包容他
  • 如果自己不能成为大佬,可以先成为大佬的赞美者

1. Jenkins通知

1.1 配置钉钉通知

1.1.1 安装dingtalk插件

  • dingtalk插件:dingding-notifications.hpi 链接: https://pan.baidu.com/s/1-uXzS44lywEpcOcI4Rzfww?pwd=7y2x 提取码: 7y2x
  • 将插件复制到Jenkins插件目录下:/var/lib/jenkins/plugins
  • 重启Jenkins:systemctl restart jenkins.service

1.1.2 钉钉添加机器人

1.1.3 Jenkins配置dingtalk通知

1.2 配置企业微信通知

  • 企业微信插件:qy-wechat-notification.jpi 链接: https://pan.baidu.com/s/1nPekUKoqtnre4lpKhehC_w?pwd=n9ht 提取码: n9ht
  • 上传插件并重启Jenkins

1.2.1 企业微信添加机器人

  • webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dad28fdb-8209-4c8a-abad-47a2abaee105

1.2.2 Jenkins配置企业微信通知

  • 测试

2. Jenkins分布式

  • 主节点安装Jenkins服务
  • 从节点安装jdk即可

2.1 添加node节点

2.2 使用子节点

3. Jenkins-pipline流水线

根据jenkins的⼯作框架,通过"代码的⽅式",将多个任务联合起来

  • pipline代码结构:

3.1 简单案例

  • pipline代码:
json 复制代码
pipeline {
    agent any
    environment {
        host="oldboylinux.com"
    }
    stages {
        stage('1.Open') {
            steps {
                echo "open eyes  $host"
            }
        }
  
        stage('2.CloseAlarm') {
            steps {
                echo "close alarm  $host"
            }
        }
  
        stage('3.Go_to_sleep') {
            steps {
                echo "go-to-sleep  $host"
            }
        }
    }
}

3.2 实现docker-java项目

  1. Jenkins拉取Gitlab代码
  2. Jenkins调⽤Sonarqube/sonar scan 代码质量分析与编译
  3. docker build ,推送镜像到仓库
  4. Jenkins 调⽤部署删除旧的容器,启动新的容器.
  5. 企业微信,钉钉,发送上线结果

3.2.1 生成代码工具

3.2.2 编写Jenkinsfile文件

  • 在代码目录下:vim Jenkinsfile
json 复制代码
pipeline {
    agent any
    stages {
        stage('1.编译与扫描') {
                // 拉取代码
            steps {
               sh  ''' /app/tools/maven/bin/mvn clean package
                '''
            }
        }
        stage('2.docker build') {
           steps {
             sh  '''
             docker build  -t harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}   .
             docker login  -uadmin -pLidao996   harbor.oldboy.cn
             docker push harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
                 '''

           }

        }


        stage('3.deploy') {
             steps {
                sh  '''
                ip_list=10.0.0.81
                for pp in $ip_list
                  do
                    cnt=`ssh root@$pp docker ps -f "name=hello_*" -q |wc -l`
                    ssh root@$pp  <<-EOF
                        if [ $cnt -gt 0 ];then
                           docker ps -f "name=hello_*" -q |xargs docker rm -f
                        fi
                        docker run -d  --name hello_v1  -p 8080:8080  --restart always  harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
EOF
done
                '''
            }
        }
        }

          post {
        success{
 qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
    }
        failure{
 qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
   }
  }
}
  • 上传代码:
shell 复制代码
git add .
git commit -m "pipline"
git tag -a v2.0 -m "v2.0"
git push origine master
git push --tags

3.2.3 修改Jenkinsfile

json 复制代码
$ cat Jenkinsfile

pipeline {
    agent {  label 'maven' }
    stages {
        stage('1.编译与扫描') {
                // 拉取代码
            steps {
               sh  ''' /app/tools/maven/bin/mvn clean package
                '''
            }
        }
        stage('2.docker build') {
           steps {
             sh  '''
             docker build  -t harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}   .
             docker login  -uadmin -pLidao996   harbor.oldboy.cn
             docker push harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
                 '''

           }

        }
        stage('2.5 .确认是否部署') {

            steps {
                input '是否继续进行部署'
                }
        }


        stage('3.deploy') {
             steps {
                sh  '''
                ip_list=10.0.0.81
                for pp in $ip_list
                  do
                    cnt=`ssh root@$pp docker ps -f "name=hello_*" -q |wc -l`
                    ssh root@$pp  <<-EOF
                        if [ $cnt -gt 0 ];then
                           docker ps -f "name=hello_*" -q |xargs docker rm -f
                        fi
                        docker run -d  --name hello_v1  -p 8080:8080  --restart always  harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
EOF
done
                '''
            }
        }




        }

          post {
        success{
 qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
    }
        failure{
 qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
   }
  }
}

4. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\\r\\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作

相关推荐
不想起昵称92933 分钟前
tomcat
linux·服务器·tomcat
失因1 小时前
Web 服务详解:HTTP 与 HTTPS 配置
linux·运维·前端·http·https
cpsvps_net1 小时前
容器安全扫描工具在海外云服务器环境的集成方法
运维·服务器·安全
m0_747124531 小时前
视频输入输出模块介绍和示例
linux·音视频
qq_463944861 小时前
如何将新建的Anaconda虚拟环境导入Juputer内核中?
linux·windows·python
skywalk81632 小时前
vagrant和itamae怎么配合使用? (放弃)
运维·前端·ruby·vagrant
先天打工圣体的男人2 小时前
Linux环境gitlab多种部署方式及具体使用
运维·git·gitlab
岚天start2 小时前
iptables -L 显示无目标链规则,但是iptables-save显示仍存在链规则原因分析
linux·服务器·网络·iptables·nat·filter·mangle
七七7222 小时前
Xshell连接虚拟机密码错误解决方法
linux