Add release channel support for remote server downloads#12571
Draft
juliasilge wants to merge 3 commits intomainfrom
Draft
Add release channel support for remote server downloads#12571juliasilge wants to merge 3 commits intomainfrom
juliasilge wants to merge 3 commits intomainfrom
Conversation
|
E2E Tests 🚀 |
juliasilge
commented
Mar 18, 2026
| const productJsonStream = gulp.src(['product.json'], { base: '.' }) | ||
| // --- Start Positron --- | ||
| .pipe(jsonEditor({ commit, date: readISODate('out-build'), version, positronVersion, positronBuildNumber })) | ||
| .pipe(jsonEditor({ commit, date: readISODate('out-build'), version, positronVersion, positronBuildNumber, quality: releaseChannel })) |
Contributor
Author
There was a problem hiding this comment.
In the gulp files, we import releaseChannel and then put it into the product.json in the field quality. We want to use quality because it is what we can use for URL templating.
| * Note: This is written to product.json as 'quality' to leverage existing | ||
| * VS Code URL substitution infrastructure (${quality} in URL templates). | ||
| */ | ||
| export const releaseChannel = process.env.VSCODE_QUALITY ?? 'dailies'; |
Contributor
Author
There was a problem hiding this comment.
We can use whatever env var we want here. For example, this could be:
Suggested change
| export const releaseChannel = process.env.VSCODE_QUALITY ?? 'dailies'; | |
| export const releaseChannel = process.env.RELEASE_CHANNEL ?? 'dailies'; |
What env var do we want to set over in positron-builds?
| "description": "The URL from where the Positron server will be downloaded. You can use the following variables and they will be replaced dynamically:\n- ${quality}: Positron server quality, e.g. stable or insiders\n- ${version}: Positron server version, e.g. 2024.10.0-123\n- ${commit}: Positron server release commit\n- ${arch}: Positron server arch, e.g. x64, armhf, arm64\n- ${arch-long}: Positron server arch in long format, e.g. x86_64, arm64", | ||
| "scope": "application", | ||
| "default": "https://cdn.posit.co/positron/dailies/reh/${arch-long}/positron-reh-${os}-${arch}-${version}.tar.gz" | ||
| "default": "https://cdn.posit.co/positron/${quality}/reh/${arch-long}/positron-reh-${os}-${arch}-${version}.tar.gz" |
Contributor
Author
There was a problem hiding this comment.
This quality placeholder is already plumbed through in all the right places for us to use in this way.
Comment on lines
+205
to
+206
| // Default to dailies for backwards compatibility | ||
| return 'dailies'; |
Contributor
Author
There was a problem hiding this comment.
This is not an upstream file, so I think it's fine for us to change this, right?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses #11382
When Positron connects to WSL, SSH, or dev container remote hosts, it downloads a server build from the CDN. Right now, we always download from the
dailies/CDN path, which only retains builds for 60 days. After 60 days, users on a particular monthly release can no longer connect to remote hosts.This PR adds a
qualityfield toproduct.jsonthat we can then use to control the CDN path for remote server downloads:dailies(default): For daily builds frommainbranchreleases: For monthly releases fromrelease/*branchesThe value is set at build time via the
VSCODE_QUALITYenvironment variable (at least right now; see my comment below about how we can make this whatever we want). A follow-up PR inpositron-buildswill set this environment variable based on the source branch.What happens after this PR is merged but before we make changes to our builds?
quality: "dailies"since our env var is not yet set in the build workflowsdailies/CDN pathWhat happens
positron-buildschanges?quality: "dailies"→ downloads fromdailies/(60-day retention)quality: "releases"→ downloads fromreleases/(permanent retention)Release Notes
New Features
Bug Fixes
dailiesin WSL server build download does not work >60 days beyond that release #11382)QA Notes
@:remote-ssh
To verify the implementation locally:
Build Positron without setting the env var:
Build with the env var set:
Obviously, this will not be what we use, but it shows you how we are setting this up. 🥔
${quality}: