-
Notifications
You must be signed in to change notification settings - Fork 1
98 lines (88 loc) · 3.96 KB
/
Copy pathcache-warmup.yml
File metadata and controls
98 lines (88 loc) · 3.96 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
name: Cache warmup (watchers)
# Tiene calda la cache Rust di watcher + app.exe + launcher.exe sul
# branch principale. Le release vere partono da un tag (v*), e GitHub
# isola la cache per ref: un tag è sempre un riferimento MAI visto
# prima, quindi la cache salvata da una release precedente è invisibile
# alla successiva (verificato dal vivo, vedi BLUEPRINT.md). La cache del
# branch PRINCIPALE però è raggiungibile da qualsiasi altro ref come
# riserva — questo workflow gira sui push normali a master e ricompila
# tutto, così quando si tagga una vera release trova quella cache già
# pronta. Nessuna firma/installer/pubblicazione qui — solo compilazione,
# per tenere la cache aggiornata. app.exe richiede gli stessi binari dei
# watcher già copiati in src-tauri/binaries/ e il frontend compilato
# (build.rs se li aspetta pronti, stessa convenzione di release.yml) —
# per questo qui sotto si replicano quei passaggi anche se qui non
# servono di per sé, solo per far compilare src-tauri con successo.
on:
push:
branches:
- master
paths:
- "aw-watcher-*-rust/**"
- "src-tauri/**"
- "launcher/**"
- ".github/workflows/cache-warmup.yml"
- ".github/workflows/release.yml"
# Utile per forzare un riscaldamento a mano (es. dopo aver eliminato
# una cache incompleta/rovinata senza dover toccare il codice).
workflow_dispatch:
permissions:
contents: read
env:
WATCHERS: afk app-icons claude-code excel screenshot tray vpn vscode window
jobs:
warmup:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: dtolnay/rust-toolchain@stable
# Elenco `workspaces` IDENTICO a release.yml (tutti e 11 i
# percorsi) — bug reale trovato testando v0.1.12: la parte finale
# della chiave di cache include un hash dei Cargo.lock/Cargo.toml
# di ciascun percorso in `workspaces`, quindi due elenchi diversi
# producono hash diversi anche a parità di tutto il resto (già
# corretto: prefisso combaciante, nessun nome di job nella
# chiave) — la cache salvata qui non veniva trovata dalla release
# comunque.
- uses: Swatinem/rust-cache@v2
with:
workspaces: |
aw-watcher-afk-rust -> target
aw-watcher-app-icons-rust -> target
aw-watcher-claude-code-rust -> target
aw-watcher-excel-rust -> target
aw-watcher-screenshot-rust -> target
aw-watcher-tray-rust -> target
aw-watcher-vpn-rust -> target
aw-watcher-vscode-rust -> target
aw-watcher-window-rust -> target
src-tauri -> target
launcher -> target
# Bug reale trovato testando v0.1.11: il nome del job entra
# di default nella chiave di cache (add-job-id-key) — questo
# job si chiama "warmup", quello di release.yml
# "build-and-release", quindi le chiavi non combaciavano MAI
# anche con la cache salvata correttamente sul branch
# principale. Disattivato qui E in release.yml (deve
# combaciare in entrambi) perché l'intento è proprio
# condividerla tra i due job.
add-job-id-key: false
- name: Compila i watcher
shell: pwsh
run: |
New-Item -ItemType Directory -Path "src-tauri/binaries" -Force | Out-Null
foreach ($w in $env:WATCHERS -split " ") {
cargo build --release --manifest-path "aw-watcher-$w-rust/Cargo.toml"
Copy-Item "aw-watcher-$w-rust/target/release/aw-watcher-$w.exe" `
"src-tauri/binaries/aw-watcher-$w-x86_64-pc-windows-msvc.exe" -Force
}
- run: npm install
- run: npm run build
- name: Compila app.exe e launcher.exe
shell: pwsh
run: |
cargo build --release --manifest-path src-tauri/Cargo.toml
cargo build --release --manifest-path launcher/Cargo.toml