-
Notifications
You must be signed in to change notification settings - Fork 0
61 lines (54 loc) · 2.18 KB
/
Copy pathcache-warm.yml
File metadata and controls
61 lines (54 loc) · 2.18 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
name: Warm Build Cache
on:
push:
branches: [master]
paths:
- 'Sources/**'
- 'External/kanata/**'
- 'Package.swift'
- 'Package.resolved'
- '.github/workflows/cache-warm.yml'
- '.github/workflows/ci.yml'
jobs:
warm-cache:
runs-on: [self-hosted, macOS, keypath]
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true
- name: Add Homebrew and Cargo to PATH
run: |
echo "/opt/homebrew/bin" >> $GITHUB_PATH
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Build Swift (warms .build cache for PR jobs)
run: swift build
- name: Compute kanata cache key
id: kanata-cache-key
run: |
KANATA_SHA=$(git rev-parse HEAD:External/kanata)
CARGO_LOCK_HASH=$(shasum -a 256 External/kanata/Cargo.lock | awk '{print $1}')
RUSTC_HASH=$(rustc --version | shasum -a 256 | awk '{print $1}')
echo "key=kanata-${{ runner.os }}-${{ runner.arch }}-${KANATA_SHA}-${CARGO_LOCK_HASH}-${RUSTC_HASH}" >> "$GITHUB_OUTPUT"
echo "Kanata submodule: $KANATA_SHA"
- name: Restore kanata binary cache
id: kanata-cache
uses: actions/cache@v4
with:
path: build/ci-kanata-cache
key: ${{ steps.kanata-cache-key.outputs.key }}
- name: Build kanata fork (warms cargo and binary cache)
run: |
mkdir -p build/ci-kanata-cache
if [[ -x build/ci-kanata-cache/kanata && -x build/ci-kanata-cache/kanata-simulator ]]; then
echo "✅ Kanata binary cache already warm"
exit 0
fi
cd External/kanata
cargo build --release --target aarch64-apple-darwin 2>&1 | tail -20
cargo build --release --target aarch64-apple-darwin -p kanata-sim 2>&1 | tail -20
cd ../..
cp External/kanata/target/aarch64-apple-darwin/release/kanata build/ci-kanata-cache/kanata
cp External/kanata/target/aarch64-apple-darwin/release/kanata_simulated_input build/ci-kanata-cache/kanata-simulator
chmod 755 build/ci-kanata-cache/kanata build/ci-kanata-cache/kanata-simulator