[tox]
 minversion = 1.6
-envlist = py27,pep8, lint
+envlist = py27,pep8,lint,docs,docs-linkcheck
 skipsdist = True
 
 [testenv]
 [testenv:cover]
 commands = python setup.py testr --coverage --testr-args='{posargs}'
 
-[testenv:docs]
-commands = python setup.py build_sphinx
-
 [flake8]
 # H803 skipped on purpose per list discussion.
 # E123, E125 skipped as they are invalid PEP-8.
 ignore = E123,E125,H803,E302,E303,H104,H233,H236,H302,H404,H405,H904,D102,D100,D107
 builtins = _
 exclude=venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,dib-venv
+
+[testenv:docs]
+deps = -rdocs/requirements.txt
+commands =
+    sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
+    echo "Generated docs available in {toxinidir}/docs/_build/html"
+whitelist_externals = echo
+
+[testenv:docs-linkcheck]
+deps = -rdocs/requirements.txt
+commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck