如何在 jenkins groovy 中使用 fmt_case?

How to use fmt_case in jenkins groovy?

我正在尝试在 Groovy 沙盒中的 Jenkins 管道中使用以下命令。

descr -fmt "%[rec_bls]CXp" stream:stream_name@\my_vob  

虽然如果从 windows cmd 执行该命令可以正常运行,但在 Jenkins 阶段执行时会抛出以下错误。

Running batch script    
path_to_workspace>cleartool describe -fmt 'stream_name@\my_vob
cleartool: Error: Object selector required.
Usage: describe -graphical pname …
...
…

下面是 Jenkins 阶段片段:

        stage ('Test') {            
        agent {label 'Jenkins_Label'}           
        steps{          
            bat """             
    cleartool describe -fmt "%[rec_bls]CXp" stream:stream_name@\vob_name
         """            
         }
       }

首先检查这是否是因为 -fmt "%[rec_bls]CXp",其引用在 Jenkins bat shell 会话中被错误解释。

例如:

  stage ('Test') {            
    agent {label 'Jenkins_Label'}           
    steps{          
        bat """             
cleartool describe -l stream:stream_name@\vob_name
     """            
     }
   }

如果可行,请尝试查看如何添加这些引号。
例如:

cleartool describe -fmt """%[rec_bls]CXp""" stream:stream_name@\vob_name
# or
cleartool describe -fmt \"%[rec_bls]CXp\" stream:stream_name@\vob_name

如果“%”是问题所在,escape it:

cleartool describe -fmt \"%%[rec_bls]CXp\" stream:stream_name@\vob_name

这将阻止 bat 会话将其解释为变量环境。

我找到了解决办法。使用 %% 解决问题!

cleartool describe -fmt \"%%[rec_bls]CXp\" stream:stream_name@\vob_name