如何编写.gitlab-ci.yml部署Sphinx静态页面到GitLab Pages?
解决GitLab Pages部署Sphinx静态页面的CI配置问题
嘿,我来帮你搞定这个GitLab Pages部署的问题!你的配置之所以失效,核心原因是GitLab Pages对部署文件的存放路径有硬性要求——必须放在项目根目录的public文件夹里,而你之前指定的docs/build/html不符合这个规则。
下面是修正后的.gitlab-ci.yml配置,分两种场景供你选择:
场景1:已经提前构建好Sphinx文档(本地构建完成)
如果你的docs/build/html目录已经有了完整的静态文件,只需要把它们复制到GitLab要求的public目录即可:
pages: stage: deploy script: # 创建public目录(如果不存在的话) - mkdir -p public # 将已构建的静态文件全部复制到public目录 - cp -r docs/build/html/* public/ artifacts: # GitLab Pages只会识别public目录下的文件 paths: - public only: # 只在master分支触发部署 - master
场景2:让CI自动构建并部署(更推荐)
如果希望每次推送代码到master分支时,CI自动完成Sphinx文档构建和部署,可以把构建命令也加进去:
pages: stage: deploy before_script: # 安装Sphinx及所需依赖(根据你的文档主题调整) - pip install sphinx sphinx-rtd-theme script: # 进入docs目录执行构建命令,生成静态文件到html目录 - cd docs && make html # 创建public目录并复制构建结果 - mkdir -p public - cp -r build/html/* public/ artifacts: paths: - public only: - master
关键修改点说明:
- 路径调整:把artifacts的路径从
docs/build/html改成public,这是GitLab Pages唯一认可的部署目录 - 文件复制:通过
cp命令将已构建的静态文件转移到public目录,确保GitLab能正确识别并部署 - 自动化构建(可选):添加依赖安装和Sphinx构建命令,实现从代码到部署的全流程自动化
内容的提问来源于stack exchange,提问作者meller92
相关产品推荐
相关产品推荐

