ci(tests): use `copy --no-overwrite` instead of `sync` for screenshots upload
What changed, and why it matters
This commit changes a CI workflow that uploads test screenshots and screen recordings to an S3 bucket. It replaces the `aws s3 sync` command with `aws s3 cp --no-overwrite --recursive`. This is a workflow reliability tweak to prevent files from being overwritten during parallel uploads, not a security fix. There is no indication this change addresses a vulnerability or affects end-user devices.
No security action required. Treat as a normal CI maintenance change.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch modifies .github/actions/ui-report/action.yml, changing two AWS S3 upload commands from aws s3 sync to aws s3 cp --recursive --no-overwrite. The --no-overwrite flag prevents destination objects from being overwritten if they already exist. This appears intended to avoid race conditions or accidental clobbering when multiple CI jobs upload to shared S3 prefixes (ui_report/${{ github.run_id }} and ui_tests). The change is in CI infrastructure only and does not touch firmware code, cryptography, secrets handling, or device behavior.
Changed components
.github/actions/ui-report/action.ymlInspect captured patch +3 / −3
diff --git a/.github/actions/ui-report/action.yml b/.github/actions/ui-report/action.yml
index 7d6058c7..8161ef97 100644
--- a/.github/actions/ui-report/action.yml
+++ b/.github/actions/ui-report/action.yml
@@ -53,16 +53,16 @@ runs:
# Upload report
du -sh ${{ github.run_id }}
ls -l ${{ github.run_id }}
- aws s3 cp --recursive --only-show-errors ${{ github.run_id }} s3://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }} &
+ aws s3 cp --no-overwrite --recursive --only-show-errors ${{ github.run_id }} s3://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }} &
PID1=$!
# Upload test screen recording
du -sh ci/ui_test_records
- aws s3 sync --only-show-errors ci/ui_test_records s3://data.trezor.io/dev/firmware/ui_tests &
+ aws s3 cp --no-overwrite --recursive --only-show-errors ci/ui_test_records s3://data.trezor.io/dev/firmware/ui_tests &
PID2=$!
# TODO: generate directory listing / autoindex
- # Wait for the above sync jobs to finish (fail if one of them fails)
+ # Wait for the above copy jobs to finish (fail if one of them fails)
wait $PID1
wait $PID2
shell: sh
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.