Passing reports through docker in codecov gives er

2019-09-15 18:48发布

问题:

I'm trying to setup codecov as code coverage tool in my repository. I referred to this link to pass reports through docker container -

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

But travis ci fails and gives this error -

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

Here is my 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

How should I solve this? Thanks!

回答1:

I assume you refer to Codecov Outside Docker. The current error message already tells you that the three dots ... need to be replaced with a real Docker repository name, e.g. node:6-alpine.

What you're still missing is the part of running the tests (including reports) inside the Docker container, so that you can mv the test reports to the shared folder. You could achieve that by adding a custom Dockerfile based on node, similar to the one below. I chose a more or less full base image including Chrome and other tools to make your use case work:

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

That custom image needs to be built and then run like this (assuming the Dockerfile to be in your project root directory):

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

I suggest to change the .travis.yml like follows:

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

Another note: the coala/base image works similarly.