如何使用Jenkins每日发送Confluence报告与JIRA仪表板邮件
用Jenkins实现JIRA/Confluence数据抓取与每日状态报告自动发送
完全可以用Jenkins搞定这个需求,靠它的插件生态和脚本能力,不用做复杂定制开发。下面是具体的落地步骤:
1. 安装必备插件
Jenkins本身不自带JIRA/Confluence集成能力,先装这些核心插件:
- JIRA相关:
JIRA Steps或JIRA Plugin,用来调用JIRA API抓取仪表板数据(比如当前迭代的任务进度、待办项、阻塞项) - Confluence相关:
Confluence Publisher或者直接用HTTP请求插件调用Confluence REST API,提取页面关键更新(比如文档变更、会议纪要要点) - 定时触发:用Jenkins自带的定时任务(配合
Build Timestamper插件更方便),设置每日固定执行时间 - 邮件发送:
Email Extension Plugin,支持自定义收件人列表和邮件模板 - 流程串联:
Pipeline Plugin(必备),用Groovy脚本把抓取、生成报告、发邮件全流程串起来
2. 配置JIRA/Confluence连接权限
在Jenkins系统设置里,添加JIRA和Confluence的服务器配置:
- 填入平台地址,使用平台生成的API令牌(不要用账号密码,安全性更高)
- 测试连接,确保Jenkins能正常访问两个平台
3. 编写Pipeline脚本串联流程
下面是简化版的Groovy Pipeline脚本,整合了数据抓取、报告生成、邮件发送全流程:
pipeline { agent any // 工作日早9点自动执行,可根据需求修改Cron表达式 triggers { cron('0 9 * * 1-5') } stages { stage('抓取JIRA数据') { steps { script { // 用JQL查询最近一天状态变化的迭代任务,可自定义JQL适配需求 def jiraIssues = jiraSearch(jql: 'project = "PROJ" AND sprint in openSprints() AND status changed during("-1d")') // 统计各类任务数量 def completedCount = jiraIssues.count { it.status.name == 'Done' } def todoCount = jiraIssues.count { it.status.name == 'To Do' } def blockedCount = jiraIssues.count { it.status.name == 'Blocked' } env.JIRA_SUMMARY = "JIRA进度:已完成${completedCount}项,待办${todoCount}项,阻塞${blockedCount}项" } } } stage('抓取Confluence数据') { steps { script { // 根据页面ID抓取Confluence页面内容,提取最近更新段落(可自定义匹配规则) def confluencePage = confluenceGetPage(pageId: '123456') def recentUpdates = confluencePage.body.storage.value =~ /<p>最近更新:(.+?)<\/p>/ env.CONFLUENCE_SUMMARY = recentUpdates ? "Confluence更新:${recentUpdates[0][1]}" : "无最新更新" } } } stage('生成每日状态报告') { steps { script { // 生成Markdown格式的报告内容 def reportContent = """ # 每日项目状态报告(${new Date().format('yyyy-MM-dd')}) ## JIRA进度 ${env.JIRA_SUMMARY} ## Confluence更新 ${env.CONFLUENCE_SUMMARY} ## 备注 如有问题请联系项目负责人 """.trim() // 将报告写入本地文件 writeFile(file: 'daily-report.md', text: reportContent) } } } stage('发送邮件给指定收件人') { steps { emailext( to: 'team@example.com, manager@example.com', subject: "【每日状态】项目进度报告 ${new Date().format('yyyy-MM-dd')}", body: readFile('daily-report.md'), mimeType: 'text/html' // 支持Markdown转HTML格式显示 ) } } } }
实际使用时,可根据需求调整JQL查询语句、Confluence数据提取规则,比如抓取更详细的任务列表、文档链接等。
4. 调整定时触发规则
脚本中的cron('0 9 * * 1-5')表示工作日早9点执行,若需其他时间,修改Cron表达式即可,比如0 18 * * *代表每天下午6点执行。
5. 优化邮件格式
如果需要更美观的邮件样式,可使用Email Extension Plugin的自定义HTML模板,将Markdown内容转换为HTML,或直接编写HTML模板嵌入动态数据。
注意事项
- 权限配置:确保Jenkins使用的账号在JIRA和Confluence中拥有对应内容的查看权限
- 错误处理:可在脚本中添加try-catch块,抓取数据失败时发送告警邮件,避免任务中断
- API调用优化:若数据量较大,可考虑缓存查询结果,减少JIRA/Confluence API调用频率
内容的提问来源于stack exchange,提问作者Rag
相关产品推荐
相关产品推荐

