@@ -65,12 +65,19 @@ jobs:
6565 pip install 'elevenlabs>=0.2.27,<0.3.0'
6666 fi
6767
68- - name : Restore video cache
68+ - name : Restore dev video cache
6969 uses : actions/cache@v4
7070 with :
71- path : .video-cache
72- key : videos-${{ hashFiles('Chapter**/Scene*.py', 'Chapter**/Thumb.py', 'scene_utils/**/*.py', 'imgs/**', 'manim.cfg') }}
73- restore-keys : videos-
71+ path : .video-cache/dev
72+ key : dev-videos-${{ hashFiles('Chapter**/Scene*.py', 'Chapter**/Thumb.py', 'scene_utils/**/*.py', 'imgs/**', 'manim.cfg') }}
73+ restore-keys : dev-videos-
74+
75+ - name : Restore prod video cache
76+ uses : actions/cache@v4
77+ with :
78+ path : .video-cache/prod
79+ key : prod-videos-${{ hashFiles('Chapter**/Scene*.py', 'Chapter**/Thumb.py', 'scene_utils/**/*.py', 'imgs/**', 'manim.cfg') }}
80+ restore-keys : prod-videos-
7481
7582 - name : Restore voiceover cache
7683 uses : actions/cache@v4
9299 - name : Determine chapters to build
93100 id : chapters
94101 run : |
95- mkdir -p .video-cache
102+ mkdir -p .video-cache/dev .video-cache/prod
103+
104+ # Determine build mode
105+ if [ "${{ inputs.prod }}" = "true" ]; then
106+ CACHE_DIR=".video-cache/prod"
107+ else
108+ CACHE_DIR=".video-cache/dev"
109+ fi
96110
97111 # On workflow_dispatch, use the input
98112 if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
@@ -102,11 +116,11 @@ jobs:
102116 echo "rebuild=${{ inputs.chapters }}" >> "$GITHUB_OUTPUT"
103117 fi
104118 else
105- # On push, rebuild chapters that have cache misses
119+ # On push, rebuild dev chapters that have cache misses
106120 REBUILD=""
107121 for N in 0 1 2 3 4 5 6 7 8 9; do
108122 CHAPTER="Chapter${N}"
109- if [ ! -f ".video-cache /${CHAPTER}_480p15.mp4" ] || [ ! -f ".video-cache /${CHAPTER}.png" ]; then
123+ if [ ! -f "${CACHE_DIR} /${CHAPTER}_480p15.mp4" ] || [ ! -f "${CACHE_DIR} /${CHAPTER}.png" ]; then
110124 if [ -d "$CHAPTER" ]; then
111125 REBUILD="${REBUILD:+${REBUILD},}${N}"
112126 fi
@@ -119,19 +133,17 @@ jobs:
119133 env :
120134 ELEVEN_API_KEY : ${{ secrets.ELEVEN_API_KEY }}
121135 run : |
136+ # Determine target cache directory
137+ if [ "${{ inputs.prod }}" = "true" ]; then
138+ CACHE_DIR=".video-cache/prod"
139+ else
140+ CACHE_DIR=".video-cache/dev"
141+ fi
142+
122143 REBUILD="${{ steps.chapters.outputs.rebuild }}"
144+ echo "Build mode: $([ "${{ inputs.prod }}" = "true" ] && echo "PROD" || echo "DEV")"
123145 echo "Chapters to rebuild: ${REBUILD:-none}"
124146
125- # Copy cached videos for chapters we are NOT rebuilding
126- for N in 0 1 2 3 4 5 6 7 8 9; do
127- CHAPTER="Chapter${N}"
128- if [ -f ".video-cache/${CHAPTER}_480p15.mp4" ] && [ -f ".video-cache/${CHAPTER}.png" ]; then
129- echo "Using cached video for ${CHAPTER}"
130- cp ".video-cache/${CHAPTER}_480p15.mp4" "docs/${CHAPTER}_480p15.mp4"
131- cp ".video-cache/${CHAPTER}.png" "docs/${CHAPTER}.png"
132- fi
133- done
134-
135147 # Build chapters that need rebuilding
136148 if [ -n "$REBUILD" ]; then
137149 IFS=',' read -ra CHAPTERS <<< "$REBUILD"
@@ -160,15 +172,45 @@ jobs:
160172 cd ..
161173
162174 # Cache the results
163- cp "docs/${CHAPTER}_480p15.mp4" ".video-cache /${CHAPTER}_480p15.mp4"
164- cp "docs/${CHAPTER}.png" ".video-cache /${CHAPTER}.png"
175+ cp "docs/${CHAPTER}_480p15.mp4" "${CACHE_DIR} /${CHAPTER}_480p15.mp4"
176+ cp "docs/${CHAPTER}.png" "${CACHE_DIR} /${CHAPTER}.png"
165177
166178 echo "${CHAPTER} complete"
167179 done
168180 fi
169181
170- - name : Build MkDocs site
171- run : mkdocs build
182+ - name : Assemble and build site
183+ run : |
184+ # Step 1: Build prod site at root (if prod videos exist)
185+ PROD_VIDEOS_EXIST=false
186+ for N in 0 1 2 3 4 5 6 7 8 9; do
187+ CHAPTER="Chapter${N}"
188+ if [ -f ".video-cache/prod/${CHAPTER}_480p15.mp4" ]; then
189+ cp ".video-cache/prod/${CHAPTER}_480p15.mp4" "docs/${CHAPTER}_480p15.mp4"
190+ cp ".video-cache/prod/${CHAPTER}.png" "docs/${CHAPTER}.png"
191+ PROD_VIDEOS_EXIST=true
192+ fi
193+ done
194+
195+ if [ "$PROD_VIDEOS_EXIST" = "true" ]; then
196+ echo "Building prod site at root..."
197+ mkdocs build -d site
198+ else
199+ echo "No prod videos cached yet. Building placeholder prod site..."
200+ mkdocs build -d site
201+ fi
202+
203+ # Step 2: Build dev site at /dev/
204+ for N in 0 1 2 3 4 5 6 7 8 9; do
205+ CHAPTER="Chapter${N}"
206+ if [ -f ".video-cache/dev/${CHAPTER}_480p15.mp4" ]; then
207+ cp ".video-cache/dev/${CHAPTER}_480p15.mp4" "docs/${CHAPTER}_480p15.mp4"
208+ cp ".video-cache/dev/${CHAPTER}.png" "docs/${CHAPTER}.png"
209+ fi
210+ done
211+
212+ echo "Building dev site at /dev/..."
213+ mkdocs build -d site/dev
172214
173215 - name : Upload Pages artifact
174216 uses : actions/upload-pages-artifact@v3
0 commit comments