dox 在docker容器中运行tox描述
项目描述
dox 是一个使用docker容器来运行本地测试的工具,受tox和virtualenv for python的启发。其配置有两个要素
应该运行哪些命令?
应该在什么镜像中运行它们?
如果有dox.yml文件,您就完成了。您需要指定要使用哪个镜像以及要运行哪些命令。您就赢了
image: ubuntu:trusty commands: | pip install . -r test-requirements.txt python setup.py test
您可能还没有准备好将dox作为生活方式的承诺,或者您可能想要在一个类似的项目中使用dox,该项目还没有这样做。
应该运行哪些命令
dox.yml优先。
如果有tox.ini文件,将使用基础 [testenv] 中指定的命令。
如果有.travis.yml文件,将使用脚本部分。
如果没有这些内容,dox 将尽力推断应该执行的操作。检查目录通常可以提供线索,如果你不是特别聪明的话。例如,如果你有一个 Gruntfile,你可能想运行 grunt。如果你有一个 Makefile,那么 make && make test 可能是你的选择。如果你有一个 Makefile.am,你可能想首先运行 autotools。如果你有一个 setup.py 文件,python setup.py test 可能是一个不错的选择(尽管在这种情况下,你可能没有做对,因为对 setuptools 的支持相当糟糕。)
经过所有这些之后,如果我们仍然无法确定你想做什么——最简单的方法是直接编辑一个名为 dox.yml 的文件,并添加一个部分告诉我们该做什么。
应该在哪个镜像中运行
再次强调,dox.yml 胜出,感谢你让事情变得简单!
如果有 tox.ini 文件,并且它包含 [docker] 部分,则将使用 “image” 中的值
[docker] image=ubuntu:trusty
如果没有在 docker 部分中指定 image 键或 dox.yml 中的 image 键,但仓库中有一个 Dockerfile,将使用 Dockerfile 构建一个新的镜像,并且测试命令将在该镜像内部运行。
如果所有这些都失败了,测试将在裸的 ubuntu 镜像中运行。祝你好运!
镜像缓存
每次运行实际上都与两个镜像相关联:基镜像和测试镜像。
上面提到的镜像就是基镜像。当你执行 dox 时,它将在 docker 中搜索指定名称的镜像。如果存在,则不执行任何操作。如果不存在,它将拉取它,或者,如果存在 Dockerfile,它将从 Dockerfile 构建它。在从 Dockerfile 构建的情况下,dox 将创建一个以源目录命名的镜像。所以如果你在 ~/src/openstack/nova 中,它会创建一个名为 “dox/nova/base” 的镜像。
测试镜像是由 dox 为测试运行创建的镜像。类似于基运行,它将有一个生成的名称,例如 “dox/nova/test”,类似于基镜像,它将生成一次然后不再改变。
如果你想重新生成测试镜像,你可以用 -r 选项运行 dox。如果你想重新生成/重新拉取所有内容,你可以用 --rebuild-all 选项运行它。
背后的原因是基镜像应该是真正的底层,它与仓库本身没有太多关系……它实际上不应该期望基于仓库的日常变化而有太大的变化。另一方面,测试镜像则更多基于仓库本身构建。例如,在基镜像中你可能想做一些事情
apt-get install libxml-dev
而在测试镜像中,你可能会想做一些事情
pip install -U requirements.txt
这两个都不会频繁更改,但第二个在日常中比第一个更有可能更改。
附加信息
无论如何,dox 都会将当前源目录挂载为容器中的卷,并在该上下文中运行命令。
dox 会尝试重用容器。由于源已挂载到容器中,因此像复制源目录或重新安装源到系统中这样的昂贵操作可以最小化。
Boot2Docker 支持
为了获得对不支持 natively docker 的非 Linux 操作系统的支持,有一个名为 boot2docker 的工具,它允许你在 VirtualBox 虚拟机中运行远程 docker 服务器,并在非 Linux 桌面上运行客户端。
自 docker 版本 1.3 开始,boot2docker 开始支持卷挂载。您需要至少在这个版本上才能拥有卷挂载支持。
如果你的用户名 id 与 boot2docker 虚拟机上的 docker 用户名不同,你需要在命令行中指定它,如下所示
dox --user-map=docker:1000:10
,则可以添加以下映射
dos --path-map=/Users/your_name:/home/your_name
高级
在dox运行中,您可以指定多个要使用的镜像。镜像可以通过命令行、dox.yml文件或tox.ini文件提供。
对于命令行,应通过–images选项以逗号分隔的列表形式提供镜像。
tox.ini文件也应使用逗号分隔的列表。
dox.yml文件应按数组列出镜像。
相同的准备和命令指令将按顺序在每个镜像上执行。
目前,dox不允许同时执行不同任务的多个镜像。然而,目标是将来允许这样的测试场景。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
dox-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 082d202e10527aa80c49fa5befc299006103f5070978352b9f7aa181af6b5648 |
|
MD5 | bd918ab60f96c2f71eefae60d3fda005 |
|
BLAKE2b-256 | 3601886cb4e3979fac801627095f7399f5e8eb6febfe9f76aed89a74b6f9c21d |
dox-0.2.0-py2-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d5055b78c1246997e88735931a9d154dcaf7229408cd39f23f5ec0fdb14510cb |
|
MD5 | 8d79a1b0353e1c6592629330a09fa611 |
|
BLAKE2b-256 | ffee9db6d66601798bb2b0724e901c37b683a39070a92fdebf3a3dc2748bcba6 |