Jenkins Pipeline 中 ansiColor Jenkins 插件的包装器放在哪里?

Posted

技术标签:

【中文标题】Jenkins Pipeline 中 ansiColor Jenkins 插件的包装器放在哪里?【英文标题】:Where to put the wrapper for ansiColor Jenkins plugin in Jenkins Pipeline? 【发布时间】:2017-10-15 15:42:56 【问题描述】:

我不确定如何处理声明式 jenkins 管道。

按照此处的示例: https://github.com/jenkinsci/ansicolor-plugin

wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) 
  sh 'something that outputs ansi colored stuff'

上面的sn-p去哪儿了?

这是我的简单 Jenkinsfile:

#!groovy

pipeline 
  agent any

  // Set log rotation, timeout and timestamps in the console
  options 
    buildDiscarder(logRotator(numToKeepStr:'10'))
    timeout(time: 5, unit: 'MINUTES')
  

  stages 

    stage('Initialize') 
      steps 

        sh '''
          java -version
          node --version
          npm --version
        '''
      
    
   
 

包装器是否绕过阶段?每个阶段都有吗?

【问题讨论】:

【参考方案1】:

能够像这样在选项块中整合配置

options 
  buildDiscarder(logRotator(numToKeepStr:'10'))
  timeout(time: 5, unit: 'MINUTES')
  ansiColor('xterm')

【讨论】:

这在 Jenkins 2.98 和 Pipeline 2.5 上的脚本化管道中使用时不起作用。 有票可以添加支持:github.com/jenkinsci/ansicolor-plugin/issues/118 GitHub 问题目前仍处于打开状态,但实际上现在似乎可以正常工作(Jenkins 2.121.1 和管道 2.5)。【参考方案2】:

我把我的放在每个阶段都是这样的:

stage('Initialize') 
  ansiColor('xterm') 
    // do stuff
  

【讨论】:

在我给出的答案中能够配置一次【参考方案3】:

我把它放在选项部分,申请管道中的所有阶段和步骤

pipeline 
  agent any 

  options 
    ansiColor('xterm')
  
...

【讨论】:

@phani 你能解释一下吗?【参考方案4】:

在脚本化的 jenkins 管道中,您可以像这样使用它:

stage('Pre-Checks')   
    timeout(time: 3, unit: 'MINUTES') 
        ansiColor('xterm') 
            sh 'python scripts/eod/pre_flight_check.py'
        
    

【讨论】:

以上是关于Jenkins Pipeline 中 ansiColor Jenkins 插件的包装器放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins Pipeline: pipeline语法详解

jenkins-pipeline配置简介

Jenkins流水线(pipeline)实战之:从部署到体验

Jenkins pipeline 并行执行任务流

jenkins 2 pipeline怎么获取各个阶段的log

13-Jenkins-创建Pipeline项目