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期-孙克旭」一起进行文档协作

相关推荐
wdfk_prog13 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
七夜zippoe13 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥13 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿14 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘14 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy64815 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满15 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠15 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio15 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice15 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习