• Jenkins 执行job通知飞书机器人


    目录

    一、使用场景

    二、实现方式

    (一)自由项目

    (二)pipeline项目

    1.pipeline脚本

    三、常见问题:

    1.找不到对应环境

    2.jenkins 环境变量配置

    3.修改jenkins时区修改为中国(上海时区)

    4.定时SCM

    5.pipeline全局变量

    6.pipeline语法


    一、使用场景

            在Jnekins执行构建中、后自动触发飞书机器人通知

    二、实现方式

    (一)自由项目

    方法一:在jenkins job 中shell命令运行某些脚本

    例如:python脚本

    1. # -*- encoding: utf-8 -*-
    2. """
    3. @Author : liyinchi
    4. @File : feishu.py
    5. @Time : 2022/4/30
    6. @Remark :飞书通知
    7. """
    8. import sys
    9. import requests
    10. import datetime
    11. #定义python系统变量
    12. JOB_URL = sys.argv[1]
    13. JOB_NAME = sys.argv[2]
    14. # 获取当前系统时间
    15. current_time = datetime.datetime.now()
    16. # 飞书机器人的webhook地址
    17. url = 'https://open.feishu.cn/open-apis/bot/v2/hook/xxxx'
    18. method = 'post'
    19. headers = {'Content-Type':'application/json'}
    20. data = {
    21. "msg_type": "interactive",
    22. "card": {
    23. "config": {
    24. "wide_screen_mode": True,
    25. "enable_forward": True
    26. },
    27. "elements": [{
    28. "tag": "div",
    29. "text": {
    30. "content": f"【测试完毕】{current_time}", # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
    31. "tag": "lark_md"
    32. }
    33. }, {
    34. "actions": [{
    35. "tag": "button",
    36. "text": {
    37. "content": "查看测试报告", # 这是卡片的按钮,点击可以跳转到url指向的allure路径
    38. "tag": "lark_md"
    39. },
    40. "url": f"{JOB_URL}/allure/", # JOB_URL 调用python定义的变量,该url是服务器下的allure路径
    41. "type": "default",
    42. "value": {}
    43. }],
    44. "tag": "action"
    45. }],
    46. "header": {
    47. "title": {
    48. "content": JOB_NAME + "构建报告", # JOB_NAME 调用python定义的变量,这是卡片的标题
    49. "tag": "plain_text"
    50. }
    51. }
    52. }
    53. }
    54. res= requests.request(method=method,url=url,headers=headers,json=data)
    55. print(res)
    56. print(res.json())

    jenkins job shell

    1. python feishu.py ${JENKINS_URL} "jenkins-${JOB_NAME}-${BUILD_NUMBER}"
    2. python feisuh.py $JENKINS_URL $JOB_NAME

    jenkins可用的环境变量列表 

    2.方法二:安装 Post build task 插件

    系统设置》插件管理

    Jenkins job中 》增加构建后操作步骤》Post build task

    在插件中写入脚本,内容如下:

    1. #!/bin/bash
    2. JOB_URL="${JENKINS_URL}job/${JOB_NAME}"
    3. getBuildState(){
    4. buildNr=$1
    5. curl -u #jenkins账号密码信息 ${JOB_URL}/${buildNr}/api/json |grep -Po '"result":\s*"\K\w+'
    6. }
    7. state=$(getBuildState ${BUILD_NUMBER} )
    8. string1=$BUILD_DISPLAY_NAME
    9. string2=$JOB_BASE_NAME
    10. nowTime=$(date "+%Y-%m-%d %H:%M:%S")
    11. echo ${state}
    12. if [[ "x${state}" == "xSUCCESS" ]] ; then
    13. curl -X POST -H "Content-Type: application/json" \
    14. -d '{"msg_type":"post","content": {"post": {"zh_cn": {"title": "发布结果通知","content": [[{"tag": "text","text": "'"应用:本群通知专用\n系统:$string2\n构建:$string1\n状态:成功\n日期:$nowTime"'"}]]} } }}' \
    15. https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx
    16. else
    17. curl -X POST -H "Content-Type: application/json" \
    18. -d '{"msg_type":"text","content":{"text":"'"应用:本群通知专用\n系统:$string2\n构建:$string1\n状态:失败\n日期:$nowTime"'"}}' \
    19. https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx
    20. fi

    效果:

    (二)pipeline项目

    1.pipeline脚本

    1. pipeline {
    2. agent any
    3. stages {
    4. stage('feishu') {
    5. steps {
    6. echo 'run'
    7. sh label: 'python install', script: 'pip3 install requests'
    8. sh label: 'pwd', script: 'pwd'
    9. sh label: 'python3', script: 'python3 feishu.py ${JENKINS_URL} ${JOB_NAME}-${BUILD_NUMBER}'
    10. }
    11. }
    12. }
    13. }

     

    三、常见问题:

    1.找不到对应环境

    问题描述:linux命令可识别python3环境,但在jenkins job 中执行python识别不到python

    原因:jenkins全局环境配置需要在全局工具配置中设置 

    解决办法:

    ①找到python3所在路径,执行脚本前写入绝对路径

     jenkins job shell命令中写入/usr/bin/python3 feishu.py

    2.jenkins 环境变量配置

    系统配置>系统配置>环境变量配置

    3.修改jenkins时区修改为中国(上海时区)

    系统管理》脚本命令行

    System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

    4.定时SCM

    MINUTE HOUR DOM MONTH DOW

     

    1. 每隔5分钟构建一次
    2. H/5 * * * *
    3. 每两小时构建一次
    4. H H/2 * * *
    5. 每天中午12点定时构建一次
    6. H 12 * * *
    7. 每天下午18点定时构建一次
    8. H 18 * * *
    9. 在每个小时的前半个小时内的每10分钟
    10. H(0-29)/10 * * * *
    11. 每两小时45分钟,从上午9:45开始,每天下午3:45结束
    12. 45 9-16/2 * * 1-5
    13. 每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
    14. H H(9-16)/2 * * 1-5

     

    5.pipeline全局变量

    http://110.xxx.xxx.59:8000/job/pipeline-lark/pipeline-syntax/globals

    6.pipeline语法

    参考:

    超详细Docker安装Jenkins

    docker-jenkins安装python并配置环境变量

  • 相关阅读:
    Ribbon架构篇 - ZoneAvoidanceRule
    基于cifar数据集合成含开集、闭集噪声的数据集
    【若依(ruoyi)】设置主题样式
    九、【VUE-CLI】浏览器本地存储(待办事项案例 · 第二版)
    耗时4个月,阿里架构师打造Java面试突击文档,10位朋友已拿offer
    Android控件全解手册 - RadioGroup、RadioButton和FloatingActionButton全解
    【Java 进阶篇】JQuery 遍历 —— 无尽可能性的 `each` 之旅
    i.MX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2,0)
    聊聊HttpComponentsHttpInvokerRequestExecutor
    Reactor And Gev 详解 通俗易懂
  • 原文地址:https://blog.csdn.net/u013302168/article/details/126542557