forked from 0xMiden/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
314 lines (277 loc) · 13 KB
/
Copy pathdeploy-docs.yml
File metadata and controls
314 lines (277 loc) · 13 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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
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/protocol"
required: false
miden_tutorials_ref:
description: "Ref for 0xMiden/tutorials"
required: false
miden_client_ref:
description: "Ref for 0xMiden/miden-client"
required: false
miden_node_ref:
description: "Ref for 0xMiden/node"
required: false
note_transport_ref:
description: "Ref for 0xMiden/note-transport-service"
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
DEFAULT_NOTE_TRANSPORT_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}"
note_transport_def="${DEFAULT_NOTE_TRANSPORT_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
note_transport_ref='${{ inputs.note_transport_ref }}'
[ -z "$note_transport_ref" ] && note_transport_ref="$note_transport_def"
echo "NOTE_TRANSPORT_REF=$note_transport_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 " protocol: $base_ref"
echo " tutorials: $tutorials_ref"
echo " miden-client: $client_ref"
echo " node: $node_ref"
echo " note-transport: $note_transport_ref"
echo " miden-vm: $vm_ref"
echo " compiler: $compiler_ref"
# Check out each source repo into vendor/*
- name: Checkout 0xMiden/protocol
uses: actions/checkout@v4
with:
repository: 0xMiden/protocol
ref: ${{ steps.refs.outputs.MIDEN_BASE_REF }}
path: vendor/protocol
- name: Checkout 0xMiden/tutorials
uses: actions/checkout@v4
with:
repository: 0xMiden/tutorials
ref: ${{ steps.refs.outputs.MIDEN_TUTORIALS_REF }}
path: vendor/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/node
uses: actions/checkout@v4
with:
repository: 0xMiden/node
ref: ${{ steps.refs.outputs.MIDEN_NODE_REF }}
path: vendor/node
- name: Checkout 0xMiden/note-transport-service
uses: actions/checkout@v4
with:
repository: 0xMiden/note-transport-service
ref: ${{ steps.refs.outputs.NOTE_TRANSPORT_REF }}
path: vendor/note-transport-service
- 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
# - Reference docs (protocol, miden-vm, compiler, node) → docs/reference/
# - Builder docs (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/reference/protocol docs/reference/miden-vm docs/reference/node docs/reference/compiler
# tools/clients: only clean ingested subdirs; preserve locally-authored web-client/, react-sdk/, index.md
rm -rf docs/builder/tools/clients/rust-client
rm -rf docs/builder/tools/clients/img
rm -rf docs/builder/tools/clients/theme
rm -f docs/builder/tools/clients/common-errors.md
rm -f docs/builder/tools/clients/_category_.yml
rm -rf docs/builder/tools/cli
# tutorials: only clean ingested subdirs/files; preserve locally-authored rust-compiler/, index.md, _category_.json, recipes/_category_.json, recipes/{rust,web}/_category_.json
rm -rf docs/builder/tutorials/miden-bank
rm -rf docs/builder/tutorials/components
rm -rf docs/builder/tutorials/img
rm -rf docs/builder/tutorials/theme
rm -f docs/builder/tutorials/miden_node_setup.md
# Recipes: remove everything under recipes/rust|web except _category_.json (restored via git checkout after re-ingest)
for d in docs/builder/tutorials/recipes/rust docs/builder/tutorials/recipes/web; do
if [ -d "$d" ]; then
find "$d" -mindepth 1 ! -name _category_.json -exec rm -rf {} + 2>/dev/null || true
fi
done
rm -rf docs/builder/tutorials/recipes/img
# Reference docs → docs/reference/*
if [ -d "vendor/protocol/docs/src" ]; then
mkdir -p docs/reference/protocol
cp -r vendor/protocol/docs/src/* docs/reference/protocol/
echo "Synced protocol → docs/reference/protocol"
fi
if [ -d "vendor/miden-vm/docs/src" ]; then
mkdir -p docs/reference/miden-vm
cp -r vendor/miden-vm/docs/src/* docs/reference/miden-vm/
echo "Synced miden-vm → docs/reference/miden-vm"
fi
if [ -d "vendor/node/docs/external/src" ]; then
mkdir -p docs/reference/node
cp -r vendor/node/docs/external/src/* docs/reference/node/
echo "Synced node → docs/reference/node"
fi
if [ -d "vendor/compiler/docs/external/src" ]; then
mkdir -p docs/reference/compiler
cp -r vendor/compiler/docs/external/src/* docs/reference/compiler/
echo "Synced compiler → docs/reference/compiler"
fi
# Builder docs → docs/builder/*
# Sync tutorials into tutorials — selective ingest.
# rust-compiler/, index.md, miden-bank/index.md, recipes/_category_.json,
# recipes/rust/_category_.json, recipes/web/_category_.json, and the
# parent _category_.json are locally authored in the docs repo and
# preserved through this clean/ingest cycle.
# Vendor's rust-client/ and web-client/ are renamed at ingest to
# recipes/rust/ and recipes/web/ respectively (see docs repo
# tutorials IA redesign). plugin-client-redirects is configured in
# docusaurus.config.ts to keep old URLs pointing at the new ones.
# lib.rs and vendor's _category_.yml are deliberately NOT ingested.
if [ -d "vendor/tutorials/docs/src" ]; then
mkdir -p docs/builder/tutorials
for name in miden-bank components img theme; do
src="vendor/tutorials/docs/src/$name"
[ -d "$src" ] && cp -r "$src" docs/builder/tutorials/
done
for name in miden_node_setup.md; do
src="vendor/tutorials/docs/src/$name"
[ -f "$src" ] && cp "$src" docs/builder/tutorials/
done
# Rename rust-client → recipes/rust, web-client → recipes/web.
# Copy CONTENTS (using /. and ensuring the target dir exists) so
# the locally-authored _category_.json already in recipes/{rust,web}/
# isn't shadowed by a nested rust-client/ or web-client/ subdir.
mkdir -p docs/builder/tutorials/recipes/rust
mkdir -p docs/builder/tutorials/recipes/web
if [ -d "vendor/tutorials/docs/src/rust-client" ]; then
cp -r vendor/tutorials/docs/src/rust-client/. docs/builder/tutorials/recipes/rust/
rm -f docs/builder/tutorials/recipes/rust/_category_.yml
fi
if [ -d "vendor/tutorials/docs/src/web-client" ]; then
cp -r vendor/tutorials/docs/src/web-client/. docs/builder/tutorials/recipes/web/
rm -f docs/builder/tutorials/recipes/web/_category_.yml
fi
# Ingested recipe pages use relative image paths like ../img/...
# which now resolves under recipes/img/. Mirror the tutorials/img
# dir into recipes/img/ so those refs keep working after the rename.
if [ -d "vendor/tutorials/docs/src/img" ]; then
cp -r vendor/tutorials/docs/src/img docs/builder/tutorials/recipes/
fi
# Restore locally-authored files over vendor versions.
git checkout HEAD -- docs/builder/tutorials/miden-bank/index.md 2>/dev/null || true
git checkout HEAD -- docs/builder/tutorials/recipes/_category_.json 2>/dev/null || true
git checkout HEAD -- docs/builder/tutorials/recipes/rust/_category_.json 2>/dev/null || true
git checkout HEAD -- docs/builder/tutorials/recipes/web/_category_.json 2>/dev/null || true
echo "Synced tutorials (miden-bank, components, img, theme, miden_node_setup.md, recipes/rust, recipes/web) → docs/builder/tutorials"
fi
if [ -d "vendor/miden-client/docs/external/src" ]; then
mkdir -p docs/builder/tools/clients
# Selective ingestion: only subdirs/files we still auto-sync from miden-client.
# web-client/, react-sdk/, and top-level index.md are locally authored in the docs repo
# — they are preserved through this clean/ingest cycle.
for name in rust-client img theme; do
src="vendor/miden-client/docs/external/src/$name"
[ -d "$src" ] && cp -r "$src" docs/builder/tools/clients/
done
for name in common-errors.md _category_.yml; do
src="vendor/miden-client/docs/external/src/$name"
[ -f "$src" ] && cp "$src" docs/builder/tools/clients/
done
echo "Synced miden-client (rust-client, img, theme, common-errors, _category_) → docs/builder/tools/clients"
fi
if [ -d "vendor/note-transport-service/docs/external/src" ]; then
rm -rf docs/builder/tools/note-transport
mkdir -p docs/builder/tools/note-transport
cp -r vendor/note-transport-service/docs/external/src/* docs/builder/tools/note-transport/
echo "Synced note-transport-service → docs/builder/tools/note-transport"
fi
echo "Content aggregation complete. Final docs structure:"
ls -la docs/
echo "Reference subdirs:"
ls -la docs/reference/ || true
echo "Builder subdirs:"
ls -la docs/builder/ || true
echo "Tutorials subdirs:"
ls -la docs/builder/tutorials/ || true
- name: Install deps
run: npm install --frozen-lockfile
- name: Build site
env:
NODE_OPTIONS: "--max-old-space-size=12288" # 12GB
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