Repository navigation
W-22382831 & W-22382821 feat: VSCode Release Draft workflow - #28
franciscoperezsammartino wants to merge 11 commits into
Conversation
- Add .github/workflows/vscode-release.yml: weekly + manual dispatch workflow that finds new commits since the last release, computes a proposed version from lsp-server diff (even-minor convention), builds a CHANGELOG draft + VSIX, and opens a release-draft PR - Add packages/vscode/vsix-versions/ as the VSIX artifact directory - Add repository field to packages/vscode/package.json Closes W-22382827, W-22382831 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ad of git log Replaces the git log commit scrape with a per-package CHANGELOG.md reader. Each package uses changesets and squash-merges, so individual commits are not reliably visible on the default branch. Reading the package changelogs directly gives richer, more accurate content for the release draft. Packages tracked: lsp-server, lsp, language, compiler, parser, parser-javascript, parser-tree-sitter, agentforce, types, lsp-browser, dialect/agentscript, dialect/agentforce, dialect/agentfabric. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…a process.env Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sion comparison Version comparison required changeset history that may not exist in all environments. Git diff on each package CHANGELOG.md between the release commit and HEAD is simpler and works universally. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…and git commits Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1. Upload VSIX as draft GitHub Release asset instead of committing to git 2. Add tree-sitter binary checksum verification after download 3. Add job-level timeout-minutes: 30 4. Pin runner to ubuntu-24.04 instead of ubuntu-latest 5. Use git pickaxe (-S) for faster release commit detection 6. Use ::notice:: annotation when nothing to release 7. Document even/odd minor versioning convention in comment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| override_last_version: | ||
| description: 'Override last released version (e.g. 2.2.4) — leave empty to auto-detect from git log' | ||
| required: false | ||
| default: '' |
There was a problem hiding this comment.
Should probably use a boolean here?
There was a problem hiding this comment.
I did this as a text so we can specify from which version we wanted to build. This is just for testing purposes, like "lets see if we try to upgrade from an older version, what changes will this pick up"
| env: | ||
| TREE_SITTER_VERSION: '0.25.3' |
There was a problem hiding this comment.
I'd highly recommend using mise here. That way, we don't have various copies of the version floating around: #28
|
|
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| OVERRIDE_LAST_VERSION: ${{ inputs.override_last_version }} | ||
| run: | | ||
| set -euo pipefail |
There was a problem hiding this comment.
Might be more readable to put this in a shell script?
BichengWang
left a comment
There was a problem hiding this comment.
[P2] Find the commit that introduced the overridden version
At .github/workflows/vscode-release.yml:110–114, git log -S matches both addition and removal of the version string. Taking the newest match selects the release that replaced an older version, so the documented override can silently omit the changes it was meant to collect.
I ran the unchanged release-detection and changelog-collection shell from this head with OVERRIDE_LAST_VERSION=2.2.2. It selects 794ca59, whose VS Code manifest is already 2.2.4, reads lsp-server 2.2.25 as the baseline, and exits successfully with “No changelog entries found since 794ca59. Nothing to release.” The commit that introduced 2.2.2 is 38221b0, where lsp-server is 2.2.14; the omitted range includes 5371432 (TypedMapParser refactor) and 794ca59 (compiler string escaping). The 2.2.4 override similarly selects the later 2.4.0 release commit. Using current 2.4.0 as a control selects its actual introduction commit.
Please select a commit whose resulting manifest contains the requested version, rather than its removal, and cover an older-version override that must retain intervening changes.
Reviewed exact head 534a85707354338889a172694eac4ede2f3183ba. I checked the existing reviews and all five inline comments; they discuss input type, tool versions, action pins and script layout, not this lookup defect. Offline validation used Node 22.20.0 and the real repository history: the extracted shell passed bash -n, and the three override cases above ran through the unchanged read-only detection/collection section. No dependency build, VSIX packaging or hosted Actions execution was performed, and no workflow write/push/publish section was executed.
Summary
.github/workflows/vscode-release.yml— weekly (Wednesday) + manual dispatch workflow that finds new commits since the last release, computes a proposed version from the lsp-server diff (even-minor convention), builds a CHANGELOG draft + VSIX, and opens a release-draft PRpackages/vscode/vsix-versions/directory (.gitkeep) as the target location for VSIX artifactsrepositoryfield topackages/vscode/package.jsonCloses W-22382827, W-22382831
Test plan
workflow_dispatchwithoverride_last_versionset to the current version to validate the end-to-end flowNotes
VSCE_PERSONAL_ACCESS_TOKEN,IDEE_OVSX_PAT) and the publish workflow will be added in a follow-up (W-22382824)🤖 Generated with Claude Code