mongodb - 带有嵌入式 mongodb 的 gitlab 管道

标签 mongodb gitlab gitlab-ci

我正在尝试为使用嵌入式 mongo 实例的 gradle java 应用程序构建管道。我已经构建了一个包含 java 和 mongo 的容器。但是,对于需要嵌入式 mongo 实例的所有测试,我不断收到以下错误。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedMongoServer' 
defined in class path resource [org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.class]: 
Invocation of init method failed; nested exception is java.io.IOException: 
Cannot run program "/tmp/extract-f816c11c-614b-46d7-ad29-68923ca9d624extractmongod": error=2, No such file or directory

我的 gitlab-ci.yml 看起来像这样:

image: java:latest
services:
  - docker:dind

variables:
  GRADLE_OPTS: "-Dorg.gradle.daemon=false"
  DOCKER_DRIVER: overlay
  SPRING_PROFILES_ACTIVE: gitlab-ci

stages:
  - build
  - test

build:
  stage: build
  script: ./gradlew --build-cache assemble
  cache:
    key: "$CI_COMMIT_REF_NAME"
    policy: push
    paths:
      - build
      - .gradle

test:
  stage: test
  image: registry.gitlab.com/path/to/explorer-ci:1.0.0
  script: ./gradlew check --debug
  cache:
    key: "$CI_COMMIT_REF_NAME"
    policy: pull
    paths:
      - build
      - .gradle

构建工作正常,测试工作失败。我的 explorer-ci 容器是使用以下 Dockerfile 构建的

FROM openjdk:8-jdk-alpine

RUN apk update && \
    apk add --no-cache \
        mongodb \
        bash

VOLUME /data/db
VOLUME log

RUN ["mongod", "--smallfiles", "--fork", "--logpath", "log/mongodb.log"]

我花了一个星期的时间处理了一堆不同的配置,但似乎无法破解它。请注意,构建/测试在我的本地机器上运行良好。关于我做错了什么的任何想法?

最佳答案

经过反射(reflection),由于我使用的是嵌入式 mongo 实例,因此我不依赖 mongodb 来构建或测试。我现在正在使用以下 gitlab-ci.yaml 并且效果很好。

image: openjdk:8-jdk

variables:
  GRADLE_OPTS: "-Dorg.gradle.daemon=false"
  DOCKER_DRIVER: overlay
  SPRING_PROFILES_ACTIVE: gitlab-ci

stages:
  - build
  - test

build:
  stage: build
  script: ./gradlew --build-cache assemble
  cache:
    key: "$CI_COMMIT_REF_NAME"
    policy: push
    paths:
      - build
      - .gradle

test:
  stage: test
  script: ./gradlew check
  cache:
    key: "$CI_COMMIT_REF_NAME"
    policy: pull
    paths:
      - build
      - .gradle

关于mongodb - 带有嵌入式 mongodb 的 gitlab 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49492457/

相关文章:

mysql - 几乎实时的 RESTful 成就可扩展的 Web 服务,如何减少调用次数?

mongodb - 使用 MongoDB 64b 2.x 的 aws (m1.large) 延迟

gitlab - 未找到开 Jest 测试

git - 在 GitLab 中从命令行 merge merge 请求

ruby-on-rails - Gitlab CI : Is it possible to speed up 'bundle install' ?

docker - 在 gitlab ci 作业中使用 kubectl 创建 ImagePullSecret 时出现奇怪错误

nginx - 带有 nginx 代理的 Gitlab 8 无法下载 zip,将公共(public)仓库克隆为访客,也无法在 CI 中构建

git - 在 GitLab Pipelines 中,有没有办法在分离 merge 请求时运行管道?

node.js - 通过将 useNewUrlParser 设置为 true 来避免 "current URL string parser is deprecated"警告

mongodb - Mongoose & TypeScript - 属性 '_doc' 在类型 'IEventModel' 上不存在