Skip to content
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

Merged
merged 22 commits into from
Sep 26, 2023

Conversation

sgraband
Copy link
Contributor

What it does

Merge Theia Blueprint update to 1.40.0

Update Theia versions to 1.40.0

  • 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

Update to 1.40.1

Update theia-traceviewer to newest version

  • 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.

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

jfaltermeier and others added 21 commits July 5, 2023 17:37
* 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]>
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
Contributed on behalf of STMicroelectronics
@sdirix sdirix self-requested a review September 19, 2023 12:26
Copy link
Member

@sdirix sdirix left a 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:
image
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.

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
@sgraband
Copy link
Contributor Author

I update the latest commit. The three issues you mentioned should now be fixed.

@sgraband sgraband requested a review from sdirix September 25, 2023 07:10
@sdirix sdirix merged commit 88aaeea into eclipse-cdt-cloud:master Sep 26, 2023
@sdirix sdirix deleted the update-1.40 branch September 26, 2023 07:35
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.

6 participants