-
Notifications
You must be signed in to change notification settings - Fork 27
220 lines (187 loc) · 7.52 KB
/
deploy-docs.yml
File metadata and controls
220 lines (187 loc) · 7.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
name: Build & Deploy Docs (Pages)
on:
push:
branches: [main] # deploy when aggregator changes
workflow_dispatch:
inputs:
# optional per-repo overrides (branch/ref/SHA); leave empty to use defaults
miden_base_ref:
description: "Ref for 0xMiden/miden-base"
required: false
miden_tutorials_ref:
description: "Ref for 0xMiden/miden-tutorials"
required: false
miden_client_ref:
description: "Ref for 0xMiden/miden-client"
required: false
miden_node_ref:
description: "Ref for 0xMiden/miden-node"
required: false
miden_vm_ref:
description: "Ref for 0xMiden/miden-vm"
required: false
compiler_ref:
description: "Ref for 0xMiden/compiler"
required: false
repository_dispatch:
types: [rebuild]
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
env:
DEFAULT_REF: next
DEFAULT_TUTORIALS_REF: main
steps:
- name: Checkout docs site
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
# Resolve refs per repo (inputs override DEFAULT_REF)
- name: Resolve refs
id: refs
run: |
set -e
def="${DEFAULT_REF}"
tutorials_def="${DEFAULT_TUTORIALS_REF}"
# For each input: use it if set, else fallback to default ref
base_ref='${{ inputs.miden_base_ref }}'
[ -z "$base_ref" ] && base_ref="$def"
echo "MIDEN_BASE_REF=$base_ref" >> $GITHUB_OUTPUT
tutorials_ref='${{ inputs.miden_tutorials_ref }}'
[ -z "$tutorials_ref" ] && tutorials_ref="$tutorials_def"
echo "MIDEN_TUTORIALS_REF=$tutorials_ref" >> $GITHUB_OUTPUT
client_ref='${{ inputs.miden_client_ref }}'
[ -z "$client_ref" ] && client_ref="$def"
echo "MIDEN_CLIENT_REF=$client_ref" >> $GITHUB_OUTPUT
node_ref='${{ inputs.miden_node_ref }}'
[ -z "$node_ref" ] && node_ref="$def"
echo "MIDEN_NODE_REF=$node_ref" >> $GITHUB_OUTPUT
vm_ref='${{ inputs.miden_vm_ref }}'
[ -z "$vm_ref" ] && vm_ref="$def"
echo "MIDEN_VM_REF=$vm_ref" >> $GITHUB_OUTPUT
compiler_ref='${{ inputs.compiler_ref }}'
[ -z "$compiler_ref" ] && compiler_ref="$def"
echo "COMPILER_REF=$compiler_ref" >> $GITHUB_OUTPUT
echo "Resolved refs:"
echo " miden-base: $base_ref"
echo " miden-tutorials: $tutorials_ref"
echo " miden-client: $client_ref"
echo " miden-node: $node_ref"
echo " miden-vm: $vm_ref"
echo " compiler: $compiler_ref"
# Check out each source repo into vendor/*
- name: Checkout 0xMiden/miden-base
uses: actions/checkout@v4
with:
repository: 0xMiden/miden-base
ref: ${{ steps.refs.outputs.MIDEN_BASE_REF }}
path: vendor/miden-base
- name: Checkout 0xMiden/miden-tutorials
uses: actions/checkout@v4
with:
repository: 0xMiden/miden-tutorials
ref: ${{ steps.refs.outputs.MIDEN_TUTORIALS_REF }}
path: vendor/miden-tutorials
- name: Checkout 0xMiden/miden-client
uses: actions/checkout@v4
with:
repository: 0xMiden/miden-client
ref: ${{ steps.refs.outputs.MIDEN_CLIENT_REF }}
path: vendor/miden-client
- name: Checkout 0xMiden/miden-node
uses: actions/checkout@v4
with:
repository: 0xMiden/miden-node
ref: ${{ steps.refs.outputs.MIDEN_NODE_REF }}
path: vendor/miden-node
- name: Checkout 0xMiden/miden-vm
uses: actions/checkout@v4
with:
repository: 0xMiden/miden-vm
ref: ${{ steps.refs.outputs.MIDEN_VM_REF }}
path: vendor/miden-vm
- name: Checkout 0xMiden/compiler
uses: actions/checkout@v4
with:
repository: 0xMiden/compiler
ref: ${{ steps.refs.outputs.COMPILER_REF }}
path: vendor/compiler
# ============================================================
# v0.4 IA: Aggregate into nested structure
# - Design docs (miden-base, miden-vm, compiler, miden-node) → docs/design/
# - Builder docs (miden-tutorials, miden-client) → docs/builder/
# ============================================================
- name: Aggregate docs into single docs tree
run: |
echo "Aggregating vendor docs into v0.4 IA structure..."
# Clean directories that will be re-synced (v0.4 nested paths)
rm -rf docs/design/miden-base docs/design/miden-vm docs/design/miden-node docs/design/compiler
rm -rf docs/builder/tools/client
# Note: docs/builder/develop/tutorials is NOT fully cleaned to preserve local tutorials (e.g. miden-bank)
# Design docs → docs/design/*
if [ -d "vendor/miden-base/docs/src" ]; then
mkdir -p docs/design/miden-base
cp -r vendor/miden-base/docs/src/* docs/design/miden-base/
echo "Synced miden-base → docs/design/miden-base"
fi
if [ -d "vendor/miden-vm/docs/src" ]; then
mkdir -p docs/design/miden-vm
cp -r vendor/miden-vm/docs/src/* docs/design/miden-vm/
echo "Synced miden-vm → docs/design/miden-vm"
fi
if [ -d "vendor/miden-node/docs/external/src" ]; then
mkdir -p docs/design/miden-node
cp -r vendor/miden-node/docs/external/src/* docs/design/miden-node/
echo "Synced miden-node → docs/design/miden-node"
fi
if [ -d "vendor/compiler/docs/external/src" ]; then
mkdir -p docs/design/compiler
cp -r vendor/compiler/docs/external/src/* docs/design/compiler/
echo "Synced compiler → docs/design/compiler"
fi
# Builder docs → docs/builder/*
# Sync miden-tutorials into develop/tutorials (local tutorials are preserved)
if [ -d "vendor/miden-tutorials/docs/src" ]; then
mkdir -p docs/builder/develop/tutorials
cp -r vendor/miden-tutorials/docs/src/* docs/builder/develop/tutorials/
echo "Synced miden-tutorials → docs/builder/develop/tutorials"
fi
if [ -d "vendor/miden-client/docs/external/src" ]; then
mkdir -p docs/builder/tools/client
cp -r vendor/miden-client/docs/external/src/* docs/builder/tools/client/
echo "Synced miden-client → docs/builder/tools/client"
fi
echo "Content aggregation complete. Final docs structure:"
ls -la docs/
echo "Design subdirs:"
ls -la docs/design/ || true
echo "Builder subdirs:"
ls -la docs/builder/ || true
echo "Tutorials subdirs:"
ls -la docs/builder/develop/tutorials/ || true
- name: Install deps
run: npm install --frozen-lockfile
- name: Build site
env:
NODE_OPTIONS: "--max-old-space-size=6144" # 6GB
run: |
echo "Building Docusaurus site"
npm run build
- name: Add CNAME
run: echo docs.miden.xyz > build/CNAME
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: build
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v4