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!'
        }
    }
}

效果


相关推荐
爱喝水的鱼丶4 小时前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
画中有画4 小时前
自动化脚本开发最佳实践
运维·自动化
江南风月7 小时前
如何使用WGCLOUD实现智能运维
运维·zabbix·运维开发·prometheus
xiaoxiangsiyan7 小时前
HCIA 网络技术基础核心模块详解
运维·网络·网络协议·tcp/ip·运维开发·网络基础
MuMuMu12239 小时前
工业园区 VOCs 绿岛集中治理:越华环保集团项目技术方案与工程实践
大数据·运维
sxstj10 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
国际云,接待10 小时前
Nginx 后面接负载均衡,502/504 到底该先查哪里?
运维·nginx·负载均衡
刘某的Cloud11 小时前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方11 小时前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
程序员老陆13 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg