fix(ci): keep a diagnostics failure from failing bundle smoke
The macOS x64 dmg chat in run 35629258153 passed. The job went red only when actions/upload-artifact got a 403 on FinalizeArtifact. That one red matrix cell made smoke-darwin a failure, so publish-channel skipped and the channel head did not move. Stop screen recording and Upload smoke diagnostics run after the chat and only collect evidence. continue-on-error keeps a failed stop or a failed upload from failing the job. The install and chat steps still fail the job, and publication still requires every smoke job to succeed.
This commit is contained in:
4
.github/workflows/desktop-bundle-smoke.yml
vendored
4
.github/workflows/desktop-bundle-smoke.yml
vendored
@@ -193,6 +193,8 @@ jobs:
|
||||
|
||||
- name: Stop screen recording
|
||||
if: always()
|
||||
# Evidence only. A failed stop must not fail a chat that already passed.
|
||||
continue-on-error: true
|
||||
uses: ./.github/actions/e2e-screen-record
|
||||
with:
|
||||
mode: stop
|
||||
@@ -209,6 +211,8 @@ jobs:
|
||||
|
||||
- name: Upload smoke diagnostics
|
||||
if: always()
|
||||
# Evidence only. A 403 from the artifact store must not fail the smoke.
|
||||
continue-on-error: true
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: desktop-smoke-${{ inputs.platform }}-${{ inputs.arch }}-${{ inputs.format }}-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
|
||||
@@ -173,6 +173,14 @@ def test_smoke_matrix_native_routes_and_driver_only_dependencies():
|
||||
assert 'save-cache' not in recording['with']
|
||||
upload = next(step for step in job['steps'] if 'actions/upload-artifact@' in step.get('uses', ''))
|
||||
assert upload['if'] == 'always()' and upload['with']['path'].endswith('/out')
|
||||
# The chat steps are the smoke verdict. Recording stop and artifact
|
||||
# upload run after that and are evidence; a 403 there must not fail
|
||||
# the job or skip channel publication.
|
||||
stop = next(step for step in job['steps'] if step.get('name') == 'Stop screen recording')
|
||||
assert stop['continue-on-error'] is True and upload['continue-on-error'] is True
|
||||
for verdict in ('Install and chat on macOS', 'Install and chat on Windows'):
|
||||
chat = next(step for step in job['steps'] if step.get('name') == verdict)
|
||||
assert 'continue-on-error' not in chat
|
||||
|
||||
recorder = hermes_yaml.safe_load((ROOT / '.github/actions/e2e-screen-record/action.yml').read_text())
|
||||
assert all(not step.get('uses', '').startswith('actions/cache') for step in recorder['runs']['steps'])
|
||||
|
||||
Reference in New Issue
Block a user