将CI docker cp文件从实例圈到工件

时间:2018-07-20 02:18:18

标签: docker circleci

我正在使用Docker运行CircleCI,然后测试我的代码,在测试之后,测试覆盖率记录到了一个txt文件中,我想将其复制到工件文件夹中。

- run:
      name: Run test coverage
      command: |
        docker-compose exec api mkdir /tmp_reports
        docker-compose exec api coverage report > /tmp_reports/coverage_output.txt
        docker cp api:/tmp_reports/coverage_output.txt /tmp/coverage_results
  - store_artifacts:
      path: /tmp/coverage_results

CircleCI错误

/bin/bash: line 1: /tmp_reports/coverage_output.txt: No such file or directory
Exited with code 1

我已在本地运行此文件并将文件从docker容器复制到我的本地目录,但是ci圈似乎与此有关。有人可以帮我指出正确的方向吗?

1 个答案:

答案 0 :(得分:1)

在脚本的第二行上,您将输出发送到文件> /tmp_reports/coverage_output.txt,该文件写入容器外部的文件。输出的重定向由容器外部的bash处理。

因此,在第1行上,在容器内创建目录,而在第2行上,由于目录/tmp_reports在容器外部不存在,因此失败。

您可以通过将所有3行替换为:

来解决此问题。
mkdir -p /tmp/coverage_results
docker-compose exec api coverage report > /tmp/coverage_results/coverage_output.txt