-
Bug
-
Resolution: Done
-
Major
-
2.1.1.GA, 2.2.0.GA
-
None
Today, the process of building Theia so it can be used in CRW is a VERY cumbersome one:
- build theia-dev container
- collect artifacts from that container into a tarball, save it in Jenkins
- rebuild the container in "ubi8-brew" offline mode to verify it will work in Brew
- build theia (depends on theia-dev) container
- collect artifacts from that container into a tarball, save it in Jenkins
- rebuild the container in "ubi8-brew" offline mode to verify it will work in Brew
- build theia-endpoint (depends on theia) container
- collect artifacts from that container into a tarball, save it in Jenkins
- rebuild the container in "ubi8-brew" offline mode to verify it will work in Brew
When it works, it produces 13 artifacts that are later fetched via 3 Jenkins builds into pkgs.devel so that the artifacts are available offline in Brew, then triggers a build in Brew. It generally takes 90-120 mins to run, plus the downstream Jenkins-Brew jobs.
When it fails, it fails for weeks at a time as various members of Prod, Devex, and Editors team work together to make changes in Theia work in the CRW assembly too.
Here's the latest example of the failure: https://github.com/eclipse/che/issues/16844
I'd suggest that we could do the following to make it less brittle:
a) split into 3 jobs so that theia-dev, theia, and theia-endpoint containers/artifacts can be build & published separately
b) don't bother with the pre-flight ubi8-brew offline build; just build online and collect artifacts, then assume Brew will work
c) drop dependency on theia-dev entirely, since it's an artifact that is only used to build theia, but never again used in CRW. Possible
d) make the theia-endpoint container not depend on theia
I don't know which of those are viable, but I'd like help from the Editors team to remove this weeks-long burden every time we need to move to an new version of Theia and che-theia.
Help??
Additionally, we should not trigger all three theia-dev, theia and theia-endpoint builds in Brew in parallel, since they depend on each other. Instead, the Jenkins job should wait until each build is done before triggering the next one.