Skip to content

Select release, nightly and dependency PR tools for VSIX packaging - #1307

Open
JonatanAntoni wants to merge 2 commits into
mainfrom
codex/selectable-vsix-tool-sources
Open

JonatanAntoni wants to merge 2 commits into
mainfrom
codex/selectable-vsix-tool-sources

Conversation

@JonatanAntoni

@JonatanAntoni JonatanAntoni commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Implements #1300

  • Release builds use pinned tools; nightly builds use successful main artifacts with release fallback. GDB stays pinned.
  • PR builds select pyOCD, pyTS and ctrace from PR-description links. Conflicting links warn and use nightly for that tool.
  • CLI/manual workflows accept dependency PR numbers. Explicit PR selection fails if matching artifacts are unavailable.

Depends on Open-CMSIS-Pack/pyTS#71 for workflow verification

@JonatanAntoni JonatanAntoni self-assigned this Oct 21, 2026
@qltysh

qltysh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

All good ✅

Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
Comment thread scripts/tool-sources.ts Outdated
@qltysh

qltysh Bot commented Oct 21, 2026

Copy link
Copy Markdown

Qlty


Coverage Impact

This PR will not change total coverage.

🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread scripts/download-tools.ts
Comment thread scripts/tool-archives.ts
Comment thread scripts/workflow-assets.ts
Comment thread scripts/workflow-assets.ts
@JonatanAntoni
JonatanAntoni marked this pull request as ready for review October 22, 2026 12:00
@JonatanAntoni

Copy link
Copy Markdown
Member Author

Verified log output, the build picked up pyts 1.0.1.dev3+g1aaedab from the linked PR.

@jreineckearm jreineckearm left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .github/workflows/ci.yml
shell: bash
run: |
node --import tsx --input-type=module <<'JS'
import fs from 'node:fs/promises';

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason not to put this into a separate .js or .ts file?

Comment thread scripts/tool-archives.ts
/** 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> {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/validate-tools.ts
}

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']) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again seems only to be there for ctrace but not for pyTS and pyOCD.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants