在 codecov 中通过 docker 传递报告会出错

Passing reports through docker in codecov gives error

我正在尝试将 codecov 设置为我的存储库中的代码覆盖工具。我提到这个 link 通过 docker 容器传递报告 -

Link - https://github.com/codecov/support/wiki/Testing-with-Docker

但是 travis ci 失败并给出了这个错误 -

docker: Error parsing reference: "..." is not a valid repository/tag.

这是我的 travis.yml

sudo: required
dist: trusty
language: node_js
node_js:
- 6
before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- docker run -v "$PWD/shared:/shared" ...
before_script:
- ng build
script:
- ng test --watch=false
- ng lint
- >
  docker run -ti -v $(pwd):/app --workdir=/app coala/base coala --version
after_success:
- bash ./deploy.sh
- bash <(curl -s https://codecov.io/bash)
- mv -r coverage/ shared
cache:
    bundler: true
    directories:
    - node_modules
    - .coala-cache
services: docker
branches:
   only:
- angular

我该如何解决?谢谢!

我假设你指的是 Codecov Outside Docker。当前的错误消息已经告诉您三个点 ... 需要替换为真实的 Docker 存储库名称,例如node:6-alpine.

您仍然缺少的是运行测试 Docker 容器内的部分(包括报告),这样您就可以mv 测试报告到共享文件夹。您可以通过添加一个基于节点的自定义 Docker 文件来实现这一点,类似于下面的文件。我选择了一个或多或少的完整基础图像,包括 Chrome 和其他工具来使您的用例正常工作:

FROM markadams/chromium-xvfb-js:7
WORKDIR /proj
CMD npm install && \
    node_modules/.bin/ng build && \
    node_modules/.bin/ng test --watch=false && \
    node_modules/.bin/ng lint && \
    mkdir -p shared && \
    mv coverage.txt shared

需要构建自定义图像,然后 运行 像这样(假设 Docker 文件位于您的项目根目录中):

docker build -t ci-build .
docker run --rm -v "$(pwd):/proj" ci-build

我建议更改 .travis.yml 如下:

sudo: required
dist: trusty
language: node_js
node_js:
- 6
before_install:
- docker build -t ci-build .
script:
- >
  docker run --rm -v $(pwd):/proj ci-build
- >
  docker run -ti -v $(pwd):/app --workdir=/app coala/base coala --version
after_success:
- bash ./deploy.sh
- bash <(curl -s https://codecov.io/bash)
cache:
    bundler: true
    directories:
    - node_modules
    - .coala-cache
services: docker
branches:
   only:
- angular

另请注意:coala/base 图像的工作方式类似。