-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update to Theia version 1.40.1 #67
Conversation
* update gitignore * update path to electron-main script * upgrade dependencies compatible with node 16 * inversify update changes Contributed on behalf of STMicroelectronics Signed-off-by: Johannes Faltermeier <[email protected]>
Contributed on behalf of STMicroelectronics Signed-off-by: Johannes Faltermeier <[email protected]>
* adjust electron-builder config and Dockerfile Co-authored-by: Johannes Faltermeier <[email protected]> Signed-off-by: Johannes Faltermeier <[email protected]>
Contributed on behalf of STMicroelectronics Signed-off-by: Johannes Faltermeier <[email protected]>
* upgrade dependencies as well * fix test case by moving mouse over header, and wait until clickable. before the click just selected the whole extensions view for some reason.
…onfig This is a significant refactoring of the repo and CI. 1) Jenkins CI: more efficient, quicker builds I propose that we adopt a "run often, run quickly" approach to our Jenkins CI. ATM we mostly run Jenkins when it's time to release new Blueprint installers (when a PR is merged on master). The other case is if "jenkins" is detected in the PR branch or PR title, then almost a full Jenkins build is done, just stopping short of publishing new Blueprint installers (full signing and notarization is done, which can take a couple of hours). I made it so we run a very light version of the Jenkins CI by default, that builds the "dev" version of the app and pre-packages it using electron builder, generating a directory that contains the app but no installers. We really ought to run tests then, on the unpacked pre-packaged app, but it will need to be done separately. Until then, we do not require the built-in extensions (plugins), so I gave openvsx.org a rest and skip fetching them, by default. When it's detected that the Jenkins CI is processing the result of a merge on master or if the new "release dry-run" mode is enabled [1], a production version of the Blueprint apps will be produced, including built-in plugins, which will then be packaged for "real", producing genuine OS-specific installers, signed and notarized as required. This will take a lot longer to run, of course, but may be required only a minority of the time. Conclusion: with this PR, running Jenkins CI now takes about 12 minutes, and since this is relatively quick, we can afford to run this when any PR branch is created or updated. Running the same CI in "release dry-run mode" takes about an hour. A release will take longer, a bit over an hour, since additional steps are executed, like copying the various installers to a release folder. [1] About the "release dry-run" mode, it can be enabled in JenkinsFile, "pipeline" definition near the top, in "environment": BLUEPRINT_JENKINS_RELEASE_DRYRUN = 'true' I wish I found a better mechanism to enable this "release dry-run" mode. But this will serve for now. The "release dry-run" mode should be disabled before merging a PR to master, but can in the meantime be used to test or troubleshoot the whole pipeline, in particular signing and notarizing. 2) tsconfig/eslint configs: Added configs, to improve linter coverage. This made it possible for some source files, not previously covered, to get ts/linter feedback, both while editing and when running `yarn lint`. This will help keep code in-line with our standards. The config is not perfect and I would welcome further improvements. But for now I think it's a nice improvement. 3) Build "scripts" (package.json) Refactored the build commands ("scripts" section in package.json) - previously, merely running 'yarn" in the repo's root would rebuild every application from scratch. This prevents running a quick "yarn install", e.g. just to re-install build dependencies - the new version permits a granular build, with simple defaults - inspired from a similar change not so long ago in the main repo - see updated README for some examples Other misc items: - renamed extensions / applications - made the browser application a first class citizen, equal to the Electron application - all applications now share a common 'plugins' folder rather than each having their own. Moved the plugin-related entries to root package.json - to gain flexibility about which `yarn workspaces` are invoked for a given `lerna` command, using the `--scope=` CLI option.I renamed the repo's extensions and applications. This permits easily composing commands that target only the extensions or only the applications. e.g.: ``` json "build:extensions": "lerna run --scope=\"blueprint*ext\" build", "build:applications": "lerna run --scope=\"blueprint*app\" build --concurrency 1"," ``` - renamed the extensions folders, made them more straightforward - For systems with limited RAM, like on a Raspberry Pi 4B board with 4GB of RAM, it's now possible to successfully build Blueprint. e.g. use the following cmd: `yarn && yarn build:dev`, optionally followed by a packing command like: `yarn electron package` - (build:dev will build the Blueprint app in dev mode, which can be achieved in 4GB RAM) - [windows][jenkins] stash only dist folder: Currently, and only for Windows, we stash the whole git repo, which is very big and takes long to stash and un-stash. For the other OS, we only stash the dist folder, that contains the platform-specific installer, that we built. Let's try that for Windows too, and see if it works. - [jenkins] Decrease timeout from 5h to 3h" Looking at the build history, all recent builds that succeeded, did do under 2h30. OTOH, when a build hangs, it needs to wait for the timeout to expire, wasting time at the current value of 5h. Let's compromise at 3 hours and see how it goes? - [jenkins][installer build] exclude browser app for now: We do not yet publish the browser app, so let's skip building it to save time/resources. We may revisit when we use the new browser app bundling, recently made available upstream in the Theia framework. Signed-off-by: Marc Dumais <[email protected]>
eclipse-theia/theia-ide#272 (review) Signed-off-by: Marc Dumais <[email protected]>
Oops - I had forgotten to build the Theia extensions, which caused a problem at runtime. Signed-off-by: Marc Dumais <[email protected]>
To save build time, we only proceed with macos signing/notarizing when it's detected that the current build is producing official blueprint packages. Unfortunately a little bug prevents this from working. This is the fix. Signed-off-by: Marc Dumais <[email protected]>
* consume image from applications/electron/resources/icons/WindowIcon/ Contributed on behalf of STMicroelectronics Signed-off-by: Johannes Faltermeier <[email protected]>
Updates CDT.cloud Blueprint to commit 66a4032 of Theia Blueprint. Contributed on behalf of STMicroelectronics
- Update docker application to resemble browser app - Fix lerna scope expressions (blueprint -> cdt-cloud-blueprint) - Also build @eclipse-cdt-cloud/ extensions - Move plugins to root and remove from applications - Update theia-traceviewer to 0.2.0-next.20230908184630.abe6fad.0 - Fix dockerfile - Update inversify to ^6.0.1 - Update yarn.lock Contributed on behalf of STMicroelectronics
Contributed on behalf of STMicroelectronics
Update to 0.2.0-next.20230908184630.abe6fad.0. This now removed to requirement to expose the 8080 port. Also update the next version of tsp-typescript-client. Contributed on behalf of STMicroelectronics
Contributed on behalf of STMicroelectronics
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some strange files show up in the examples:
These files are immediately there after project generation.
The example generation fails when executed within the "AppImage":
2023-09-20T20:20:12.477Z root ERROR Request generateExample failed with error: Could not find resources of example in /tmp/.mount_CDTClo6Ly3ZS/resources/app/resources/example-traces Error: Could not find resources of example in /tmp/.mount_CDTClo6Ly3ZS/resources/app/resources/example-traces
There are also issues with the clangd-extension but they are out of scope for this. I reported them in #68.
theia-extensions/blueprint-examples/src/node/blueprint-examples-contribution.ts
Show resolved
Hide resolved
This makes sure that they are available during runtime. Use _dirname instead of module.path as the latter doesn't work. Delete generated *.gz files after webpack build. Also bundle examples with the electron-builder for the AppImage. Contributed on behalf of STMicroelectronics
bae2af9
to
ad18177
Compare
I update the latest commit. The three issues you mentioned should now be fixed. |
What it does
Merge Theia Blueprint update to 1.40.0
Update Theia versions to 1.40.0
Update to 1.40.1
Update theia-traceviewer to newest version
Fix linting issues
Fix tests
Bundle examples with webpack
This makes sure that they are available during runtime.
Use _dirname instead of module.path as the latter doesn't work.
Contributed on behalf of STMicroelectronics