2
0
Fork 0
mirror of https://github.com/Vonng/ddia.git synced 2026-06-21 00:47:05 +08:00
ddia/.github/workflows/build-pdf.yaml
2026-03-28 10:06:38 +08:00

143 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Build and Release PDF
on:
push:
tags:
- 'v*'
- 'release*'
workflow_dispatch:
permissions:
contents: write
jobs:
build-pdf:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
# Install pandoc
wget -q https://github.com/jgm/pandoc/releases/download/3.1.11/pandoc-3.1.11-1-amd64.deb
sudo dpkg -i pandoc-3.1.11-1-amd64.deb
rm pandoc-3.1.11-1-amd64.deb
# Install TeX Live with XeLaTeX and Chinese support
sudo apt-get update
sudo apt-get install -y \
texlive-xetex \
texlive-lang-chinese \
texlive-fonts-recommended \
texlive-fonts-extra \
fonts-noto-cjk \
fonts-noto-cjk-extra
# Verify installations
pandoc --version
xelatex --version
- name: Build PDF
run: |
chmod +x bin/pdf bin/preprocess-epub.py
mkdir -p output output/temp
# Preprocess Markdown files
python3 bin/preprocess-epub.py content/zh output/temp
# Generate PDF with CI-specific fonts (Noto CJK)
pandoc -o output/ddia.pdf \
--metadata-file=metadata.yaml \
-H bin/header-ci.tex \
--toc \
--toc-depth=2 \
--top-level-division=chapter \
--file-scope=true \
--pdf-engine=xelatex \
-V geometry:margin=1in \
-V linestretch=1.5 \
output/temp/_index.md \
output/temp/preface.md \
output/temp/part-i.md \
output/temp/ch1.md \
output/temp/ch2.md \
output/temp/ch3.md \
output/temp/ch4.md \
output/temp/part-ii.md \
output/temp/ch5.md \
output/temp/ch6.md \
output/temp/ch7.md \
output/temp/ch8.md \
output/temp/ch9.md \
output/temp/part-iii.md \
output/temp/ch10.md \
output/temp/ch11.md \
output/temp/ch12.md \
output/temp/ch13.md \
output/temp/ch14.md \
output/temp/colophon.md \
output/temp/glossary.md
rm -rf output/temp
if [ ! -f "output/ddia.pdf" ]; then
echo "Error: PDF file was not created"
exit 1
fi
ls -lh output/ddia.pdf
file output/ddia.pdf
- name: Upload PDF artifact
uses: actions/upload-artifact@v4
with:
name: ddia-pdf
path: output/ddia.pdf
retention-days: 30
- name: Create/Update Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: output/ddia.pdf
name: ${{ github.ref_name }}
body: |
## 《设计数据密集型应用》PDF 版本
此版本为自动生成的 PDF 电子书。
### 文件信息
- 文件名: `ddia.pdf`
- 生成时间: ${{ github.event.head_commit.timestamp }}
- 标签: ${{ github.ref_name }}
### 依赖工具
- Pandoc 3.1.11
- XeLaTeX (TeX Live)
- 中文字体: Noto CJK
### 本地生成
如需本地生成 PDF请确保安装以下依赖
```bash
# macOS
brew install pandoc
brew install --cask mactex
# Ubuntu/Debian
sudo apt install pandoc texlive-xetex texlive-lang-chinese
# 生成 PDF
make pdf
```
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}