Fix : widows giea 1
Some checks failed
release / build (push) Successful in 17s
release / verify-windows (push) Failing after 1m2s

This commit is contained in:
jeanotx32
2026-08-11 22:40:59 +02:00
parent 1dd3959f29
commit c9ab3dafb4
2 changed files with 26 additions and 6 deletions

View File

@@ -169,12 +169,26 @@ jobs:
with: with:
node-version: '22' node-version: '22'
# Deux pièges de Windows PowerShell 5.1 sont à l'œuvre dans les étapes
# `shell: powershell` ci-dessous, et valent d'être connus avant de les
# modifier :
#
# 1. Les guillemets doubles imbriqués dans un argument passé à un
# exécutable natif sont perdus. `node -p 'x.split(".")[0]'` arrive
# donc comme `x.split(.)[0]` et lève une SyntaxError. On lit ici
# `node --version` et on découpe côté PowerShell : rien ne traverse
# cette frontière.
# 2. Le runner écrit ce bloc dans un .ps1 sans BOM, que PowerShell 5.1
# relit dans la page de codes ANSI. Tout caractère non-ASCII y devient
# illisible (« trouvé » s'affichait « trouvǸ »). Les chaînes affichées
# restent donc en ASCII — les commentaires, eux, ne sont jamais rendus.
- name: Confirmer la version de Node - name: Confirmer la version de Node
shell: powershell shell: powershell
run: | run: |
$major = [int](& node -p 'process.versions.node.split(".")[0]') $raw = (& node --version)
Write-Host "Node $(& node -v)" if ($raw -match '^v(\d+)\.') { $major = [int]$Matches[1] } else { $major = 0 }
if ($major -lt 22) { throw "Node 22+ attendu, trouvé $major" } Write-Host "Node $raw"
if ($major -lt 22) { throw "Node 22+ requis, version lue : $raw" }
# Le script d'installation Windows n'est exécutable que sur Windows : # Le script d'installation Windows n'est exécutable que sur Windows :
# ce contrôle de syntaxe est la seule barrière avant qu'il n'atterrisse # ce contrôle de syntaxe est la seule barrière avant qu'il n'atterrisse
@@ -205,7 +219,7 @@ jobs:
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair)) $auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
Invoke-WebRequest -Uri $url -Headers @{ Authorization = "Basic $auth" } ` Invoke-WebRequest -Uri $url -Headers @{ Authorization = "Basic $auth" } `
-OutFile agent.cjs -UseBasicParsing -OutFile agent.cjs -UseBasicParsing
Write-Host "Bundle récupéré : $((Get-Item agent.cjs).Length) octets" Write-Host "Bundle : $((Get-Item agent.cjs).Length) octets"
- name: Exécuter le diagnostic - name: Exécuter le diagnostic
shell: powershell shell: powershell
@@ -221,7 +235,7 @@ jobs:
# On valide que le diagnostic s'est déroulé, pas son verdict. # On valide que le diagnostic s'est déroulé, pas son verdict.
foreach ($marker in @('obs-websocket', 'powershell')) { foreach ($marker in @('obs-websocket', 'powershell')) {
if ($out -notmatch [regex]::Escape($marker)) { if ($out -notmatch [regex]::Escape($marker)) {
throw "Diagnostic incomplet : « $marker » absent de la sortie" throw "Diagnostic incomplet : marqueur $marker absent de la sortie"
} }
} }
Write-Host 'Bundle fonctionnel sous Windows.' Write-Host 'Bundle fonctionnel sous Windows.'

View File

@@ -69,7 +69,13 @@ Write-Host ''
$nodeMajor = 0 $nodeMajor = 0
$nodeCmd = Get-Command node -ErrorAction SilentlyContinue $nodeCmd = Get-Command node -ErrorAction SilentlyContinue
if ($nodeCmd) { if ($nodeCmd) {
$nodeMajor = [int]((& node -p 'process.versions.node.split(".")[0]') 2>$null) # On lit `node --version` plutôt que d'évaluer une expression JavaScript.
# PowerShell 5.1 perd les guillemets doubles imbriqués quand il passe un
# argument à un exécutable natif : `node -p 'x.split(".")[0]'` arrive côté
# Node comme `x.split(.)[0]`, qui lève une SyntaxError. Le majeur valait
# alors 0 et le script réinstallait Node sur une machine déjà équipée.
$nodeRaw = (& node --version 2>$null)
if ($nodeRaw -match '^v(\d+)\.') { $nodeMajor = [int]$Matches[1] }
} }
if ($nodeMajor -lt 22) { if ($nodeMajor -lt 22) {