Skip to content

Commit fccdd8e

Browse files
committed
feat(ci): enhance CI workflow to cache and upload compiled binaries for improved build efficiency
1 parent 95dfaf9 commit fccdd8e

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

.github/workflows/docs_build.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,42 @@ jobs:
3535
cache: "pip"
3636
python-version: "3.10"
3737

38+
- name: Restore compiled binaries from cache
39+
id: cache-restore
40+
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
41+
with:
42+
key: compiled-binaries-consolidated-${{ github.sha }}
43+
restore-keys: |
44+
compiled-binaries-consolidated-
45+
compiled-binaries-Linux-${{ github.sha }}-
46+
compiled-binaries-Linux-
47+
path: compiled_binaries
48+
lookup-only: false
49+
50+
- name: Download compiled binaries artifact (fallback)
51+
if: steps.cache-restore.outputs.cache-hit != 'true'
52+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
53+
with:
54+
name: compiled-binaries-consolidated
55+
path: compiled_binaries
56+
continue-on-error: true
57+
58+
- name: Copy cached binaries to local directory
59+
run: |
60+
if [ -d "compiled_binaries" ]; then
61+
echo "Found cached binaries, copying to local workspace..."
62+
mkdir -p local_binaries
63+
cp -r compiled_binaries/* local_binaries/ || true
64+
echo "Available binaries:"
65+
find local_binaries -type f -name "*.bin" -o -name "*.elf" | head -20
66+
echo "Total binary files found: $(find local_binaries -type f \( -name "*.bin" -o -name "*.elf" \) | wc -l)"
67+
68+
echo "Contents of compiled_binaries directory:"
69+
find compiled_binaries -type f | head -20
70+
else
71+
echo "No cached binaries found, will build fresh"
72+
fi
73+
3874
- name: Build Examples
3975
run: |
4076
source .github/scripts/install-arduino-cli.sh

.github/workflows/push.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ on:
2222
branches:
2323
- master
2424
- release/*
25+
- wokwi-embed-launchpad
2526
pull_request:
2627
paths:
2728
- "cores/**"
@@ -167,6 +168,25 @@ jobs:
167168
- name: Build selected sketches
168169
run: bash ./.github/scripts/on-push.sh ${{ matrix.chunk }} ${{ needs.gen-chunks.outputs.chunk_count }} 1 ${{ env.LOG_LEVEL }} affected_sketches.txt
169170

171+
- name: Collect compiled binaries
172+
run: |
173+
mkdir -p compiled_binaries
174+
# Find and copy all compiled binaries (*.bin, *.elf files)
175+
find . -name "*.bin" -o -name "*.elf" | grep -E "(build|target)" | while read file; do
176+
# Create relative path structure in compiled_binaries
177+
rel_path=$(echo "$file" | sed 's|^\./||')
178+
target_dir="compiled_binaries/$(dirname "$rel_path")"
179+
mkdir -p "$target_dir"
180+
cp "$file" "$target_dir/"
181+
done
182+
183+
- name: Upload compiled binaries as artifact
184+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
185+
with:
186+
name: compiled-binaries-${{ matrix.chunk }}
187+
path: compiled_binaries
188+
retention-days: 1
189+
170190
#Upload cli compile json as artifact
171191
- name: Upload cli compile json
172192
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -175,6 +195,40 @@ jobs:
175195
path: cli_compile_${{ matrix.chunk }}.json
176196
overwrite: true
177197

198+
# Consolidate compiled binaries from all chunks
199+
consolidate-binaries:
200+
name: Consolidate compiled binaries
201+
needs: [gen-chunks, build-arduino-linux]
202+
if: ${{ needs.gen-chunks.outputs.should_build == '1' }}
203+
runs-on: ubuntu-latest
204+
steps:
205+
- name: Download all binary artifacts
206+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
207+
with:
208+
pattern: compiled-binaries-*
209+
merge-multiple: true
210+
path: all_binaries
211+
212+
- name: List consolidated binaries
213+
run: |
214+
echo "Consolidating binaries from all chunks..."
215+
echo "Downloaded artifacts:"
216+
find all_binaries -type f -name "*.bin" -o -name "*.elf" | head -20 || echo "No binaries found in artifacts"
217+
echo "Total binary files: $(find all_binaries -type f \( -name "*.bin" -o -name "*.elf" \) | wc -l)"
218+
219+
- name: Create consolidated binary cache
220+
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
221+
with:
222+
key: compiled-binaries-consolidated-${{ github.sha }}
223+
path: all_binaries
224+
225+
- name: Upload consolidated binaries
226+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
227+
with:
228+
name: compiled-binaries-consolidated
229+
path: all_binaries
230+
retention-days: 7
231+
178232
# Windows and MacOS
179233
build-arduino-win-mac:
180234
name: Arduino on ${{ matrix.os }}

0 commit comments

Comments
 (0)