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 参数使用以及源码解析

Flink 实战系列Flink pipeline.operator-chaining 参数使用以及源码解析

智能化视频开发神器来了,AV Pipeline Kit 架构解析