我正在尝试构建 Doxygen 文档并将其发布到 GitHub Pages。一般来说,我会构建静态 HTML 和 CSS 文件,生成它们,然后将它们推送到存储库。然后,我使用自定义静态操作将文件发布到 GitHub Pages。我希望自动化构建和发布过程,而不需要将静态网页与代码一起推送。所以,我修改了我的旧 GitHub Action 脚本如下
name: build-docs
on:
push:
branches: ["main"]
permissions:
contents: write
pages: write
id-token: write
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Doxygen
run: |
sudo apt-get update
sudo apt-get install -y doxygen
- name: Install Graphviz
run: sudo apt-get install -y graphviz
- name: Create docs directory
run: mkdir -p ./docs/html
- name: Run Doxygen to generate documentation
run: doxygen ./docs/Doxyfile
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './docs/html'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
在这里,一切正常,所有构建日志都成功输出,但是当我浏览创建的域时,我收到 404 错误:404 错误。
这是存储库:链接。
页面设置设置为从 GitHub Actions 部署。
我尝试从存储库设置中更改 GitHub Pages 设置,设置环境并删除它(存储库没有秘密或环境变量 - 我不太了解它的作用)。
我还尝试将自定义运行作业添加到工作流程中以检查生成的文件并下载工件。一切看起来都很好(生成的 Web 文件是正确的),但是发布步骤失败,没有给出任何合理的输出或错误!
在
docs/Doxyfile
中,OUTPUT_DIRECTORY
配置了两次:
OUTPUT_DIRECTORY = ./ # Line 9
OUTPUT_DIRECTORY = ./docs/html # Line 38
参见:
由于最后一个,输出是在以下位置生成的:
docs/html/html
并且,不位于:
docs/html
由于 GitHub Pages 部署来自
docs/html
,因此这里没有 index.html
,因此出现 404 Page not found 错误。
因此,使用当前配置:
将第 9 行上的
OUTPUT_DIRECTORY
更改为 ./docs
并删除/注释第 38 行应该可以解决此问题:
OUTPUT_DIRECTORY = ./docs # Line 9
此外,无需在工作流程中创建
./docs/html
目录,即:
- name: Create docs directory
run: mkdir -p ./docs/html
它将由
doxygen
自动创建。