在主机中,基于 git 管理一个目录(含有 sphinx/source/conf.py),将其挂载到 /home/python/doc ;另外将 build 目录挂载到 /home/python/build 。
具体的目录结构为:
build/
sphinx/
├─source/
| ├─conf.py
| ├─index.rst
| ├─_static/
| └─_templates/
├─.git/
├─make.bat
└─Makefile
$ chmod -R +rw build
$ rm -rf build/**
$ docker run --rm -v "$(pwd)":/home/python/doc -v "$(pwd)/build":/home/python/build biggates/docker-sphinx-latex-cn:builder make html
产物是整个 build/html 目录。
$ docker run --rm -v "$(pwd)":/home/python/doc -v "$(pwd)/build":/home/python/build biggates/docker-sphinx-latex-cn:latex-builder make latexpdf
产物在 build/latex/ 。
在 Jenkins 中有如下限制:
root 用户/root/workspace/ 目录在 Jenkinsfile 中按如下逻辑编写即可:
pipeline {
// 在前面的 stage 里面检出项目,并处理 `docs` 目录中含有 sphinx 相关的内容
stage('Sphinx build') {
agent {
docker {
// reuseNode 是为了直接利用之前检出好的项目
reuseNode true
image 'biggates/docker-sphinx-latex-cn:builder'
// jenkins 会强制用 root 用户登录,因此手动再设置一次 PATH 否则找不到 sphinx
args "-e PATH=/home/python/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
}
}
steps {
// 安装项目中的 requirements,大部分常用项目已安装所以这里会比较快
sh "pip install -r requirements.txt"
// 如果使用 autodoc 组件,则还需要手动将当前目录安装到 pip
sh "pip install -e ."
dir ('./docs') {
sh "make html"
}
}
}
}
$ docker build -t docker-sphinx-latex-cn:base -f base/Dockerfile .
$ docker build -t docker-sphinx-latex-cn:builder -f builder/Dockerfile .
$ docker build -t docker-sphinx-latex-cn:latex-base -f latex-base/Dockerfile .
$ docker build -t docker-sphinx-latex-cn:latex-builder -f latex-builder/Dockerfile .
$ docker build -t docker-sphinx-latex-cn:scipy-builder -f scipy-builder/Dockerfile .
Content type
Image
Digest
sha256:2d9fca7fd…
Size
1.2 GB
Last updated
almost 3 years ago
docker pull biggates/docker-sphinx-latex-cn:scipy-latex-builder