pipeline 解析
Posted swfxll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pipeline 解析相关的知识,希望对你有一定的参考价值。
shell 参数
set -e (脚本出现异常时马上退出)
set -e 选项可以让你的脚本在出现异常时马上退出,后续命令不再执行。默认情况下Shell脚本不会因为错误而结束执行,但大多数情况是,我们希望出现异常时就不要再往下走了。假如你的if判断条件里会出现异常,这时脚本也会直接退出,但可能这并不是你期望的情况,这时你可以在判断语句后加上 || true 来阻止退出。
set -o pipefail (管道中的命令有一个失败则视为失败)
默认情况下Bash只会检查管道(pipeline)操作最后一个命令的返回值,假如最右边的命令成功那么它就认为这个语句没问题。这个行为其实是很不安全的,所以就有了set -o pipefail。这个特别的选项表示在管道连接的命令中,只要有任何一个命令失败(返回值非0),则整个管道操作被视为失败。只有管道中所有命令都成功执行了这个管道才算成功执行。
set -u (未定义的变量视为错误)
set -u 比较容易理解,Bash会把所有未定义的变量视为错误。 默认情况下Bash会将未定义的变量视为空,不会报错,这也是很多坑的来源。也许由于变量名的细微差别让你查半天最后骂骂咧咧。
set -x (执行前打印)
set -x 可以让Bash把每个命令在执行前先打印出来,你可以认为这就是Bash的Debug开关。它的好处当然显而易见,方便你快速找到有问题的脚本位置,但是也坏处也有吧,就是Bash的log会格外的乱。另外,它在打印命令前会把变量先解析出来,所以你可以知道当前执行的语句的变量值是什么。
你可以使用 Jenkins Pipeline 解析 TAP 格式吗?
【中文标题】你可以使用 Jenkins Pipeline 解析 TAP 格式吗?【英文标题】:Can you parse TAP format using Jenkins Pipeline? 【发布时间】:2017-06-22 12:03:51 【问题描述】:我正在尝试解析 BATS 脚本 (https://github.com/gaia-adm/docker-bench-test) 的输出,该脚本输出为 TAP 格式。我稍微修改了脚本以涵盖 CIS 1.13 而不是 1.11,但我不知道如何让 Jenkins Pipeline 处理该输出。
我知道有一个用于 TAP 格式的 Jenkins 插件,但我认为这不适用于 Jenkins Pipeline Groovy 脚本。
【问题讨论】:
【参考方案1】:@Grab 仅在您的 jenkins 可以访问互联网时才能工作
workspace/job_name/tap.groovy
@Grab(group='org.tap4j', module='tap4j', version='4.2.1')
import org.tap4j.consumer.TapConsumerFactory
def parse(def src)
return TapConsumerFactory.makeTap13Consumer().load(src)
return this
workspace/job_name/test.tap
1..3
ok 1 - no error
not ok 2 - io error
ok 3 - no error
管道脚本
node
def tap = load 'tap.groovy'
tap = tap.parse( readFile('test.tap') )
echo "Number of tests found : $tap.getNumberOfTestResults()"
echo "Test Set failed? : $tap.containsNotOk()"
输出
Number of tests found : 3
Test Set failed? : true
tap.parse()
返回的对象:org.tap4j.model.TestSet
【讨论】:
【参考方案2】:安装了 tap 插件后,我可以使用以下命令获取声明性管道脚本以显示来自 tap 文件的测试结果:
stage('publish test results')
steps
step([$class: "TapPublisher", testResults: "**/reports/*.tap"])
How do i use the "Publish TAP Results" plugin on Jenkins 2.0 Pipeline?
【讨论】:
以上是关于pipeline 解析的主要内容,如果未能解决你的问题,请参考以下文章
警告:apache_beam.options.pipeline_options:丢弃不可解析的参数
你可以使用 Jenkins Pipeline 解析 TAP 格式吗?
Elasticsearch:ingest pipeline 使用示例 - 解析常用日志格式
Flink 实战系列Flink pipeline.operator-chaining 参数使用以及源码解析