gpt4 book ai didi

CI 中的 PHPUnit 停滞

转载 作者:行者123 更新时间:2023-12-03 11:21:39 25 4
gpt4 key购买 nike

我们遇到了 PHPUnit 有时无法在 CI 中正确运行我们的测试套件的问题。该行为表现为大约 1/3 的测试未能启动并且 CI 步骤超时。有趣的是,我们没有看到这种行为:

  • 在我们的机器上本地
  • 每次我们运行测试
  • 发生在黄昏测试

  • 我们的设置是使用 docker compose 运行测试。我们专门先启动应用容器的依赖,然后暂停 30 秒等待它们上来(即数据库)。

    我尝试解决的一些问题并没有改变:
  • 在进程隔离开启的情况下运行测试。
  • 将测试套件拆分为两个以运行更少的测试(两个拆分都有相同的问题)

  • 测试在 Github Actions 中运行,这使得机器可以使用大约 7 GB 的内存以及多个内核。

    同样有趣的是,基于黄昏的测试从未像这样停滞不前,尽管它们使用相同的 docker-compose 文件但有额外的服务(如 Selenium)。

    我不确定这是否有明确的答案,但我现在不知道接下来要尝试什么(没有自己托管 GitHub Action 运行器)。

    失败测试的输出如下所示:
    + sleep 30
    + docker-compose -f docker-compose.ci.yml run --rm postgres pg_isready -h postgres -d testing -U testing -t 30
    postgres:5432 - accepting connections
    + docker-compose -f docker-compose.ci.yml run --no-deps backend phpunit '--filter=/::test[J-Z|j-z]/' --testdox
    Pulling backend (***.dkr.ecr.ap-southeast-2.amazonaws.com/builder:acb548c6125ad97e57e8070c414644c7e6f385f5)...
    acb548c6125ad97e57e8070c414644c7e6f385f5: Pulling from builder
    Digest: sha256:c84a53dbb201b809a2325a93c52d4a362eefa6de64ab98f759e43c5dd363aac2
    Status: Downloaded newer image for ***.dkr.ecr.ap-southeast-2.amazonaws.com/builder:acb548c6125ad97e57e8070c414644c7e6f385f5
    PHPUnit 9.1.5 by Sebastian Bergmann and contributors.

    ##[error]The operation was canceled.

    成功运行:
    + sleep 30
    + docker-compose -f docker-compose.ci.yml run --rm postgres pg_isready -h postgres -d testing -U testing -t 30
    postgres:5432 - accepting connections
    + docker-compose -f docker-compose.ci.yml run --no-deps backend phpunit '--filter=/::test[A-I|a-i]/' --testdox
    Pulling backend (***.dkr.ecr.ap-southeast-2.amazonaws.com/builder:acb548c6125ad97e57e8070c414644c7e6f385f5)...
    acb548c6125ad97e57e8070c414644c7e6f385f5: Pulling from builder
    Digest: sha256:c84a53dbb201b809a2325a93c52d4a362eefa6de64ab98f759e43c5dd363aac2
    Status: Downloaded newer image for ***.dkr.ecr.ap-southeast-2.amazonaws.com/builder:acb548c6125ad97e57e8070c414644c7e6f385f5
    PHPUnit 9.1.5 by Sebastian Bergmann and contributors.

    Audit Controller (Tests\Feature\Admin\AuditController)
    ✔ Audits index

    (我已经截断了完整的测试输出)

    有时我会看到它在停止之前达到第一个测试。

    最佳答案

    我在 Codeception 框架的测试中遇到了类似(但不一样)的问题,但我没有使用 Github Actions 和 docker。
    问题在于测试期间如何将数据库部署到服务器。由于该数据库已部署了很长时间,但在那之后,测试开始了。我们对服务器没有限制,所以没有超时。
    在本地机器上它工作正常。
    正如我所见,您正在使用数据库运行功能/验收测试,因此我建议检查数据库模块。

    关于CI 中的 PHPUnit 停滞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62125230/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com