Node.js Gitlab CI作业在运行mocha测试之前成功

Node.js Gitlab CI作业在运行mocha测试之前成功,node.js,gitlab,mocha.js,gitlab-ci,gitlab-ci-runner,Node.js,Gitlab,Mocha.js,Gitlab Ci,Gitlab Ci Runner,我发现我的Gitlab作业正在成功并在实际测试运行之前结束 首先,我为我的应用程序安装所需的依赖项,然后调用mocha命令,但是在它们有任何输出之前,作业成功了 My.gitlab-ci.yml: image: node:lts-alpine stages: - test test: stage: test services: - mongo:latest script: - cd server/ - apk add --update git

我发现我的Gitlab作业正在成功并在实际测试运行之前结束

首先,我为我的应用程序安装所需的依赖项,然后调用
mocha
命令,但是在它们有任何输出之前,作业成功了

My.gitlab-ci.yml:

image: node:lts-alpine

stages:
  - test

test:
  stage: test
  services:
    - mongo:latest
  script:
    - cd server/
    - apk add --update git
    - apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python
    - npm install --quiet node-gyp -g
    - npm install
    - npm rebuild bcrypt --build-from-source
    - npm i mocha -g
    - mocha ./src/tests/unit/. --timeout 10000 --exit
    - mocha ./src/tests/integration/. --timeout 10000 --exit
  cache:
    key: "$CI_PROJECT_ID"
    paths:
      - server/node_modules/
以及从控制台输出的Runner的最后几行:

...
make: Leaving directory '/builds/myapp/myapp/server/node_modules/bcrypt/build'
bcrypt@3.0.2 /builds/myapp/myapp/server/node_modules/bcrypt
$ npm i mocha -g
/usr/local/bin/mocha -> /usr/local/lib/node_modules/mocha/bin/mocha
/usr/local/bin/_mocha -> /usr/local/lib/node_modules/mocha/bin/_mocha
+ mocha@6.1.4
added 115 packages from 509 contributors in 5.54s
$ mocha ./src/tests/unit/. --timeout 10000 --exit
$ mocha ./src/tests/integration/. --timeout 10000 --exit
Creating cache 8738844...
server/node_modules/: found 19633 matching files   
Uploading cache.zip to https://storage.googleapis.com/gitlab-com-runners-cache/project/XXXX/XXXX 
Created cache
Job succeeded
我的文件夹结构:

- root
    - client/
    - server/
        public/
        src/
            tests/
                unit/
                    someUnitTest.js
                integration/
                    someIntegrationTest.js
        package.json
        ...

为什么不等待命令启动/完成?在当地,它们当然起作用。我还尝试使用
npm run test
作为2个mocha命令的别名,但结果相同。

我发现了问题:

mocha
命令没有返回任何内容,因为它们在启动前失败。它们的顶部有一个
require('app.js')
,用于启动服务器等等,由于缺少一个.env文件,这项测试和mocha测试都以静默方式失败


因此,正确地包含一个.env文件解决了问题。

cd-server/
您正在那里安装应用程序。你确定你的代码也在那里吗?这可能是因为没有创建任何要运行的测试。在本地,您可能不运行
cd服务器/
在安装mocha Globally之后,您可能需要再次执行
cd../
。代码肯定在那里,它基本上是一个自己的npm项目。