Jenkins流水线日志彩色打印输出

背景

在 Jenkins 的自动化构建与部署过程中,控制台往往会输出海量的日志信息。 如果所有日志都是单调的黑白文本,排查错误和定位关键节点将会非常耗时。

通过引入彩色日志,我们可以让构建状态一目了然(例如:绿色代表成功、红色代表报错、黄色代表警告),从而极大提升运维与开发的排错效率。

依赖

依赖插件 AnsiColorBlue Ocean

流水线脚本示例

shell

流水线配置脚本

js 复制代码
pipeline {
    agent {
        // 需要安装插件:docker-workflow
        docker {
            image 'python310:v1'
        }
    }

	  environment {
        GIT_TOKEN = '5FU-FwsRFqC8Ks799EQn' // 设置环境变量
        VERSION = '1.0.0'
    }

    parameters { // 设置参数
        string(name: 'BRANCH', defaultValue: 'feature-jenkins', description: 'Branch to build')
    }

    stages {
        stage('打印输出') {
            failFast true
            steps {
                sh """
                    # -e 参数表示启用转义字符解析
                    echo -e "\033[32m 构建成功!\033[0m"
                    echo -e "\033[31m 发生严重错误!\033[0m"
                    echo -e "\033[33m 警告:请注意检查配置。\033[0m"
                """
                // 使用 ansiColor 包裹,指定颜色映射为 'xterm' 【推荐使用】
                ansiColor('xterm') {
                    sh '''
                        echo -e "\033[32m 开始构建任务... \033[0m"
                        echo -e "\033[34m 正在拉取代码... \033[0m"
                        # 模拟一些操作
                        echo -e "\033[33m 构建完成,准备部署。 \033[0m"
                    '''
                }
            }
        }
    }
    post {
        always {
            echo 'Cleaning up...'
            sh 'rm -rf ./AutoTL3'
        }
        success {
            echo 'Pipeline completed successfully!'
        }
        failure {
            echo 'Pipeline failed!'
        }
    }
}

效果

python

pyhton 打印脚本

python 复制代码
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @Desc    : 彩色打印

class Printer:
    __ANSI_RED = '\033[91m'
    __ANSI_GREEN = '\033[92m'
    __ANSI_YELLOW = '\033[93m'
    __ANSI_END = '\033[0m'

    @classmethod
    def INFO(cls, msg):
        msg = 'INFO: ' + msg
        print(cls.__ANSI_GREEN + msg + cls.__ANSI_END)

    @classmethod
    def ERROR(cls, msg):
        msg = 'ERROR: ' + msg
        print(cls.__ANSI_RED + msg + cls.__ANSI_END)

    @classmethod
    def WARNING(cls, msg):
        msg = 'WARNING: ' + msg
        print(cls.__ANSI_YELLOW + msg + cls.__ANSI_END)


if __name__ == '__main__':
    Printer.ERROR("XXX")
    Printer.INFO("XXX")
    Printer.WARNING("XXX")

流水线配置脚本

js 复制代码
pipeline {
    agent {
        // 需要安装插件:docker-workflow
        docker {
            image 'python310:v1'
        }
    }

	  environment {
        GIT_TOKEN = '5FU-FwsRFqC8Ks799EQn' // 设置环境变量
        VERSION = '1.0.0'
    }

    parameters { // 设置参数
        string(name: 'BRANCH', defaultValue: 'feature-jenkins', description: 'Branch to build')
    }

    stages {
        stage('打印输出') {
            failFast true
            steps {
                sh """
                    # 下载上面的python脚本
                    wget http://10.132.1.127:8123/Tempfile/demo.py 
                    python demo.py
                    rm -rf demo.py
                """
                // 使用 ansiColor 包裹,指定颜色映射为 'xterm' 【推荐使用】
                ansiColor('xterm') {
                    sh '''
                        # 下载上面的python脚本
                        wget http://10.132.1.127:8123/Tempfile/demo.py
                        python demo.py
                        rm -rf demo.py
                    '''
                }
            }
        }
    }
    post {
        always {
            echo 'Cleaning up...'
            sh 'rm -rf ./AutoTL3'
        }
        success {
            echo 'Pipeline completed successfully!'
        }
        failure {
            echo 'Pipeline failed!'
        }
    }
}

效果


相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘1 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥1 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发
云贝贝贝1 天前
腾讯云 TDSQL(MySQL 版)性能优化与慢查询排障实战 6 招
运维·腾讯云
Lsetea1 天前
证书没到期却报certificate has expired:OpenSSL定位中间证书与系统时间
运维·https·ssl证书·openssl·证书链