我正在运行我的所有测试用例,其中有些测试用例有时会失败,管道会检测到它并导致步骤和构建失败。这将阻止下一步执行(压缩报告文件夹)。我想将该压缩文件作为电子邮件附件发送。
这是我的 bitbucket-pipelines.yml 文件
custom: # Pipelines that can only be triggered manually
QA2: # The name that is displayed in the list in the Bitbucket Cloud GUI
- step:
image: openjdk:8
caches:
- gradle
size: 2x # double resources available for this step to 8G
script:
- apt-get update
- apt-get install zip
- cd config/geb
- ./gradlew -DBASE_URL=qa2 clean BSchrome_win **# This step fails**
- cd build/reports
- zip -r testresult.zip BSchrome_winTest
after-script: # On test execution completion or build failure, send test report to e-mail lists
- pipe: atlassian/email-notify:0.3.11
variables:
<<: *email-notify-config
TO: 'email@email.com'
SUBJECT: "Test result for QA2 environment"
BODY_PLAIN: |
Please find the attached test result report to the email.
ATTACHMENTS: config/geb/build/reports/testresult.zip
步骤:
- cd build/reports
and
- zip -r testresult.zip BSchrome_winTest
因为- ./gradlew -DBASE_URL=qa2 clean BSchrome_win
失败而没有执行
我不希望bitbucket使步骤失败并停止执行Queue的步骤。
答案 0 :(得分:2)
bitbucket-pipelines.yml
文件仅在Unix上运行bash / shell命令。脚本运行器查找每个命令的返回状态代码,以查看它是否成功(status = 0)
或失败(status = non-zero)
。因此,您可以使用多种技术来控制此状态代码:
" || true"
./gradlew -DBASE_URL=qa2 clean BSchrome_win || true
在外壳程序命令的末尾添加"|| true"
时,它的意思是“忽略任何错误,并始终返回成功代码0”。更多信息:
./gradlew -DBASE_URL=qa2 clean BSchrome_win --continue
"--continue"
标志可用于防止单个测试失败停止整个任务。因此,如果一个测试或子步骤失败,则gradle将尝试继续运行其他测试,直到所有测试都运行为止。但是,如果重要步骤失败,它可能仍会返回错误。更多信息:Ignore Gradle Build Failure and continue build script?
after-script
部分after-script:
- cd config/geb # You may need this, if the current working directory is reset. Check with 'pwd'
- cd build/reports
- zip -r testresult.zip BSchrome_winTest
如果将创建zip的2个步骤移至after-script
部分,则它们将始终运行,而不管上一步的成功/失败状态。
答案 1 :(得分:0)
更好的解决方案
如果您希望脚本中的所有命令都能执行而不会出现错误,请在脚本顶部放置set +e
。
如果您只想忽略某个特定命令的错误,则在该命令前放置set +e
,在其后放置set -e
。
示例:
- set +e
- ./gradlew -DBASE_URL=qa2 clean BSchrome_win **# This step fails**
- set -e
对命令组也有效:
- set +e
- cd config/geb
- ./gradlew -DBASE_URL=qa2 clean BSchrome_win **# This step fails**
- cd config/geb
- set -e