You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Jenkins读取Confluence页面中的表格内容并打印?

实现Jenkins读取Confluence表格并打印的方案参考

核心思路

基于你的Jenkins基础,通过Jenkins插件+Confluence API组合实现,核心是获取Confluence页面的HTML内容后解析表格。

具体实现方案

1. 使用Jenkins Confluence API插件(快速落地)

  • 先在Jenkins插件市场安装Confluence API Plugin
  • 全局配置Confluence站点:进入Jenkins「系统管理」→「全局配置」,添加你的Confluence站点信息,填入Base URL、账号+API Token(推荐用API Token替代密码,更安全)
  • Pipeline脚本示例:
pipeline {
    agent any
    stages {
        stage('读取并打印Confluence表格') {
            steps {
                script {
                    // 调用插件获取页面内容
                    def confluenceSite = Jenkins.instance.getDescriptorByType(com.atlassian.jenkins.plugins.confluence.ConfluenceSite.DescriptorImpl).getSiteByName("你的Confluence站点名称")
                    def pageHtml = confluenceSite.getPageContent("页面空间Key", "页面标题")
                    
                    // 用Jsoup解析HTML表格(需确保Jenkins环境已引入Jsoup依赖)
                    def parser = org.jsoup.Jsoup.parse(pageHtml)
                    def tables = parser.select("table")
                    
                    // 遍历打印所有表格
                    tables.eachWithIndex { table, idx ->
                        println "=== 第${idx+1}个表格 ==="
                        table.select("tr").each { row ->
                            def cells = row.select("td, th").collect { it.text() }.join("\t")
                            println cells
                        }
                    }
                }
            }
        }
    }
}
  • 补充:若Jenkins未内置Jsoup,可在Pipeline开头添加依赖引入:@Grab('org.jsoup:jsoup:1.17.2')

2. 直接调用Confluence REST API(自定义灵活性高)

无需插件,用Groovy原生工具或curl请求API:

pipeline {
    agent any
    stages {
        stage('调用API读取表格') {
            steps {
                script {
                    // 配置参数
                    def confluenceDomain = "你的Confluence域名"
                    def pageId = "目标页面ID" // 从页面URL的pageId参数获取
                    def authToken = "账号:API_TOKEN".bytes.encodeBase64().toString()
                    
                    // 请求API获取页面内容
                    def apiUrl = "https://${confluenceDomain}/rest/api/content/${pageId}?expand=body.storage"
                    def response = sh(script: "curl -s -H 'Authorization: Basic ${authToken}' ${apiUrl}", returnStdout: true)
                    def jsonData = new groovy.json.JsonSlurper().parseText(response)
                    def pageHtml = jsonData.body.storage.value
                    
                    // 解析并打印表格
                    def parser = org.jsoup.Jsoup.parse(pageHtml)
                    parser.select("table").each { table ->
                        table.select("tr").each { row ->
                            println row.select("td, th").text().replaceAll("\\s+", "\t")
                        }
                    }
                }
            }
        }
    }
}

关键知识点参考

  • Jenkins Pipeline:掌握script块Groovy代码编写、插件配置逻辑
  • Confluence REST API:重点熟悉/rest/api/content/{pageId}接口的参数与返回结构
  • HTML解析:Jsoup基本选择器用法(如select("table")、select("tr"))

内容的提问来源于stack exchange,提问作者Sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:42:10