【问题标题】:Jenkins - How to interact with a Script input - during runtimeJenkins - 如何与脚本输入交互 - 在运行时
【发布时间】:2013-03-28 16:36:40
【问题描述】:

我有一个小脚本,它生成两个随机数,将它们相加并提示用户(如果 SUM 是 > 或

因此,脚本是:

bash-3.00$ cat use_random.sh
#!/bin/bash

func ()
{
 a=$RANDOM
 b=$RANDOM
 sum=`expr $a + $b`

 echo A = $a
 echo B = $b
 echo
 echo Sum of A + B is : $sum
}

choice=y;
until [ "$choice" == "n" ];
do
 # call func
 echo ---------------------------------------------; echo;
 func;

 echo Sleeping for 3 seconds...
 sleep 3;
 echo -
 echo "IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'"; echo;
 echo -n "Do you want to continue (y/n)? : "; read choice;
 echo ---------------------------------------------; echo;
done

bash-3.00$

脚本的运行标准输出很少是

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 20359
B = 15866

Sum of A + B is : 36225
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

bash-3.00$

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 18058
B = 20395

Sum of A + B is : 38453
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

bash-3.00$ bash-3.00$

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 6016
B = 13489

Sum of A + B is : 19505
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 25837
B = 3852

Sum of A + B is : 29689
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 7565
B = 3220

Sum of A + B is : 10785
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 32092
B = 22688

Sum of A + B is : 54780
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

正如您在上面看到的,当我前 2 次运行脚本时,它给出的 SUM 值小于 3500,所以我按下了“n”(这是满足我的自动化需求的必须用户提示/输入,这里我有拿了这个 SUM 的例子,提示只是把我的情况),当它小于 3500 时,然后我按“y”,N 否。直到 SUM 值小于 3500 的次数。

现在,如何在 Jenkins 中做到这一点???

我不能使用参数化构建插件(A 和 B 变量是随机生成的,所以我不希望用户传递它)即调用脚本时不需要以下技巧:

回显“输入”| script_or_command

script_or_command

其次,用户的继续输入(按 y 或 n)取决于这 2 个随机变量值的总和。用户不知道在最终按“n”进入/退出脚本之前他必须按多少次“y”。换句话说,用户可以提前对输入进行硬编码(因为他的输入取决于运行时)。注意:我不想让 AI 足以做出决策,使用 SUM 值作为用户输入继续是我想要在 Jenkins 中做的要求。

如果我在 Jenkins 中调用我的脚本“use_random.sh”,有什么想法可以让它工作吗?

千兆AKS

【问题讨论】:

    标签: input jenkins runtime interactive


    【解决方案1】:

    除非您使用某种“AI”,否则您将无法测试这是任何类型的连续测试系统。不过,在您的情况下,这应该相对简单——您需要做的就是编写第二个脚本来调用第一个脚本,提取 SUM 的值(例如使用 grep)并相应地生成要发送到第一个脚本的输入。

    【讨论】:

      【解决方案2】:

      实际上,当只有少数这样的脚本时,我会同意你的看法。

      但是,我有数百个这样的脚本,它们提示用户输入“基于运行时条件”。

      例如:当用户说 - 每天以不同的顺序运行某些东西(5 个文件/命令/等),而这些东西(文件/命令)本质上是随机的,因为 / 用于项目/应用程序。选择继续/运行另一个脚本/ssh 到 1-N 个 ssh 服务器的值取决于这些因素。考虑这种情况:即,我得到 Shell 选择“菜单”选项,其中文件/命令/应用程序可以在 #4 或在接下来的几天它可以在 #13 或 15。因此,取决于操作系统的当前状态或应用程序是我想要弄清楚的,简而言之是:

      除了看到许多其他方式之外 - 我们可以使用 Jenkins 作业来做到这一点,是否有任何简单/清晰的方式来运行我上面想要的内容(即 Jenkins 在控制台中运行脚本期间提示“用户输入”输出窗口... - 非常像脚本,当我们在 Linux/Unix $ 提示符下运行它时)?
      感谢您的回复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-06
        • 2016-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-18
        • 1970-01-01
        • 2016-11-05
        相关资源
        最近更新 更多