chore: Allow pointing to local artifact for gitlab-vscode-extension build
What does this MR do and why?
This change adds support for a new "path" mode to the build system, alongside the existing "url" mode.
In "path" mode, the system can now build the GitLab VSCode Extension by copying files directly from a local directory on disk, rather than downloading them from a URL. The build process creates the necessary output folders, copies browser-compatible files from the specified local path, and sets up dependencies so that touching a version file will automatically trigger a rebuild when needed.
Why
In ci: Run Web IDE integration tests in pipeline (gitlab-vscode-extension!2881 - merged), we are creating a CI pipeline job in the GitLab VSCode Extension project to run the Web IDE's Code Suggestions integration tests. This will allow us to catch regressions before the GitLab VSCode Extension is released. The path mode in the Web IDE's GitLab VSCode Extension package will allow us to easily reference the local extension build generated in a merge request.
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Screenshots or screen recordings
Screenshots are required for UI changes, and strongly recommended for all other merge requests.
This MR doesn't introduce user-facing changes.
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
-
Create a file
packages/vscode-extension-gitlab-vscode-extension/gitlab_vscode_extension_version.local.jsonin your Web IDE project. -
Add this content to the file:
{ "version": "6.37.0", "type": "path", "location": "[path-to-gitlab-vscode-extension-project]" } -
In the GitLab VSCode Extension project, run the command
npm run build:browser -
In the Web IDE project, run the command
yarn build:example. -
The Web IDE will copy the build artifacts of the local
GitLab VSCode Extensionproject rather than downloading the production artifact.