Repository navigation
Select release, nightly and dependency PR tools for VSIX packaging - #1307
JonatanAntoni wants to merge 2 commits into
Conversation
|
Coverage Impact This PR will not change total coverage. 🚦 See full report on Qlty Cloud »🛟 Help
|
7ebc330 to
0cd9edf
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Artifact discovery and source-provenance gaps can reject available builds or package binaries and licenses from unintended revisions.
4 open issues
What changed in this PR
This PR adds release, nightly and dependency-PR tool selection to VSIX packaging, while keeping GDB pinned.
Changes:
- Adds channel-aware artifact selection and dependency PR overrides through the CLI and workflows.
- Extracts shared archive handling, adds ctrace license collection and extends tool validation.
- Adds selection and archive tests, updates developer documentation and excludes packaging outputs.
| File | Description |
|---|---|
scripts/workflow-assets.ts |
Selects workflow artifacts and handles nightly release fallback. |
scripts/workflow-assets.test.ts |
Tests source selection, cache identity and fallback behavior. |
scripts/validate-tools.ts |
Adds ctrace license checks and structural-only validation. |
scripts/tsconfig.json |
Enables exact optional property checking. |
scripts/tool-archives.ts |
Centralizes extraction, symlink handling and ctrace licenses. |
scripts/tool-archives.test.ts |
Tests archive formats and symlink safety. |
scripts/download-tools.ts |
Adds channel and dependency PR CLI options. |
scripts/dependency-prs.ts |
Parses allowlisted PR links and handles conflicts. |
scripts/dependency-prs.test.ts |
Tests link parsing, validation and conflict handling. |
package.json |
Consolidates download commands and removes the nightly pin. |
jest.config.ts |
Maps relative JavaScript imports to TypeScript sources. |
DEVELOPMENT.md |
Documents channels, overrides and validation. |
.vscodeignore |
Excludes local packaging outputs and repository instructions. |
.gitignore |
Ignores local packaging outputs. |
.github/workflows/nightly.yml |
Accepts manual dependency PR overrides. |
.github/workflows/ci.yml |
Resolves PR-description links and selects packaging channels. |
Review effort: Balanced
|
Verified log output, the build picked up pyts 1.0.1.dev3+g1aaedab from the linked PR. |
jreineckearm
left a comment
There was a problem hiding this comment.
Looks mostly good to me as far as I can follow the complexity of the logic.
My main question mark is about whether we should have extra steps for ctrace licenses during collection and validation. Or if that needs fixing in the devtools repo / ctrace packaging.
| shell: bash | ||
| run: | | ||
| node --import tsx --input-type=module <<'JS' | ||
| import fs from 'node:fs/promises'; |
There was a problem hiding this comment.
Is there a reason not to put this into a separate .js or .ts file?
| /** Adds source-matched license files to ctrace workflow artifacts. */ | ||
| export class CTraceWorkflowAsset extends WorkflowArchiveAsset { | ||
| /** Fetches licenses at the selected run's commit and its recorded submodule commits. */ | ||
| public async copyLicenses(destination: string): Promise<void> { |
There was a problem hiding this comment.
Why does this script copy the licenses? Isn't this rather the job of the ctrace packaging process?
If it's missing then it should be fixed there.
| } | ||
|
|
||
| if (name === 'ctrace') { | ||
| for (const license of ['LICENSE.txt', 'THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_LICENSES/cxxopts.txt', 'THIRD_PARTY_LICENSES/yaml-cpp.txt', 'THIRD_PARTY_LICENSES/OpenCSD.txt', 'THIRD_PARTY_LICENSES/OpenCSD-NOTICE.txt']) { |
There was a problem hiding this comment.
Again seems only to be there for ctrace but not for pyTS and pyOCD.



Implements #1300
mainartifacts with release fallback. GDB stays pinned.Depends on Open-CMSIS-Pack/pyTS#71 for workflow verification