【问题标题】:Failed test is hanging Jenkins pipeline失败的测试正在挂起 Jenkins 管道
【发布时间】:2019-11-23 22:23:19
【问题描述】:

我正在 Jenkins 上创建一个管道,以使用 Docker 容器测试和部署我的 node.js 应用程序。但是我的管道卡住了,因为测试失败了。我期望的行为是管道完成而不执行下一个阶段,但它不会卡住。

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh '''docker build --tag my-web:$BUILD_NUMBER .
docker stop my-web&& docker rm my-web
echo "Build step finished"'''
      }
    }
    stage('Unit test') {
      steps {
        sh '''docker build -t my-web-test -f Dockerfile.test .
docker run --rm my-web-test
'''
      }
    }
    stage('Run') {
      steps {
        sh '''docker run --name my-web -p 3000:3000 my-web:$BUILD_NUMBER node /var/www/index.js &
'''
        echo 'RUNNING'
      }
    }
    stage('End') {
      steps {
        echo 'End of pipeline'
      }
    }
  }
}

Dockerfile.test

FROM node:alpine

RUN mkdir /var/test
WORKDIR /var/test
COPY package.json /var/test/
RUN npm install && npm install -g mocha
COPY src/ /var/test/
CMD ["mocha", "tests/", "--recursive"]

当我触发管道时:

  • 如果我从管道中删除 Unit test 阶段,一切正常OK,应用程序开始运行。
  • 如果我删除 Unit test 阶段,测试阶段开始,我得到 14 次测试通过和 1 次失败的结果,但管道在此步骤中挂起,因此 Run 步骤永远不会触发和管道保持Running 状态。

14 次传球(2 秒)

1 次失败

1) 检查用户首次登录

   Should redirect to change-password page:

 Error: expected "Location" of "/dashboard/change-password", got "/dashboard"

  at Test._assertHeader (node_modules/supertest/lib/test.js:249:12)

  at Test._assertFunction (node_modules/supertest/lib/test.js:283:11)

  at Test.assert (node_modules/supertest/lib/test.js:173:18)

  at localAssert (node_modules/supertest/lib/test.js:131:12)

  at /var/test/node_modules/supertest/lib/test.js:128:5

  at Test.Request.callback (node_modules/superagent/lib/node/index.js:728:3)

  at IncomingMessage.<anonymous> (node_modules/superagent/lib/node/index.js:916:18)

  at endReadableNT (_stream_readable.js:1154:12)

  at processTicksAndRejections (internal/process/task_queues.js:77:11)

【问题讨论】:

    标签: node.js unit-testing docker jenkins mocha.js


    【解决方案1】:

    较新版本的 mocha 需要退出,否则服务器会继续运行,因此永远无法到达下一个阶段。

    mocha --exit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-28
      • 2015-10-12
      • 2011-09-16
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 2012-02-26
      • 2015-02-04
      相关资源
      最近更新 更多