如何获取在 Jenkins 中创建的 HTML 表值

问题描述 投票:0回答:1

我有一种情况,我已经为 Jenkins 参数创建了如下所示的 html 表,如果它不等于当前计数或者它为空/零,我想获取每个组件的 Desired Count 列中的值。

例如,如果我将 A1 的 Desired Count 更改为 2,那么我的 Jenkins 参数应该在我构建作业时返回 A1=2,这样我就可以更新它以在我的 Jenkins 管道中继续执行进一步的步骤。有人可以帮忙

我的桌子是这样的

<html>
    <head>
        <style>
            table, th, td {  
                border: 1px solid black;  
                text-align: center; 
                width: 40%; 
                border-collapse: collapse;
                }
                </style>
                </head>
                <table>
                    <tr>
                        <th>COMPONENT</th>
                        <th>CURRENT SCALE</th> 
                        <th>DESIRED SCALE</th>
                    </tr>
                    <tr>
                        <td>A1</td>
                        <td>-1</td>
                        <td><input type='number' step='1' min='0' max='5'/></td>
                    </tr>
                    <tr>
                        <td>B1</td>
                        <td>1</td>
                        <td><input type='number' step='1' min='0' max='5'/></td>
                    </tr>
                    <tr>
                        <td>C1</td>
                        <td>-1</td>
                        <td><input type='number' step='1' min='0' max='5'/></td>
                    </tr>
                </table>
             </html>

xml jenkins groovy xml-parsing
1个回答
1
投票

检查以下 Groovy 代码。

def text = '''
    <html>
    <head>
        <style>
            table, th, td {  
                border: 1px solid black;  
                text-align: center; 
                width: 40%; 
                border-collapse: collapse;
                }
                </style>
                </head>
                <table>
                    <tr>
                        <th>COMPONENT</th>
                        <th>CURRENT SCALE</th> 
                        <th>DESIRED SCALE</th>
                    </tr>
                    <tr>
                        <td>A1</td>
                        <td>-1</td>
                        <td><input type='number' step='1' min='0' max='5'>1234321</input></td>
                    </tr>
                    <tr>
                        <td>B1</td>
                        <td>1</td>
                        <td><input type='number' step='1' min='0' max='5'>555</input></td>
                    </tr>
                    <tr>
                        <td>C1</td>
                        <td>-1</td>
                        <td><input type='number' step='1' min='0' max='5'/></td>
                    </tr>
                </table>
             </html>
'''

def html = new XmlParser().parseText(text)
println html.table

def values = [:]
html.table.tr.each{ row -> 
  
  if(row['td']) {
    if(row['td'][2].input.text()) {
      values[row['td'][0].text()] = row['td'][2].input.text()
    }  
  }
  
}

println values

输出

[A1:1234321, B1:555]

更新

假设您的主动选择参数名称是

versions
,您可以执行以下操作来获取参数。您可能需要回复输入的顺序。

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                script {
                    def versionParams = params.versions.split(',')
                    A1=versionParams[0]
                    B1=versionParams[1]
                    C1=versionParams[2]
                    println "A1: " + A1
                    println "B1: " + B1
                    println "C1: " + C1
                }
            }
        }
    }
}

此外,您的 HTML 内容输入应该像下面这样调整。

<html>
    <head>
        <style>
            table, th, td {  
                border: 1px solid black;  
                text-align: center; 
                width: 40%; 
                border-collapse: collapse;
                }
                </style>
                </head>
                <table>
                    <tr>
                        <th>COMPONENT</th>
                        <th>CURRENT SCALE</th> 
                        <th>DESIRED SCALE</th>
                    </tr>
                    <tr>
                        <td>A1</td>
                        <td>-1</td>
                        <td><input class="setting-input" name='value' type='number' step='1' min='0' max='5'/></td>
                    </tr>
                    <tr>
                        <td>B1</td>
                        <td>1</td>
                        <td><input class="setting-input" name='value' type='number' step='1' min='0' max='5'/></input></td>
                    </tr>
                    <tr>
                        <td>C1</td>
                        <td>-1</td>
                        <td><input class="setting-input" name='value'  type='number' step='1' min='0' max='5'/></td>
                    </tr>
                </table>
             </html>
© www.soinside.com 2019 - 2024. All rights reserved.