Docker CI 无法与 mongodb-memory-server 一起使用

2024-04-13

我使用 mongodb-memory-server 测试了 mongo 中的一些存储库功能,并在本地计算机上成功运行了单元测试,但是当将此代码推送到 GitHub 时,它运行失败。我不确定问题是关于 docker 配置还是关于 mongodb-memory-server 版本。 这是来自 GitHub 的日志:

9W45p5LM91Vj","tmpDir":{"name":"/tmp/mongo-mem--188-9W45p5LM91Vj"},"uri":"mongodb://127.0.0.1:42823/d791a878-09ac-4ccc-896d-ea603e2676ad?"}
2021-06-05T09:45:33.351Z MongoMS:MongoBinary MongoBinary options: {
  "downloadDir": "/__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries",
  "platform": "linux",
  "arch": "x64",
  "version": "4.2.8",
  "checkMD5": false
}
2021-06-05T09:45:33.356Z MongoMS:getos Trying LSB-Release
2021-06-05T09:45:33.372Z MongoMS:getos Trying OS-Release
2021-06-05T09:45:33.375Z MongoMS:MongoBinaryDownloadUrl Using "mongodb-linux-x86_64-debian92-4.2.8.tgz" as the Archive String
2021-06-05T09:45:33.375Z MongoMS:MongoBinaryDownloadUrl Using "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz" as the Download-URL
2021-06-05T09:45:33.377Z MongoMS:MongoBinaryDownload Downloading: "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz"
2021-06-05T09:45:33.377Z MongoMS:MongoBinaryDownload trying to download https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz
2021-06-05T09:45:34.756Z MongoMS:MongoBinaryDownload moved /__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries/mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz.downloading to /__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries/mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz
2021-06-05T09:45:34.757Z MongoMS:MongoBinaryDownload extract(): /__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries/4.2.8
2021-06-05T09:45:37.293Z MongoMS:MongoBinary MongoBinary: Download lock removed
2021-06-05T09:45:37.294Z MongoMS:MongoBinary MongoBinary: Mongod binary path: "/__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries/4.2.8/mongod"
2021-06-05T09:45:37.309Z MongoMS:MongoInstance Mongo[42823]: Called MongoInstance._launchKiller(parent: 188, child: 203):
2021-06-05T09:45:37.323Z MongoMS:MongoInstance Mongo[42823]: STDERR: /__w/son-git-test/son-git-test/node_modules/.cache/mongodb-memory-server/mongodb-binaries/4.2.8/mongod: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

2021-06-05T09:45:37.324Z MongoMS:MongoInstance Mongo[42823]: Mongod instance closed with an non-0 code!
2021-06-05T09:45:37.324Z MongoMS:MongoInstance Mongo[42823]: CLOSE: 127
2021-06-05T09:45:37.325Z MongoMS:MongoInstance Mongo[42823]: MongodbInstance: Instance has failed: Mongod instance closed with code "127"
2021-06-05T09:45:37.331Z MongoMS:MongoMemoryServer Called MongoMemoryServer.stop() method
2021-06-05T09:45:37.331Z MongoMS:MongoMemoryServer Called MongoMemoryServer.ensureInstance() method
2021-06-05T09:45:37.349Z MongoMS:MongoInstance Mongo[42823]: [MongoKiller]: exit - [null,"SIGTERM"]
FAIL src/squid/squid.controller.spec.ts (9.945 s)
  ● Console

    console.log
      before each

      at Object.<anonymous> (squid/squid.controller.spec.ts:19:13)

    console.log
      Downloading MongoDB 4.2.8: 0 % (0mb / 126.5mb)

      at MongoBinaryDownload.Object.<anonymous>.MongoBinaryDownload.printDownloadProgress (../node_modules/mongodb-memory-server-core/src/util/MongoBinaryDownload.ts:424:15)

  ● SquidController › should be defined

    Failed: "Mongod instance closed with code \"127\""

      16 |   let controller: SquidController;
      17 |
    > 18 |   beforeEach(async () => {
         |   ^
      19 |     console.log('before each');
      20 |     const module: TestingModule = await Test.createTestingModule({
      21 |       imports: [

      at Env.beforeEach (../node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:46:24)
      at Suite.<anonymous> (squid/squid.controller.spec.ts:18:3)
      at Object.<anonymous> (squid/squid.controller.spec.ts:15:1) 

这是 gitflow 配置:

name: Code quality
on:
  pull_request:
    branches:
      - develop
  push:
    branches:
      - develop

defaults:
  run:
    shell: bash

jobs:
  Code-Quality:
    name: Code quality
    runs-on: ubuntu-latest
    container: node:lts-slim
    steps:
      - uses: actions/checkout@v2
      - name: Install dependency
        run: yarn install --frozen-lockfile
      - name: Check lint and format
        run: |
          yarn format:check
          yarn lint:check
      - name: checking unit test
        run: yarn test

这是单元测试代码:

import { Test, TestingModule } from '@nestjs/testing';
import { MongooseModule } from '@nestjs/mongoose';

import { SquidController } from './squid.controller';
import { SquidService } from './squid.service';
import {
  closeInMongodConnection,
  rootMongooseTestModule,
} from '../test-utils/mongo/MongooseTestModule';
import { SquidSchema } from './model/squid.schema';

// May require additional time for downloading MongoDB binaries
jasmine.DEFAULT_TIMEOUT_INTERVAL = 600000;

describe('SquidController', () => {
  let controller: SquidController;

  beforeEach(async () => {
    console.log('before each');
    const module: TestingModule = await Test.createTestingModule({
      imports: [
        rootMongooseTestModule(),
        MongooseModule.forFeature([{ name: 'Squid', schema: SquidSchema }]),
      ],
      controllers: [SquidController],
      providers: [SquidService],
    }).compile();

    controller = module.get<SquidController>(SquidController);
  });

  it('should be defined', () => {
    expect(controller).toBeDefined();
  });

  afterAll(async () => {
    await closeInMongodConnection();
  });
});

经过查找,我发现问题出在哪里。该问题与Node版本有关。 Mongo 还没有 Node slim/alpine 的构建版本。 我们可以通过更新节点图像来修复:(容器:节点:14.17.0)

name: Code quality
on:
  pull_request:
    branches:
      - develop
  push:
    branches:
      - develop

defaults:
  run:
    shell: bash

jobs:
  Code-Quality:
    name: Code quality
    runs-on: ubuntu-latest
    container: node:14.17.0
    steps:
      - uses: actions/checkout@v2
      - name: Install dependency
        run: yarn install --frozen-lockfile
      - name: Check lint and format
        run: |
          yarn format:check
          yarn lint:check
      - name: checking unit test
        run: yarn test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker CI 无法与 mongodb-memory-server 一起使用 的相关文章

随机推荐

  • neo4j 在从 csv 导入期间指定数据类型

    有没有办法在导入时告诉neo4j值的类型 例如 neo4j 是否知道 2015 0104T10 33 44 是日期还是字符串 thanks Neo4j 使用 Java 原始类型 字符串或数组作为属性值 没有日期类型 所以 2015 0104
  • ssh-add,自动添加私钥

    我有一个公私 ssh 密钥对 由ssh keygen without密码 我将它与我的 bitbucket 帐户一起使用 特别是与 Mercurial 存储库一起使用 通常我在我的家庭工作电脑中手动添加私钥 使用ssh add ssh id
  • 获取屏幕分辨率作为cmd中的变量

    我需要一个脚本来根据所使用的屏幕分辨率复制特定图像 到目前为止我发现wmic desktopmonitor get screenheight给了我适当的输出 但我在将其解析为可用变量时遇到问题 问题是输出分为三行 我只需要第二行的信息 有人
  • 从详细信息选项卡中获取文件描述

    我希望能够从 dll 或 sys 文件的详细信息选项卡中获取文件描述字符串 我尝试过多种方法来做到这一点 但无法让它们点击 无论如何 是否可以通过命令行执行此操作 使其在屏幕上生成输出 我对使用 VB 提供的 FileVersion des
  • 判断鼠标是否位于表单上方的最佳方法是什么?

    我想通了如何捕获鼠标点击 https stackoverflow com questions 2866936 how can i add an event handler to an event by name覆盖整个表单 但此方法不能很好
  • 从 file:// 方案运行的应用程序出现 CORS 错误

    我有一个 AngularJS Cordova 应用程序 它轮询远程服务器上的 JSON 服务 http method GET url http example com index php 在浏览器中开发并在我的 Intranet apach
  • Vuetify 在浅色和深色主题之间切换(使用 vuex)

    所以在我的 Vue 项目中 我基本上有两个页面 组件 将根据 URL 使用 vue router 显示 我可以通过按钮在这些页面 组件之间切换 我还使用 VueX 来管理一些数据 现在 我在其中一个组件中添加了一个开关 用于在 Vuetif
  • 删除组合框的边框

    我正在使用 C 开发一个用于显示信息的表单 但我仍然需要允许对信息进行一些操作 我真正想做的是从组合框中删除边框 这将允许我显示信息 同时还允许用户选择集合中的其他项目 而不必显示所有项目 更具体地说 我有一个包含 4 或 5 个电子邮件地
  • 我网站的 CSS 何时会影响我的搜索引擎排名?

    起初我认为 css 绝对没有什么用处 只是当用户在浏览器中查看文档时设计文档样式 但后来我意识到搜索引擎也在索引页面中使用CSS 搜索引擎不会将内容编入索引display hidden我相信 并且严厉惩罚使用关键字堆叠的网站 用户从未见过的
  • POSIX Shell 反斜杠混淆

    我正在尝试创建一个具有简单功能的 shell 脚本 但似乎我无法理解如何正确处理反斜杠 我的功能之一如下所示 bin sh func cmd printf s n cmd echo e cmd func NAME n 这是正确的输出 因为我
  • 在 HTTPS/Web Sockets 安全上运行的 Webpack 开发服务器

    通常在开发者模式下 Webpack 使用 HTTP 运行 通常有一个 Web 服务器通过 HTTP 和 webpack 在单独的端口上使用 http websockets 提供内容 是否可以在 https 上运行 Web 服务器 并在 ht
  • 处理 Moose 中的多重继承构造函数

    问候 我在学Moose http search cpan org drolsky Moose 我正在尝试写一个CGI 应用 http search cpan org markstos CGI Application Moose 的子类 由于
  • 使用热键提交 HTML 表单?

    我有一个非常简单的 HTML 表单 仅包含一个提交按钮和一个文本区域 有没有一种简单的方法可以使用热键来提交此表单 而不是按按钮 提前致谢 提交按钮可以有访问键 http webaim org techniques keyboard acc
  • Google 语音流 api 的 Grpc 代理服务器没有响应 ( Grpc.Core.RpcException )

    我们正在尝试实现 GRPC 代理服务器 ASP NET Core 控制台应用程序 它将传入数据代理到 Google Speech 流 api 代码与中几乎相同示例应用程序 https cloud google com speech docs
  • RestSharp 在上传时将整个文件加载到内存中。如何避免呢?

    我在 Mono 项目中使用 RestSharp 上传一些文件 我注意到上传大文件时 内存会大幅增长 看着RestSharp源代码 https github com restsharp RestSharp blob master src Re
  • UIAccessibility 更改 UITableView 配音公告(第 # 行)

    启用 VoiceOver 后 用户可以使用 3 指滑动手势来滚动 TableView VoiceOver 向用户口头宣布一个短语 指示他们在桌面视图上的位置 即可见的行 例如 第 1 行到第 4 行 共 5 行 我想覆盖此口头提示并通过画外
  • “找不到方法:‘System.Net.Http.HttpRequestMessage System.Web.Http.ApiController.get_Request()’。”

    这是我的控制器 using System using System Collections Generic using System Linq using System Net using System Net Http using Sys
  • 如何在 Google Colabs 中使用参数解析 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的以下代码产生一些错误 import argparse ap argparse ArgumentParser args ap parse
  • 如何向 ASP.Net MVC 5 Identity 添加外键引用?

    我有一个使用 ASP Net Identity 的新 ASP NET MVC 5 1 项目 它看起来可靠且有希望 但今天我花了近 9 个小时来做 一些简单的事情 如果使用 SQL 我的问题是 我无法通过 CodeFirst 创建一个带有默认
  • Docker CI 无法与 mongodb-memory-server 一起使用

    我使用 mongodb memory server 测试了 mongo 中的一些存储库功能 并在本地计算机上成功运行了单元测试 但是当将此代码推送到 GitHub 时 它运行失败 我不确定问题是关于 docker 配置还是关于 mongod