使用Asciidoctor-pdf与asciidoctor-diagrams生成Mermaid图表失败求助
解决Ubuntu环境下AsciiDoc转PDF时Mermaid图表生成的沙箱错误
首先修正你命令中的语法问题:-a ./book/mybook.adoc是错误的,-a选项用于设置AsciiDoc属性,文档路径不需要前缀,正确的命令格式应为:
asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read ./book/mybook.adoc
针对你遇到的Chrome沙箱启动失败问题,由于GitHub Actions的Ubuntu Runner以非特权用户运行,无法修改chrome-sandbox的权限或内核参数,最直接的解决方式是让Mermaid CLI(mmdc)跳过沙箱检查,具体有两种实现方式:
方式一:通过AsciiDoc属性传递mmdc参数
在asciidoctor-pdf命令中添加-a mermaid-cli-opts="--no-sandbox",直接给mmdc传递无沙箱启动参数:
- name: Convert AsciiDoc to PDF run: | set -o pipefail OUTPUT=$(asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read -a mermaid-cli-opts="--no-sandbox" ./book/mybook.adoc 2>&1) echo "$OUTPUT" if echo "$OUTPUT" | grep -i -E "error.*image|could not generate image|failed to generate image"; then echo "Error: Image generation failed in asciidoctor-pdf output." exit 1 fi
方式二:设置Puppeteer环境变量
通过PUPPETEER_ARGS环境变量,让Puppeteer启动浏览器时强制禁用沙箱:
- name: Convert AsciiDoc to PDF run: | set -o pipefail export PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox" OUTPUT=$(asciidoctor-pdf -r asciidoctor-diagram -a allow-uri-read ./book/mybook.adoc 2>&1) echo "$OUTPUT" if echo "$OUTPUT" | grep -i -E "error.*image|could not generate image|failed to generate image"; then echo "Error: Image generation failed in asciidoctor-pdf output." exit 1 fi
补充说明
你之前尝试的sudo sysctl和修改沙箱文件权限的操作在GitHub Runner环境中不可行,因为Runner默认以非root用户执行,没有权限修改系统级配置。而GitHub Runner的环境本身是隔离且安全的,禁用沙箱不会带来安全风险。
内容的提问来源于stack exchange,提问作者Arc-E-Tect
相关产品推荐
相关产品推荐

