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

如何导出Jenkins Pipeline控制台输出至.txt或.xlsx文件?

解决方案:将Jenkins Pipeline控制台输出导出为.txt或.xlsx

当然可行,以下是针对两种文件类型的具体实现方案:

导出为.txt文件

方法1:直接捕获SQL脚本输出

在运行SQL脚本时,将标准输出和错误输出重定向到本地文件,再通过Jenkins归档功能保存:

pipeline {
    agent any
    stages {
        stage('执行SQL脚本') {
            steps {
                sh '''
                    # 示例:以PostgreSQL为例,运行脚本并输出到文件
                    psql -U 用户名 -d 数据库名 -f 你的脚本.sql > console_output.txt 2>&1
                '''
            }
        }
    }
    post {
        always {
            // 归档文件,构建完成后可在页面下载
            archiveArtifacts artifacts: 'console_output.txt', fingerprint: true
        }
    }
}

方法2:捕获整个Pipeline控制台日志

如果需要完整的流水线日志,可通过Jenkins API获取当前构建的纯文本日志并保存:

pipeline {
    agent any
    stages {
        stage('执行SQL脚本') {
            steps {
                // 你的SQL执行步骤
            }
        }
        stage('导出完整控制台日志') {
            steps {
                script {
                    def buildUrl = env.BUILD_URL
                    def logFile = 'full_console_log.txt'
                    sh "curl -s '${buildUrl}consoleText' > ${logFile}"
                }
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'full_console_log.txt', fingerprint: true
        }
    }
}

注意:需确保Jenkins节点能访问自身API,且当前构建用户有足够权限。

导出为.xlsx文件

需要先将控制台输出(或SQL结果)转换为结构化数据,再生成Excel文件,以下是两种常用方式:

方法1:Python脚本转换

利用pandas库将结构化文本(如TSV/CSV)转为Excel,需先在Jenkins节点安装依赖:

pip install pandas openpyxl

Pipeline代码示例:

pipeline {
    agent any
    stages {
        stage('执行SQL并导出结构化文本') {
            steps {
                sh '''
                    # 输出制表符分隔的结构化结果
                    psql -U 用户名 -d 数据库名 -F $'\t' -A -f 你的脚本.sql > sql_results.tsv
                '''
            }
        }
        stage('转换为Excel') {
            steps {
                sh '''
                    python3 -c "
                    import pandas as pd
                    df = pd.read_csv('sql_results.tsv', sep='\\t')
                    df.to_excel('sql_results.xlsx', index=False)
                    "
                '''
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'sql_results.xlsx', fingerprint: true
        }
    }
}

如果是非结构化控制台输出,需先添加文本清洗逻辑,提取需要的内容后再转换。

方法2:Groovy直接生成Excel

通过Apache POI库在Pipeline中直接编写代码生成Excel,适合输出格式固定的场景:

@Grab('org.apache.poi:poi-ooxml:5.2.3')
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.Cell

pipeline {
    agent any
    stages {
        stage('执行SQL并生成Excel') {
            steps {
                script {
                    // 捕获SQL脚本输出
                    def sqlOutput = sh(script: 'psql -U 用户名 -d 数据库名 -f 你的脚本.sql', returnStdout: true).trim()
                    def lines = sqlOutput.split('\n')
                    
                    // 创建Excel工作簿
                    def workbook = new XSSFWorkbook()
                    def sheet = workbook.createSheet('SQL执行结果')
                    
                    // 逐行写入Excel(需根据实际输出调整分割符)
                    lines.eachWithIndex { line, index ->
                        Row row = sheet.createRow(index)
                        def cells = line.split(/\s+/) // 按空格分割,可替换为逗号等
                        cells.eachWithIndex { cellValue, cellIndex ->
                            Cell cell = row.createCell(cellIndex)
                            cell.setCellValue(cellValue)
                        }
                    }
                    
                    // 保存文件
                    def outputFile = new File('sql_results.xlsx')
                    def fos = new FileOutputStream(outputFile)
                    workbook.write(fos)
                    fos.close()
                    workbook.close()
                }
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'sql_results.xlsx', fingerprint: true
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:40:25