github CI: actually sign files in scons source so that scons launcher doesn't do it, causing uploaded symbols to mismatch#20129
Conversation
…ld NvDA), make sure to set the API signing token. This was happening for creating the launcher, but not here. Thus dlls / exes were not intially signed when symbols were collected for upload, and then the launcher produced newly signed ones.
…ust the same as we do for launcher.
… the build signs files which takes a little longer.
…uncher, as this final step must be done sequentially, and there is a chance that some remaining dependencies (such as espeak dictionaries) could be recompiled.
…ilt with multiple cores, but launcher cannot. Also easier to read logs.
…d create Launcher. Split building controller client and creating launcher into their own steps.
There was a problem hiding this comment.
Pull request overview
This PR updates the GitHub Actions CI pipeline to ensure signing happens during scons source (not retroactively during scons launcher), so that archived/uploaded debug symbols match the binaries shipped in the final NVDA launcher. It also restructures CI steps to better control parallelism and reduce signing-related rebuilds.
Changes:
- Pass the API signing token into the Build NVDA job’s
setSconsArgs.ps1soscons sourcecan sign outputs during the initial build. - Switch general SCons builds to
--all-cores, while ensuringscons launcherruns without the parallelism flag. - Split “Create launcher and controller client” into discrete steps (install SignPath, build client, build launcher) and adjust launcher target list accordingly.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
ci/scripts/setSconsArgs.ps1 |
Updates default SCons parallelism (--all-cores) and removes client from the launcher output target list. |
.github/workflows/testAndPublish.yml |
Ensures signing token is available during Build NVDA; installs SignPath earlier; splits launcher/client build steps; prevents launcher build from inheriting parallel SCons flags. |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/nvaccess/nvda/sessions/3881434f-41da-4959-a487-b2703e747874 Co-authored-by: michaelDCurran <14154141+michaelDCurran@users.noreply.github.com>
Agent-Logs-Url: https://github.com/nvaccess/nvda/sessions/3881434f-41da-4959-a487-b2703e747874 Co-authored-by: michaelDCurran <14154141+michaelDCurran@users.noreply.github.com>
Applied the requested workflow follow-up in 146bab2: both SignPath installation steps now only run on |
|
@copilot why did you touch documentation files? this is completely unrelated to the changes requested. |
This reverts commit 58ffd64. Co-authored-by: michaelDCurran <14154141+michaelDCurran@users.noreply.github.com>
They were accidentally included when I used the first progress update while the working tree already had those unrelated docs edits. I’ve removed that stray docs-only change from the branch in 235a1c2, so the PR diff is back to the intended CI files only. |
…ically checking the API signing token secret.
… from an environment, so set apiSigningToken in the env for the step.
…gle core. Similarly, if building a release also do the same as release builds can not be re-run safely.
seanbudd
left a comment
There was a problem hiding this comment.
Can you merge master in one more time to ensure the changes to projectDocs are gone?
Link to issue number:
Fixes #20033
Replaces pr #20084
Summary of the issue:
The debug symbols archived from builds of NvDA do not match the actual files in the final NVDA launcher, if files are required to be signed.
This is due to the fact that the API signing key was never set in the CI environment when building NVDA with
scons source, although it was present when runningscons launcher. NVDA would be initially built without signed files, and these files would be collected for the symbols, but then as the launcher was being created, the files would be retroactively signed.Also if trying to run CI instructing SCons to use multiple cores to speed up builds, some of the files may have been signed after the launcher was created, thus leaving them as the old unsigned copies.
Signing with signpath takes a very long time, and can add up to 10 minutes for a build when using a single core.
Thus signing properly in
scons sourcewould address the incorrect symbols and allow for building using multiple cores.Description of user facing changes:
Description of developer facing changes:
Description of development approach:
--all-coresmeaning that scons source, scons user_docs, scons client etc (but not scons launcher) will now run using all available cores). The biggest advantage here is signing files in scons source which dramatically decreases time as files can be signed in parallel to further source building.Testing strategy:
Known issues with pull request:
If we see any issue with running with multiple cores, we should change
--all-coresback to-j1, as that change is not technically required to solve #20033, but was the main blocker for why we stopped using multiple cores in the firstplace.Code Review Checklist: