Jenkins 执行job通知飞书机器人

发布于:2023-01-04 ⋅ 阅读:(1537) ⋅ 点赞:(1)

目录

一、使用场景

二、实现方式

(一)自由项目

(二)pipeline项目

1.pipeline脚本

三、常见问题:

1.找不到对应环境

2.jenkins 环境变量配置

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

4.定时SCM

5.pipeline全局变量

6.pipeline语法


一、使用场景

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

二、实现方式

(一)自由项目

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

例如:python脚本

# -*- encoding: utf-8 -*-
"""
@Author  : liyinchi
@File    : feishu.py
@Time    : 2022/4/30
@Remark :飞书通知
"""
import sys
import requests
import datetime

#定义python系统变量
JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]

# 获取当前系统时间 
current_time = datetime.datetime.now()
# 飞书机器人的webhook地址
url = 'https://open.feishu.cn/open-apis/bot/v2/hook/xxxx'
method = 'post'
headers = {'Content-Type':'application/json'}

data = {
    "msg_type": "interactive",
    "card": {
        "config": {
                "wide_screen_mode": True,
                "enable_forward": True
        },
        "elements": [{
                "tag": "div",
                "text": {
                        "content": f"【测试完毕】{current_time}", # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                        "tag": "lark_md"
                }
        }, {
                "actions": [{
                        "tag": "button",
                        "text": {
                                "content": "查看测试报告", # 这是卡片的按钮,点击可以跳转到url指向的allure路径
                                "tag": "lark_md"
                        },
                        "url": f"{JOB_URL}/allure/", # JOB_URL 调用python定义的变量,该url是服务器下的allure路径
                        "type": "default",
                        "value": {}
                }],
                "tag": "action"
        }],
        "header": {
                "title": {
                        "content": JOB_NAME + "构建报告", # JOB_NAME 调用python定义的变量,这是卡片的标题
                        "tag": "plain_text"
                }
        }
    }
}
res= requests.request(method=method,url=url,headers=headers,json=data)
print(res)
print(res.json())

jenkins job shell

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

python feisuh.py $JENKINS_URL $JOB_NAME

jenkins可用的环境变量列表 

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

系统设置》插件管理

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

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

#!/bin/bash
JOB_URL="${JENKINS_URL}job/${JOB_NAME}"
getBuildState(){
  buildNr=$1
  curl -u #jenkins账号密码信息  ${JOB_URL}/${buildNr}/api/json |grep -Po '"result":\s*"\K\w+'
}

state=$(getBuildState ${BUILD_NUMBER}  )
string1=$BUILD_DISPLAY_NAME
string2=$JOB_BASE_NAME
nowTime=$(date "+%Y-%m-%d %H:%M:%S")

echo ${state}

if [[ "x${state}" == "xSUCCESS" ]] ; then
   curl -X POST -H "Content-Type: application/json" \
        -d '{"msg_type":"post","content": {"post": {"zh_cn": {"title": "发布结果通知","content": [[{"tag": "text","text": "'"应用:本群通知专用\n系统:$string2\n构建:$string1\n状态:成功\n日期:$nowTime"'"}]]} } }}' \
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx
else
   curl -X POST -H "Content-Type: application/json" \
        -d '{"msg_type":"text","content":{"text":"'"应用:本群通知专用\n系统:$string2\n构建:$string1\n状态:失败\n日期:$nowTime"'"}}' \
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx
fi

效果:

(二)pipeline项目

1.pipeline脚本

pipeline {
    agent any

    stages {
        stage('feishu') {
            steps {
                echo 'run'
                sh label: 'python install', script: 'pip3 install requests'
                sh label: 'pwd', script: 'pwd' 
                sh label: 'python3', script: 'python3 feishu.py ${JENKINS_URL} ${JOB_NAME}-${BUILD_NUMBER}'
            }
        }
    }
}

 

三、常见问题:

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

 

每隔5分钟构建一次
H/5 * * * *

每两小时构建一次
H H/2 * * *

每天中午12点定时构建一次
H 12 * * *

每天下午18点定时构建一次
H 18 * * *

在每个小时的前半个小时内的每10分钟
H(0-29)/10 * * * *

每两小时45分钟,从上午9:45开始,每天下午3:45结束
45 9-16/2 * * 1-5

每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
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并配置环境变量

本文含有隐藏内容,请 开通VIP 后查看