Skip to content

Commit 4d5bb5d

Browse files
committed
feat: add Publish All workflow for sequential subsite deployments
Deploys kits, tinytorch, and labs sequentially to prevent gh-pages conflicts. Book is excluded as it has its own versioning/release workflow. Uses shared concurrency group for safety.
1 parent 8d0848d commit 4d5bb5d

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: 'πŸš€ Publish All (Live)'
2+
3+
# Orchestrator workflow that deploys all subsites sequentially
4+
# Prevents gh-pages conflicts by running one deployment at a time
5+
6+
on:
7+
workflow_dispatch:
8+
inputs:
9+
deploy_book:
10+
description: 'Deploy Book?'
11+
type: boolean
12+
default: true
13+
deploy_kits:
14+
description: 'Deploy Kits?'
15+
type: boolean
16+
default: true
17+
deploy_tinytorch:
18+
description: 'Deploy TinyTorch?'
19+
type: boolean
20+
default: true
21+
deploy_labs:
22+
description: 'Deploy Labs?'
23+
type: boolean
24+
default: true
25+
26+
env:
27+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28+
29+
concurrency:
30+
group: gh-pages-deploy
31+
cancel-in-progress: false
32+
33+
jobs:
34+
# ==========================================================================
35+
# Step 1: Deploy Kits
36+
# ==========================================================================
37+
deploy-kits:
38+
name: 'πŸ“¦ Deploy Kits'
39+
if: ${{ inputs.deploy_kits }}
40+
runs-on: ubuntu-latest
41+
steps:
42+
- name: Checkout
43+
uses: actions/checkout@v4
44+
45+
- name: Setup Quarto
46+
uses: quarto-dev/quarto-actions/setup@v2
47+
48+
- name: Build Kits
49+
run: |
50+
cd kits
51+
quarto render
52+
53+
- name: Deploy to gh-pages
54+
uses: peaceiris/actions-gh-pages@v4
55+
with:
56+
github_token: ${{ secrets.GITHUB_TOKEN }}
57+
publish_dir: ./kits/_build
58+
destination_dir: kits
59+
publish_branch: gh-pages
60+
keep_files: true
61+
commit_message: 'πŸ“¦ Deploy Kits - ${{ github.sha }}'
62+
63+
# ==========================================================================
64+
# Step 2: Deploy TinyTorch (after kits)
65+
# ==========================================================================
66+
deploy-tinytorch:
67+
name: 'πŸ”₯ Deploy TinyTorch'
68+
needs: [deploy-kits]
69+
if: ${{ always() && inputs.deploy_tinytorch && (needs.deploy-kits.result == 'success' || needs.deploy-kits.result == 'skipped') }}
70+
runs-on: ubuntu-latest
71+
steps:
72+
- name: Checkout
73+
uses: actions/checkout@v4
74+
75+
- name: Setup Quarto
76+
uses: quarto-dev/quarto-actions/setup@v2
77+
78+
- name: Build TinyTorch
79+
run: |
80+
cd tinytorch/site
81+
quarto render
82+
83+
- name: Deploy to gh-pages
84+
uses: peaceiris/actions-gh-pages@v4
85+
with:
86+
github_token: ${{ secrets.GITHUB_TOKEN }}
87+
publish_dir: ./tinytorch/site/_build/html
88+
destination_dir: tinytorch
89+
publish_branch: gh-pages
90+
keep_files: true
91+
commit_message: 'πŸ”₯ Deploy TinyTorch - ${{ github.sha }}'
92+
93+
# ==========================================================================
94+
# Step 3: Deploy Labs (after tinytorch)
95+
# ==========================================================================
96+
deploy-labs:
97+
name: 'πŸ”¬ Deploy Labs'
98+
needs: [deploy-tinytorch]
99+
if: ${{ always() && inputs.deploy_labs && (needs.deploy-tinytorch.result == 'success' || needs.deploy-tinytorch.result == 'skipped') }}
100+
runs-on: ubuntu-latest
101+
steps:
102+
- name: Checkout
103+
uses: actions/checkout@v4
104+
105+
- name: Setup Quarto
106+
uses: quarto-dev/quarto-actions/setup@v2
107+
108+
- name: Build Labs
109+
run: |
110+
cd labs
111+
quarto render
112+
113+
- name: Deploy to gh-pages
114+
uses: peaceiris/actions-gh-pages@v4
115+
with:
116+
github_token: ${{ secrets.GITHUB_TOKEN }}
117+
publish_dir: ./labs/_build
118+
destination_dir: labs
119+
publish_branch: gh-pages
120+
keep_files: true
121+
commit_message: 'πŸ”¬ Deploy Labs - ${{ github.sha }}'
122+
123+
# ==========================================================================
124+
# Summary
125+
# ==========================================================================
126+
summary:
127+
name: 'πŸ“‹ Deployment Summary'
128+
needs: [deploy-kits, deploy-tinytorch, deploy-labs]
129+
if: always()
130+
runs-on: ubuntu-latest
131+
steps:
132+
- name: Generate Summary
133+
run: |
134+
echo "## πŸš€ Publish All Complete" >> $GITHUB_STEP_SUMMARY
135+
echo "" >> $GITHUB_STEP_SUMMARY
136+
echo "| Site | Status |" >> $GITHUB_STEP_SUMMARY
137+
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
138+
echo "| πŸ“¦ Kits | ${{ needs.deploy-kits.result }} |" >> $GITHUB_STEP_SUMMARY
139+
echo "| πŸ”₯ TinyTorch | ${{ needs.deploy-tinytorch.result }} |" >> $GITHUB_STEP_SUMMARY
140+
echo "| πŸ”¬ Labs | ${{ needs.deploy-labs.result }} |" >> $GITHUB_STEP_SUMMARY
141+
echo "" >> $GITHUB_STEP_SUMMARY
142+
echo "### 🌐 Live URLs" >> $GITHUB_STEP_SUMMARY
143+
echo "- πŸ“¦ [Kits](https://mlsysbook.ai/kits/)" >> $GITHUB_STEP_SUMMARY
144+
echo "- πŸ”₯ [TinyTorch](https://mlsysbook.ai/tinytorch/)" >> $GITHUB_STEP_SUMMARY
145+
echo "- πŸ”¬ [Labs](https://mlsysbook.ai/labs/)" >> $GITHUB_STEP_SUMMARY
146+
echo "" >> $GITHUB_STEP_SUMMARY
147+
echo "### πŸ“š Book Deployment" >> $GITHUB_STEP_SUMMARY
148+
echo "Book uses a separate workflow with version management." >> $GITHUB_STEP_SUMMARY
149+
echo "Run **πŸ“š Book Publish (Live)** separately for book updates." >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
Β (0)