-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Eclipse Che CLI Refactoring + Improvements #2977
Labels
kind/epic
A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.
Milestone
Comments
TylerJewell
added
the
kind/epic
A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.
label
Nov 3, 2016
about item
Does it include to move core typescript library to eclipse/che repository ? (as we're using DTO if will be better to be as part of che repository (same lifecycle)) |
Yes, that is the goal - even the /lib folder should go into the Che repo. |
41 tasks
benoitf
added a commit
to eclipse-che/che-dockerfiles
that referenced
this issue
Dec 1, 2016
…les folder eclipse-che/che#2977 Change-Id: I08d8cc18db3ba7845cde2e4f80aa10deda19d314 Signed-off-by: Florent BENOIT <[email protected]>
This was referenced Dec 1, 2016
benoitf
added a commit
to eclipse-che/che-dockerfiles
that referenced
this issue
Dec 1, 2016
…les folder eclipse-che/che#2977 Change-Id: I08d8cc18db3ba7845cde2e4f80aa10deda19d314 Signed-off-by: Florent BENOIT <[email protected]>
This was referenced Dec 6, 2016
Closing the epic as finalized. The remaining issue on retagging can be addressed after M9. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
kind/epic
A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.
This epic covers a number of improvements to refactor the Che CLI to:
The work for this epic is in the 'cli-refactoring' branch. The order of the specification below indicates the order of work to be done.
CLI Consolidation
We want to consolidate the CLIs that exist between Che and Codenvy, and move all of the meaningful functionality into Che. Most of this work has already been captured in the
cli-refactoring
branch. The key elements of this work are:Support 'che init', "che download', 'che config', 'che start', 'che stop', 'che restart', 'che destroy', 'che offline'.
Configure the che-server docker container and the docker-compose script template that is provided to have all che-server logs and machine logs written to the
/instance/config
folder. This would be identical to the way that Codenvy does it, and it is ensuring that the folder mounts of the various orchestrators are done in a proper way.Add support for 'che backup
and
che restore`, to match the cross-platform backup and recovery capabilities that are now reflected in Codenvy.Migrate existing CLI function for 'che compile', 'che mount', 'che dir', 'che ssh', 'che test" into the new CLI. We will not be migrating "che profile" into the new CLI. That will die.
Perform another CLI refactoring to create updated versions of eclipse/che-launcher and codenvy/che-launcher, which provide the important functions of
start()
,restart()
,stop()
,config()
,init()
,version()
,backup()
,restore()
,upgrade()
,offline()
,download()
. This will move the heft of the CLI into a single container, and then make the CLI an optional wrapper. This also has an affect of no longer requiring docker compose 1.8 on the host as we can provide that client in the container. Specification details are at the bottom.Need to test: workspace logs written to disk, ssh, sync, dir commands.
Specialized Testing
The new Che and Codenvy CLI's have not been tested aggressively against systems that have boot2docker, and we think it will likely break. There are a number of situations where we write (or perform tests) in the current directory. We should either just fail with an error message on what to change, or we should detect boot2docker and override CHE_CONFIG, CHE_INSTANCE and any local directory activities into %userprofile%
Verify that the CLI will work on windows with CHE_CONFIG, CHE_INSTANCE or CLI paths that have dots "." or spaces in their path name.
Work with the original poster to migrate any imrpovements from CHE-2874 Let users configure the 'Z' flag when mouting a volume #2921 so that this configurability is supported with the CLI.
** merge at this point ** then make more improvements:
Dockerfile Management
We want to move all of the non-stack images into the che repository into the /dockerfiles directory. This also includes the /lib folder which has important DTO utilities. By moving these images into the Che repository, we can tag the code and the images to keep them consistent with releases.
There will be a number of improvements to make:
/version
folder which has files that are packaged into that image. This would also mean that we might modify theassembly/assembly-main
to generate assemblies not only in /target, but also place a copy into /dockerfiles/che/ as well since that image requires an assembly.** merge at this point ** then make more improvements:
Create Custom CLI for each Assembly
** merge at this point ** then make more improvements:
Improve the new Che CLI format for configuration management
Eliminate functional redundancies
We have in some places the same function for bash repeated in four places - in che-launcher, the che CLI, the che-server entrypoint, and the codenvy CLI. Yuck, yuck, and yuck. The CLI is further complicated by the fact that we have che.sh and cli.sh, a separation of two files which is necessary so that the CLI can be self-updating. We want to move all common functions for the CLI into
/dockerfiles/lib
file. And then we need a way to automate the generation of scripts that depend upon these common functions. The common functions cannot be 'source ' because the CLI needs to embed all of the functions within its file to be sent to customers. So we will need a way to generate codenvy.sh, for example, which sources the functions it needs and adds them into the file below a line that should never be modified. We will then need to test che-server, che-launcher, CLI for Codenvy and Che.We then need to build a way to have "CLI Assemblies", which allows different products to reuse certain parts without having to have duplicate methods. While in some cases there are identical functions that can be placed into /lib, there are also similar methods which are not duplicates such as
cmd_start()
, which are mostly the same, but somewhat different. We will want to move this into an abstraction as a general pupose method which is reusable and extensible at the same time. Tyler will work with engineer to show examples of this. The CI system should allow for the base abstraction to be updated, and immediately reusable for any CLI that wants to clone / reuse it + extend it.The Tomcat startup script, che.sh, has a number of Docker-related checks which are no longer required. We should remove all of these checks and optimize the script to only support starting Tomcat. It should be possile to start the Tomcat without assuming any Docker requirements, as we will be supporting localhost machines alongsize docker machines.
After docs are finished, retag eclipse/che to eclipse/che-cli. When we do this, then remove all evidence of eclipse/che-launcher from docs and DockerHub.
The text was updated successfully, but these errors were encountered: