【问题标题】:Run test script in continuous integration using CircleCI?使用 CircleCI 在持续集成中运行测试脚本?
【发布时间】:2021-07-04 07:35:36
【问题描述】:

我们将 CircleCI 用于 CI/CD。在持续集成过程中,我想运行一个我编写的测试脚本,它会生成一些数据供我的应用程序使用。然后另一个脚本将运行并确保在一定时间内处理数据(性能测试)。有没有办法通过 CI/CD 使用 CircleCI 来做到这一点?

我有一个 Spark Streaming 应用程序,它从 Kafka 读取数据,进行处理,然后将其放入数据库。

我生成一些数据并将其发送到 Kafka。同时,Spark 程序正在运行(我的脚本没有启动它,我之前手动启动了它)。 Spark 应用程序处理这些数据。我的脚本在最初生成数据后仅等待大约 1 分钟,然后进行 API 调用以获取 Spark 处理的数据的一些指标,基本上是性能指标。

我希望 CircleCI 从 Github 获取代码,构建它,将其部署到“测试”服务器,然后在安装了 Spark/Kafka 的测试环境中运行我的 Spark 应用程序。然后我希望 CircleCI 运行我的自定义脚本。我的脚本将在某个变量中返回一些性能值,比如 X。我本质上想让 CircleCI 将 X 与 assert(X < 60) 之类的值进行比较,然后我想让 CircleCI 说如果 X < 60 == False 测试失败了。这可能吗?

【问题讨论】:

  • 是的,当然。你可以在程序中做的任何事情,你都可以在 CircleCI 中做。但是,这里没有关于您的架构的信息,所以我只能说“有可能”:-)
  • @halfer 感谢您的回复,我已经更新了我的问题并提供了更多详细信息!
  • Kafka、Spark 和您的程序是否在 CircleCI 进程中运行?通常,最好将其安排为自包含,而不是访问远程服务。这将减少网络问题,但它也确保您使用一组固定的数据为您的系统播种,而不是依赖处于未知/变化状态的系统。
  • 我打算让 CircleCI 将我编译的代码转移到测试环境并在那里运行测试。我曾考虑让 circleCI 运行测试环境的映像,但我不确定 Spark 是如何工作的,因为它是分布式的,我需要在分布式集群中对其进行测试
  • 啊,对,所以这确实是 CD 问题。当然,您可以这样做 - 只需使用在 CircleCI 注册的私钥并使用它将 tarball scp 到目标服务器并远程解压缩。然后,您可以通过 SSH 远程启动服务器,然后在 CircleCI 上或通过远程脚本运行测试。正如我之前所说,最好安装一个测试 Spark,这样您就可以删除其现有数据并为其提供标准种子集。

标签: continuous-integration circleci


【解决方案1】:

我意识到这个问题之前有人问过,但是如果有人有类似的要求,this circleci pipeline 会针对本地部署的 API 服务器运行 dockerised 集成和性能测试。

需要解决的具体问题:

  1. 使用pwt 等待服务器在cli 上的circleci 脚本中启动
  2. 使用 wrkLUA 脚本对 API 运行性能测试

使用 docker (OSX) 在本地运行

git clone https://github.com/simonmittag/jabba.git
circleci local execute --job integration
circleci local execute --job performance

*免责声明:我参与了一些链接的 github 项目。

【讨论】:

  • 此答案中的第一个链接已损坏。应编辑答案,以便为问题提供独立的解决方案。链接可以提供额外的信息,但不应成为答案的实质。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多