如何在输出中的某个值超过阈值时推广构建

87次阅读
没有评论

问题描述

正在使用Promoted Builds插件,并希望在输出中的某个值超过给定阈值(例如大于1.00)时,将其自由样式作业推广为金星。
以下是来自回测作业的示例输出:

Pass  Profit Total trades Profit factor Expected Payoff Drawdown $ Drawdown %   1  622.71           76          1.38            8.19     526.77       4.94  10  301.09           36          1.38            8.36     526.77       4.93  14  240.96           62          1.18            3.89     589.60       5.60

用户的目标是在标题行后的第一行中,当Profit factor列的值超过1.00时,将构建推广为金星,当值低于1.00时,将构建推广为银星。
用户想知道如何实现这个目标。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

您可以使用Promoted Builds插件的Job DSL功能来实现此目标。以下是步骤:
1. 在Jenkins中安装Promoted Builds插件和Job DSL插件。
2. 在您的自由样式作业中,使用Job DSL语法定义推广条件。
3. 在Job DSL脚本中,使用Groovy脚本来解析输出并检查Profit factor列的值。
4. 根据值的大小,设置推广条件为金星或银星。
以下是一个示例Job DSL脚本:

job('your_freestyle_job') {
    // 定义其他作业配置
    publishers {
        promotedBuilds {
            conditions {
                groovyScript {
                    script("""
                        def output = '''
                        Pass  Profit Total trades Profit factor Expected Payoff Drawdown $ Drawdown %   1  622.71           76          1.38            8.19     526.77       4.94  10  301.09           36          1.38            8.36     526.77       4.93  14  240.96           62          1.18            3.89     589.60       5.60
                        '''
                        def lines = output.split('\\n')
                        def firstLine = lines[1].trim()
                        def profitFactor = firstLine.split()[3].toDouble()
                        if (profitFactor > 1.00) {
                            return 'GOLD'
                        } else {
                            return 'SILVER'
                        }
                    """)
                }
            }
        }
    }
}

在上面的示例中,我们使用Job DSL语法定义了一个自由样式作业,并在promotedBuilds部分中定义了推广条件。在groovyScript条件中,我们使用Groovy脚本来解析输出并检查Profit factor列的值。根据值的大小,我们设置推广条件为金星或银星。
请注意,您需要根据实际情况修改脚本中的输出和解析逻辑。

方案2

如果您不熟悉Job DSL或Groovy脚本,您可以考虑使用其他插件或工具来实现此目标。
另一种方法是使用其他插件或工具来解析输出并设置推广条件。您可以使用一些文本处理工具(如awk、sed或grep)来解析输出,并根据条件设置推广条件。
以下是一个示例bash脚本,可以使用awk来解析输出并设置推广条件:

#!/bin/bash
output=$(cat output.txt)  # 将输出保存到变量中,或者将输出保存到文件中并将文件路径替换为实际路径
firstLine=$(echo "$output" | awk 'NR==2 {print $0}')  # 获取第一行
profitFactor=$(echo "$firstLine" | awk '{print $4}')  # 获取Profit factor列的值
if (( $(echo "$profitFactor > 1.00" | bc -l) )); then
    echo "Set promotion to GOLD"
else
    echo "Set promotion to SILVER"
fi

在这个示例中,我们首先将输出保存到变量output中(或者将输出保存到文件中并将文件路径替换为实际路径)。然后,我们使用awk命令来获取第一行和Profit factor列的值。最后,我们使用bc命令来比较值和阈值,并根据结果设置推广条件。
请注意,您需要根据实际情况修改脚本中的输出和解析逻辑。

正文完