Skip to content

Pipeline 项目

Pipeline 通过 wxwork 步骤发送通知,支持脚本式和声明式两种写法。

快速开始

groovy
wxwork(
    robot: 'my-robot',
    type: 'text',
    text: ['构建成功!']
)

参数说明

参数类型必填默认值说明
robotString-机器人 ID,需与系统配置中的 ID 完全一致
typeStringtexttext / markdown / markdown_v2 / image
textList<String>条件-textmarkdownmarkdown_v2 类型必填
imageUrlString条件-image 类型必填,支持环境变量展开
atMeBooleanfalse是否 @ 当前构建执行人
atAllBooleanfalse是否 @ 所有人
atList<String>[]指定手机号列表

说明:

  • text 需要传入字符串列表,列表中的每一项会按消息内容逐行组织
  • imageUrl 一般填写工作目录下的相对路径,也支持可展开的环境变量

消息类型对比

类型说明适用场景
text纯文本消息简单通知、告警
markdown基础 Markdown标题、列表、链接等基础排版
markdown_v2更完整的 Markdown表格、代码块、构建摘要
image图片消息截图、二维码、报告图片

使用示例

文本消息

groovy
node {
    stage('发送通知') {
        wxwork(
            robot: 'my-robot',
            type: 'text',
            atMe: true,
            at: ['13800138000', '13900139000'],
            text: [
                '构建成功',
                "项目: ${env.JOB_NAME}",
                "构建号: #${env.BUILD_NUMBER}",
                "详情: ${env.BUILD_URL}"
            ]
        )
    }
}

Markdown 消息

groovy
wxwork(
    robot: 'my-robot',
    type: 'markdown',
    text: [
        '## 构建成功',
        '',
        "- 项目: ${env.JOB_NAME}",
        "- 分支: ${env.BRANCH_NAME}",
        "- 构建号: #${env.BUILD_NUMBER}",
        '',
        "[查看详情](${env.BUILD_URL})"
    ]
)

Markdown V2 消息

groovy
wxwork(
    robot: 'my-robot',
    type: 'markdown_v2',
    text: [
        '# 构建报告',
        '',
        '| 项目 | 值 |',
        '|------|------|',
        "| 项目名 | ${env.JOB_NAME} |",
        "| 构建号 | #${env.BUILD_NUMBER} |",
        "| 状态 | SUCCESS |",
        '',
        '```',
        'test summary here',
        '```',
        '',
        "[查看详情](${env.BUILD_URL})"
    ]
)

图片消息

groovy
wxwork(
    robot: 'my-robot',
    type: 'image',
    imageUrl: 'report.png'
)

imageUrl 通常使用相对于当前工作目录的路径,例如构建过程中生成的 report.png

声明式 Pipeline

groovy
pipeline {
    agent any

    stages {
        stage('构建') {
            steps {
                echo '执行构建'
            }
        }
    }

    post {
        success {
            wxwork(
                robot: 'my-robot',
                type: 'markdown',
                text: [
                    '构建成功',
                    "项目: ${env.JOB_NAME}",
                    "构建号: #${env.BUILD_NUMBER}",
                    "[查看详情](${env.BUILD_URL})"
                ]
            )
        }
        failure {
            wxwork(
                robot: 'my-robot',
                type: 'markdown',
                atMe: true,
                text: [
                    '构建失败',
                    "项目: ${env.JOB_NAME}",
                    "构建号: #${env.BUILD_NUMBER}",
                    "[查看详情](${env.BUILD_URL})"
                ]
            )
        }
        unstable {
            wxwork(
                robot: 'my-robot',
                type: 'markdown',
                text: [
                    '构建不稳定',
                    "项目: ${env.JOB_NAME}",
                    "构建号: #${env.BUILD_NUMBER}",
                    "[查看详情](${env.BUILD_URL})"
                ]
            )
        }
    }
}

最佳实践

1. 在 post 中统一发送结果通知

如果你只关心最终构建结果,建议将通知逻辑放在声明式 Pipeline 的 post 中,便于统一维护成功、失败、不稳定消息。

2. 将通知封装到共享库

多个流水线复用同一套通知格式时,可封装到 Jenkins Shared Library,统一机器人、模板和 @ 策略。

3. 使用变量输出上下文信息

常见可用变量包括:

groovy
text: [
    "项目: ${env.JOB_NAME}",
    "构建号: ${currentBuild.number}",
    "构建地址: ${env.BUILD_URL}",
    "自定义参数: ${params.MY_PARAM}"
]

基于 MIT License 开源。