首页 > 其他分享 >4.5 共享库之钉钉消息推送

4.5 共享库之钉钉消息推送

时间:2024-07-09 13:44:54浏览次数:9  
标签:4.5 插件 new env changeString Jenkins 推送 库之钉 def

起因:执行完流水线后进行一定程度的消息推送,所以选择钉钉进行jenkins构建结构的消息推送

下载配置相关依赖插件

相关环境:

  • Jenkins 2.277.3,安装文档见上篇
  • DingTalk 插件 2.4.3
  • build user vars plugin 插件 1.7
  1. 在Jenkins中安装钉钉插件DingTalkopen in new window

    ⚠️ 请确保你的 Jenkins 版本 >= 2.176.4

  2. 钉钉机器人配置,说明文档open in new window

    找到 Jenkins 首页 >> 系统管理 >> 钉钉,我的配置如下图

    image-20210426164341273

    ⚠️ ​注意手动输入机器人的id,不要自动生成,否则重启后,robot的id将发生变化

  3. 安装build user vars pluginopen in new window插件,插件可能有相关版本依赖,需要重启一下 Jenkins 才能继续安装

    在流水线中,使用wrap,获取BUILD_USER变量

    wrap([$class: 'BuildUser']) {
    }
    
     

创建配置共享库

编写Groovy脚本

项目目录结构如下:

$ tree jenkinslibrary
jenkinslibrary
├── README.md
└── src
    └── org
        └── devops
            └── dingmes.groovy

3 directories, 2 files
 

dingme.groovy文件内容如下

package org.devops

def GetChangeString() {
    MAX_MSG_LEN = 100
    def changeString = ""
    def changeLogSets = currentBuild.changeSets
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            truncated_msg = entry.msg.take(MAX_MSG_LEN)
            commitTime = new Date(entry.timestamp).format("yyyy-MM-dd HH:mm:ss")
            changeString += "> - ${truncated_msg} [${entry.author} ${commitTime}]\n"
        }
    }
    if (!changeString) {
        changeString = "> - No new changes"
    }
    return changeString
}

def DingdingReq(RobotID, Status) {
    wrap([$class: 'BuildUser']) {
        def changeString = GetChangeString()
        dingtalk (
            robot: RobotID,
            type: 'MARKDOWN',
            title: '你有新的消息,请注意查收',
            text: [
                "### 构建信息",
                "> - 应用名称:**${env.JOB_NAME}**",
                "> - 构建结果:**${Status}**",
                "> - 当前版本:**${env.BUILD_NUMBER}**",
                "> - 构建发起:**${env.BUILD_USER}**",
                "> - 持续时间:**${currentBuild.durationString}**",
                "> - 构建日志:[点击查看详情](${env.BUILD_URL}console)",
                "### 更新记录:",
                "${changeString}"
            ],
            at: [
                'xxxxxxxxxxx'
            ]
        )
    }
}
 

文本中xxxxxxxxxxx请根据实际情况更换为钉钉群组里面,具体人的手机号,可以添加多个

在 Jenkins 中配置将共享库

找到 Jenkins 首页 >> 系统管理 >> Global Pipeline Libraries,我的配置如下图

image-20210426171913350

在流水线中导入共享库

导入方法@Library('pipeline-library-demo')_,这样就可以使用共享库中的代码了

具体的 pipeline 脚本如下:

#!groovy

@Library('pipeline-library-demo')_

//func from shareibrary
def dingmes = new org.devops.dingmes()

//env
String branchName = "master"
String gitlabCredentialsId = "xxx"
String gitUrl = "http://xxx/xxx/jenkinslibrary.git"
String robotId = "2e0e11c4-2211-4687-b317-cacf58197288"
pipeline { agent any stages { stage('Git Clone') { steps { git branch: "${branchName}", credentialsId: "${gitlabCredentialsId}", url: "${gitUrl}" } } } post { success { script { dingmes.DingdingReq(robotId, "构建成功 ✅") } } failure { script { dingmes.DingdingReq(robotId, "构建失败 ❌") } } } } 
 

至此完成........

 

遇到的问题

  1. currentBuild.durationString的值传递不进去,一开始先用withEnv包裹一下

    后来找到原因 Groovy 在单引号的字符串里面是不支持插值的,所以要用双引号

    单引号中的env.JOB_NAME会引用失败,双引号则引用成功

    单、双引号引用JOB_NAME都引用成功

    推荐所有变量都用""双引号

    三引号也是一样,''' 三单引号不支持插值,"""三双引号支持插值

 

标签:4.5,插件,new,env,changeString,Jenkins,推送,库之钉,def
From: https://www.cnblogs.com/david-cloud/p/18291621

相关文章

  • springboot整合微信公众号实现模版消息推送
    欢迎来到我的博客,代码的世界里,每一行都是一个故事......
  • MathType7.6.4.58中文永久破解版激活码许可证 附带安装包下载地址
    亲爱的学霸们和学术大拿们,你们是否有过为数学公式的排版烦恼的时刻?今天我要向你们介绍一个神奇的软件—MathType,它能够让你轻松地编辑、复制和粘贴复杂的数学公式,无论是在Word文档、PowerPoint演示文稿还是任何需要数学表达的地方!MathType最新mac官方版本下载如下:https://wm......
  • 关注推送---Feed流,推模式实现的个人分析及其思考。
    本篇文章记录我们实际开发过程中,关注推送场景的个人思考,以及解析。文章目录前言一、关注推送是什么?是什么是Feed流?二、解决关注推送问题的技术方案1.理论模型的选取2.数据类型的选取三、理论模型的选取三、数据类型的选取总结前言⁣⁣⁣⁣⁣⁣⁣⁣本篇文章......
  • MinGW GCC 5.3.0 编译OpenCV4.5.5 运行到imshow时崩溃
    Windows 下通过mingw32-make编译opencv4.5.5,经过一系列问题解决后发现其他正常,imshow崩溃.GCC版本太低原因,换更高版本的GCC解决.毕竟GCC5.3.0是2015年发行的,opencv4.5.5是2020年发行的尝试换GCC i686-8.1.0-release-posix-sjlj-rt_v6-rev0编译,调用imshow时正常运行,并且......
  • SM4国产加密CBC算法快速预览与Framework4.5版本对接
       针对日常加密算法,大致分为对称加密,非对称加密,哈希函数(MD5),其中对称加密比较常见的,如AES、DES、3DES,对称加密算法是指加密和解密采用相同的密钥口,是可逆的,实习那会用的就是DES,网上很多现成的轮子。此外非对称加密算法,常用的如RSA算法、‌ECC算法、‌DSA等算法,非对称......
  • 使用开源ntfy消息推送服务发布通知实现全平台接收通知
    说明:ntfy源代码:https://github.com/binwiederhier/ntfy.git官方未编译Windows版本,本人编译最新版本:(链接:https://pan.baidu.com/s/1pMsfqNb5FKHawTLUBTgjQA?pwd=f84u提取码:f84u)服务部署系统:WindowsServer2019或其他Windows系统简介ntfy是一个开源的消息通知服务,旨在简化消......
  • SpringBoot+mail 轻松实现各类邮件自动推送
    一、简介在实际的项目开发过程中,经常需要用到邮件通知功能。例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多。早期的时候,为了能实现邮件的自动发送功能,通常会使用JavaMail相关的api来完成。后来Spring推出的JavaMailSender工具,进一步简化了邮件的......
  • Kindle 终止中国在线服务 用户如何继续使用推送服务
    2024年6月30日,根据亚马逊公告Kindle中国电子书店正式停止云端下载服务。即日起,未下载的电子书将无法下载和阅读,用户也无法从应用商店下载KindleAPP,同时,Kindle客户服务也将停止支持。虽然Kindle中国服务停止,但用户仍可以通过切换到美区和其他地区的亚马逊账号来继续......
  • 推送标签到远程仓库的步骤
    推送标签到远程仓库的正确方式在软件开发中,标签(tag)是一种非常重要的工具,用于标记特定的版本或者里程碑。Git允许开发者在代码中创建和管理标签,并且可以将这些标签推送到远程仓库,例如GitHub,以便团队和用户能够方便地访问和使用特定版本的代码。步骤:创建标签首先,在本地仓库中......
  • Windows的Gitlab Runner搭配的PowerShell脚本:推送包到NuGet仓库
    简介GitlabRunner在Windows上运行之后,我们在.gitlab-ci.yml中编写script语句,思路和Linux是一样。但是考虑到Windows的特点,为了让程序员少接触一些知识点,以及给未来执行作业的时候预留更多的操作空间。简单说就是未来修改执行作业时候的逻辑,但是每个软件仓库根目录下的.gitlab-ci......