From 0660b20ffa011916297313dca876218c3efdd8ff Mon Sep 17 00:00:00 2001 From: Adam Perry Date: Wed, 8 Jul 2026 01:42:57 +0000 Subject: [PATCH] ci: extract V8 IO traces in place --- .github/workflows/v8-canary.yml | 34 ++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/v8-canary.yml b/.github/workflows/v8-canary.yml index c5b03862dd..221256556f 100644 --- a/.github/workflows/v8-canary.yml +++ b/.github/workflows/v8-canary.yml @@ -608,11 +608,39 @@ jobs: shell: pwsh run: ./.github/scripts/windows-io-trace.ps1 -Action stop -Label check-clean-worktree - - name: Upload Windows I/O trace + - name: Install ETWAnalyzer + if: always() && !cancelled() + shell: pwsh + run: | + Invoke-WebRequest -Uri "https://github.com/Siemens-Healthineers/ETWAnalyzer/releases/download/v4.5.0.4/ETWAnalyzer_SelfContained.zip" -OutFile ETWAnalyzer.zip + Expand-Archive -Path ETWAnalyzer.zip -DestinationPath ETWAnalyzer + + - name: Extract Windows I/O trace + if: always() && !cancelled() + shell: pwsh + run: | + $analyzer = (Get-ChildItem ETWAnalyzer -Filter ETWAnalyzer.exe -Recurse | Select-Object -First 1).FullName + if (-not $analyzer) { + throw "ETWAnalyzer.exe was not found" + } + + $traces = Get-ChildItem (Join-Path $env:RUNNER_TEMP "codex-io-trace") -Filter *.etl + if (-not $traces) { + throw "no ETL traces were found" + } + + foreach ($trace in $traces) { + & $analyzer -extract File Disk Mark -fd $trace.FullName -NoCompress -Indent + if ($LASTEXITCODE -ne 0) { + throw "ETWAnalyzer failed for $($trace.FullName)" + } + } + + - name: Upload extracted Windows I/O data if: always() && !cancelled() continue-on-error: true uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 with: - name: windows-io-v8-source-${{ matrix.target }} - path: ${{ runner.temp }}/codex-io-trace + name: windows-io-v8-source-${{ matrix.target }}-analysis + path: ${{ runner.temp }}/codex-io-trace/Extract/*.json if-no-files-found: error