我正在使用concourse ci管道运行一些自动化测试。我的要求是,如果任何测试失败,则将构建标记为失败并通过电子邮件发送结果。有没有办法在大厅这样做?电子邮件功能运行正常,但是即使测试失败,构建也可以通过。
答案 0 :(得分:1)
在假设退出代码正确的前提下,您将需要在大厅上使用on failure步骤并将其添加到您的工作中,它看起来像这样
jobs:
- name: myBuild
plan:
- get: your-repo
passed: []
trigger: false
- task: run-tests
file: runMyTestsTask.yml
on_failure:
- put: send-an-email
params:
subject_text: "Your email subect i.e Failed Build"
body_text: "Your message when the build has failed"
on_success:
put: push-my-build
## Define your additional resources here
resources:
- name: send-an-email
type: email
source:
smtp:
host: smtp.example.com
port: "587" # this must be a string
username: a-user
password: my-password
from: build-system@example.com
to: [ "dev-team@example.com", "product@example.net" ] #optional if `params.additional_recipient` is specified
resource_types:
- name: email
type: docker-image
source:
repository: pcfseceng/email-resource
另外,如果您需要输出有关构建的一些相关信息,则可以通过包含一些环境变量来实现,这些环境变量将包装主题元数据,并且可以将其包含在电子邮件的正文中,以获取有关如何处理的更多详细信息。为此,请在https://github.com/pivotal-cf/email-resource上参阅电子邮件资源的文档。
答案 1 :(得分:0)
如果您是running JMeter in command-line non-GUI mode,则命令需要返回non-zero exit status code
即使测试失败,JMeter进程也有0
退出代码,因此任何CI系统都将执行视为成功:
如果您正在寻找仅JMeter的解决方案,则可以在测试计划中添加JSR223 Assertion并将以下代码放入“脚本”区域:
if (!prev.isSuccessful()) {
props.put('failure', 'true')
}
然后将tearDown Thread Group添加到您的测试计划中,并使用以下代码在其中放置JSR223 Sampler:
if (props.get('failure').equals('true')) {
System.exit(1)
}
如果JSR223断言Scope中的任何Sampler失败-整个JMeter进程将以退出代码1
完成,任何上游处理系统都将其视为错误。
另一个选择是考虑使用Taurus工具作为JMeter测试的包装器,Taurus提供了灵活的pass/fail criteria subsystem,使您可以定义阈值以考虑测试是否成功。如果超过阈值,Taurus将返回非零退出代码,该代码应由场所(或其他软件)“理解”