如果测试失败,则使 docker 构建失败
Make docker build fail if tests fail
Docker 文件
FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
RUN npm install gulp -g
COPY . .
run gulp build --build
run npm test
EXPOSE 80
CMD [ "npm", "start" ]
测试 运行 使用 mocha --recursive
build.sh
docker build -t my-app .
echo $?
我如何检测到一个摩卡测试失败,因此 npm test
应该不行,docker build
也不行?
我可能漏掉了一些东西。
我建议遵循一些 docker 和节点应用程序的最佳实践。您不应该在带有 npm install 和 运行 内部测试的容器中构建您的应用程序。构建和测试生命周期可以在 CI/CD 服务器上 运行(例如 TravisCI https://travis-ci.org/ or CircleCI https://circleci.com - public GitHub 存储库都是免费的) .在您的 CI 管道中,您可以检测到失败的 built/test 并且可以更轻松地配置 CI 以在失败后不构建您的图像。您的捆绑应用程序应该从 CI 服务器复制到您的 docker 容器内,然后您应该只在容器内启动您的应用程序。
如果命令的退出代码不为零,则 Dockerfile 中的 RUN
将失败。如果发生这种情况,docker build
也会失败并返回非零退出代码。
您的 npm test
脚本在测试失败时需要 return 非零退出代码。
作为参考,您可以这样检查退出代码:
$ npm test
$ echo $?
您可以将行 run npm test
更改为 run npm test || exit 1
运行 快速测试并确认构建失败。这是屏幕截图。
Docker 文件
FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
RUN npm install gulp -g
COPY . .
run gulp build --build
run npm test
EXPOSE 80
CMD [ "npm", "start" ]
测试 运行 使用 mocha --recursive
build.sh
docker build -t my-app .
echo $?
我如何检测到一个摩卡测试失败,因此 npm test
应该不行,docker build
也不行?
我可能漏掉了一些东西。
我建议遵循一些 docker 和节点应用程序的最佳实践。您不应该在带有 npm install 和 运行 内部测试的容器中构建您的应用程序。构建和测试生命周期可以在 CI/CD 服务器上 运行(例如 TravisCI https://travis-ci.org/ or CircleCI https://circleci.com - public GitHub 存储库都是免费的) .在您的 CI 管道中,您可以检测到失败的 built/test 并且可以更轻松地配置 CI 以在失败后不构建您的图像。您的捆绑应用程序应该从 CI 服务器复制到您的 docker 容器内,然后您应该只在容器内启动您的应用程序。
RUN
将失败。如果发生这种情况,docker build
也会失败并返回非零退出代码。
您的 npm test
脚本在测试失败时需要 return 非零退出代码。
作为参考,您可以这样检查退出代码:
$ npm test
$ echo $?
您可以将行 run npm test
更改为 run npm test || exit 1
运行 快速测试并确认构建失败。这是屏幕截图。