条件步骤(多个)- Jenkins 中的量角器碎片直到最后一步才 运行
Conditional Steps (Multiple) - Protractor shards in Jenkins not running till last step
我更改了 Jenkins 中的配置以执行多个构建步骤(Shell),步骤是:
1 - 为我的脚本执行一些先决条件
2 - 脚本的第一部分
//我必须将执行分开,以免消耗我用来执行的 VM 的所有资源
3 - 其余脚本
4 - 合并我所有的 xml 报告文件。
该步骤的示例是:
export AUTOTEST_HOME="${WORKSPACE}"
export AUTOTEST_ADDRESS= IPaDD
cd "${AUTOTEST_HOME}/e2e_ui_tests/development_new_ui/"
ls -lah
if [ -L lib/node_modules ]; then
unlink lib/node_modules
fi
if [ -L node_modules/node_modules ]; then
unlink node_modules/node_modules
fi
#Running just install, without the post install scripts
npm install --ignore-scripts
#Library access symlink
ln -s ../node_modules/ lib/node_modules
cd "${AUTOTEST_HOME}/e2e_ui_tests/development_new_ui/sharding/"
#Run the Prereq script to prepare the portal
./../lib/node_modules/protractor/bin/protractor 1_Conf_prereq.js
问题在于,由于第 2 步包含一些失败(验证发现的错误),Jenkins 在执行后停止构建步骤,忽略其余部分。
有没有办法让它 运行 到最后一步,如果是这样,就失败了?
我尝试在步骤的最前面加上set +e来避免步骤的退出,但是没有用
(https://support.cloudbees.com/hc/en-us/articles/218517228-How-to-Ignore-Failures-in-a-Shell-Step)
”
[12:02:55] E/launcher - 进程已退出,错误代码为 1
构建步骤 'Conditional steps (multiple)' 将构建标记为失败
[htmlpublisher] 正在归档 HTML 报告...
"
PS:根据先决条件和规范正确触发量角器,在脚本发现第一个问题后失败
知道如何解决这个问题吗?谢谢!
1. 将 || error1=true
附加到启动量角器的命令中,因此您有
./../lib/node_modules/protractor/bin/protractor 1_Conf_prereq.js || error1=true
如果测试失败它声明一个变量error1=true
2. 您的下一个挑战是这个变量是本地变量,在您的下一个脚本中不可用。按照 here 所述将其设为全局。
本质上,这里的方法是创建一个文本文件来存储变量,然后将此变量注入全局(环境)范围。
记住 echo AOEU=$(echo aoeu) > propsfile
和 echo AOEU=$(echo aoeu) >> propsfile
之间的区别。第一个创建一个新文件,另一个在现有文件中添加一个新行(当您添加第二个、第三个等变量时)
3. 对你的另一步做同样的事情,直到最后一步
4. 从您在 2.
中创建的文件中注入您的环境变量
5. 添加选择失败或通过作业的最后一步
if [ $error1 || $error2 || $error3 ]
then
exit 1
fi
我已经有一段时间没有这样做了。现在我正在使用管道语法和 docker 图像。所以我写的可能不准确,需要调试,但是方法是一样的
我更改了 Jenkins 中的配置以执行多个构建步骤(Shell),步骤是:
1 - 为我的脚本执行一些先决条件
2 - 脚本的第一部分
//我必须将执行分开,以免消耗我用来执行的 VM 的所有资源
3 - 其余脚本
4 - 合并我所有的 xml 报告文件。
该步骤的示例是:
export AUTOTEST_HOME="${WORKSPACE}"
export AUTOTEST_ADDRESS= IPaDD
cd "${AUTOTEST_HOME}/e2e_ui_tests/development_new_ui/"
ls -lah
if [ -L lib/node_modules ]; then
unlink lib/node_modules
fi
if [ -L node_modules/node_modules ]; then
unlink node_modules/node_modules
fi
#Running just install, without the post install scripts
npm install --ignore-scripts
#Library access symlink
ln -s ../node_modules/ lib/node_modules
cd "${AUTOTEST_HOME}/e2e_ui_tests/development_new_ui/sharding/"
#Run the Prereq script to prepare the portal
./../lib/node_modules/protractor/bin/protractor 1_Conf_prereq.js
问题在于,由于第 2 步包含一些失败(验证发现的错误),Jenkins 在执行后停止构建步骤,忽略其余部分。
有没有办法让它 运行 到最后一步,如果是这样,就失败了?
我尝试在步骤的最前面加上set +e来避免步骤的退出,但是没有用 (https://support.cloudbees.com/hc/en-us/articles/218517228-How-to-Ignore-Failures-in-a-Shell-Step)
” [12:02:55] E/launcher - 进程已退出,错误代码为 1 构建步骤 'Conditional steps (multiple)' 将构建标记为失败
[htmlpublisher] 正在归档 HTML 报告...
"
PS:根据先决条件和规范正确触发量角器,在脚本发现第一个问题后失败
知道如何解决这个问题吗?谢谢!
1. 将 || error1=true
附加到启动量角器的命令中,因此您有
./../lib/node_modules/protractor/bin/protractor 1_Conf_prereq.js || error1=true
如果测试失败它声明一个变量error1=true
2. 您的下一个挑战是这个变量是本地变量,在您的下一个脚本中不可用。按照 here 所述将其设为全局。
本质上,这里的方法是创建一个文本文件来存储变量,然后将此变量注入全局(环境)范围。
记住 echo AOEU=$(echo aoeu) > propsfile
和 echo AOEU=$(echo aoeu) >> propsfile
之间的区别。第一个创建一个新文件,另一个在现有文件中添加一个新行(当您添加第二个、第三个等变量时)
3. 对你的另一步做同样的事情,直到最后一步
4. 从您在 2.
中创建的文件中注入您的环境变量5. 添加选择失败或通过作业的最后一步
if [ $error1 || $error2 || $error3 ]
then
exit 1
fi
我已经有一段时间没有这样做了。现在我正在使用管道语法和 docker 图像。所以我写的可能不准确,需要调试,但是方法是一样的