mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 18:13:23 +09:00
[ci] (P7): the verify-split artifact keeps the green lane run, not the controls that overwrote it
- both negative-control steps re-run 12 ambient VerifySplit. entries with a knob exported, and an ambient entry writes to its own per-entry path under verify-split-logs/ which the library opens "w" - so the upload at the end of the job collected twelve CONTROL logs sitting under the LANE's names - if: always() made it worse rather than better: a failure investigation is exactly when the overwritten half is the half somebody needs - the arm proof is now followed by a cp -a to verify-split-logs-lane/ (plus the lane's JUnit), and the upload takes both trees - the green run the arm proof read, and whatever the controls left behind
This commit is contained in:
@@ -1039,6 +1039,23 @@ jobs:
|
||||
verify-split-arming verify-split-logs "${RUNNER_TEMP}/verify-split.xml" \
|
||||
"${GITHUB_WORKSPACE}/MobileGL/MG_IntegrationTest/Harness/verify-split-unarmed-expected.txt"
|
||||
|
||||
# THE GREEN LANE'S LOGS, KEPT BEFORE THE CONTROLS OVERWRITE THEM. Each control step below
|
||||
# re-runs ambient VerifySplit. entries with a knob exported, and an ambient entry writes to
|
||||
# ITS OWN per-entry path under verify-split-logs/ - which the library opens "w". So by the
|
||||
# time the upload step at the end of this job runs, twelve of those files are the CONTROL
|
||||
# runs' logs sitting under the LANE's names: an artifact showing deliberate divergences,
|
||||
# with the green run they were meant to be evidence of already gone. `if: always()` on the
|
||||
# upload made that worse rather than better, because a failure investigation is exactly
|
||||
# when the overwritten half is the half somebody needs.
|
||||
- name: Keep the green lane logs before the controls overwrite them
|
||||
if: always()
|
||||
working-directory: build-verify-split/MobileGL/MG_IntegrationTest
|
||||
run: |
|
||||
rm -rf verify-split-logs-lane
|
||||
cp -a verify-split-logs verify-split-logs-lane
|
||||
cp -p "${RUNNER_TEMP}/verify-split.xml" verify-split-logs-lane/ || true
|
||||
echo "kept $(ls verify-split-logs-lane | wc -l) file(s) from the green lane run"
|
||||
|
||||
|
||||
# NEGATIVE CONTROL A ON THE SPLIT ARM - integration-verify's step A, same knob, same shape
|
||||
# (this step passes when ctest FAILS), aimed at the ambient VerifySplit. entries of BOTH
|
||||
@@ -1124,12 +1141,17 @@ jobs:
|
||||
fi
|
||||
echo "the omitted stamp turned the split lane red, as it must"
|
||||
|
||||
# BOTH SETS, AND THEY ARE DIFFERENT EVIDENCE. verify-split-logs-lane/ is the green run the
|
||||
# arm proof read; verify-split-logs/ is whatever the control steps left behind, which for
|
||||
# twelve entries is a deliberately red re-run under the same name. Uploading only the
|
||||
# second - which is what this step did before the copy above existed - loses the first.
|
||||
- name: Upload verify-split lane logs
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: integration-verify-split-logs
|
||||
path: |
|
||||
build-verify-split/MobileGL/MG_IntegrationTest/verify-split-logs-lane/**
|
||||
build-verify-split/MobileGL/MG_IntegrationTest/verify-split-logs/**
|
||||
build-verify-split/MobileGL/MG_IntegrationTest/pipe-*split*.log*
|
||||
if-no-files-found: warn
|
||||
|
||||
@@ -111,6 +111,11 @@ upload,所以描述符宣告 `(target, level)` 而调用递空指针,会走
|
||||
完整性查询(2,只有 DirectGLES 半边——DirectVulkan 上这两条 skip,由 skip 规则吸收);只 fork 的 poison 父进程(2,
|
||||
帧画在子进程里、写子进程自己的日志)。
|
||||
|
||||
- **CI 上传的是两套日志(V1 修复轮改)。** 两个负控步骤各自用旋钮重跑 12 条 ambient `VerifySplit.` 条目,而
|
||||
ambient 条目写的就是 `verify-split-logs/` 下它自己那份私有路径(库以 `"w"` 打开),于是上传步骤收走的那 12 个
|
||||
文件是**负控那次红跑**的日志、却顶着车道条目的名字——绿跑的证据已经没了,而且 `if: always()` 让这件事在**失败
|
||||
排查时**最严重。现在臂证明之后先 `cp -a` 出 `verify-split-logs-lane/`(连同 JUnit),两套一起上传。
|
||||
|
||||
### 2.2 发现 A(真实分歧,已定位;改的是预言,不是规则)
|
||||
|
||||
**用例与首个分歧记录。** 第一次整车道运行(`MOBILEGL_PIPE_VERIFY_FATAL=0` 普查):1068 条里 **220** 条、
|
||||
|
||||
Reference in New Issue
Block a user