Eclipse Che全方位

Eclipse Che全方位

Eclipse下一代IDE,Eclipse Che是为团队和组织而构建的开发者工作空间服务器和云IDE。

概要

核心理念:

  1. 开发环境容器化 ~ 团队成员在容器中开发;
  2. 开发工具微服务化 ~ git、编译、运行都是微服务;
  3. IDE的Web化 ~ 通过浏览器获取全部服务;

核心能力:

  • 一键部署工作空间
    • 自动化工作空间的创建
    • 模拟生产环境
    • 在k8s的pod中编码
    • 集成你的版本控制
  • 瞬间启动项目
    • 与任何人共享工作空间
    • 控制工作空间的权限
    • 使用浏览器IDE或者桌面IDE
    • 定义团队的资源上限
  • DevOps工作空间平台
    • 在云中使用或者在本地安装
    • 横向扩展或者纵向扩展
    • 将源代码与设备脱离
    • 控制你的LDAP/AD

总结:

  1. Eclipse Che为软件开发者提供按需的、可扩展的开发环境(即工作空间,包括运行时堆栈、工程文件和开发工具)。
  2. Eclipse Che基于Docker技术(后来扩展到OpenShift、K8s),创建和管理云开发环境。
  3. Eclipse Che集成了Eclipse Orion(将被Eclipse Theia代替),作为其运行于浏览器的代码编辑器。

所带来的改进:

  • 使用Eclipse Che能够快速地搭建并管理开发环境和测试环境,保证开发环境和测试环境的一致性。
  • 对于为他人提供工作空间的开发者来说,基于Eclipse Che能够实现DevOps过程。

换言之,使用Docker的优点(相比较于物理机或虚拟机)是免于部署操作系统;使用Eclipse Che的优点(相比较于原生的Docker),对于个人开发者来说,可以使用Dockerfiles定义运行时环境,而不需要学习Docker语法。对于团队开发来说,统一的可定制的开发环境和测试环境,并允许扩展。

基本

核心域

Che提供了什么?

  1. 包含运行时和IDE的工作空间
  2. RESTful的工作空间服务
  3. 基于浏览器的IDE(SaaS)
  4. 语言、框架和工具插件
  5. 创建插件和程序集的SDK

工作空间模型

工作空间与运行时

项目与运行时

以类的形式表示

容器托管

工作空间服务

WebIDE

Che Server

  1. Che是运行于应用服务器(例如Tomcat)的工作空间服务器。
  2. Che服务器本身是一个Docker容器。
  3. 开发者通过Web控制台/DashBoard管理工作空间和工程
  4. Che server控制工作空间的生命周期,向工作空间注入各种服务,例如工程、源码、Che插件。
  5. Che服务器和工作空间有内置的Restful API,控制台和浏览器IDE所做的事情都是通过Restful API完成。

工作空间/Workspace

工作空间

  1. 工作空间被定义为工程、环境和命令的集合。工作空间以JSON的数据模型定义,包含工程、运行时、IDE的定义等。
  2. 工作空间(Docker容器)是具有独立的运行时服务器,具有独立的URL,允许多个用户同时访问一个工作空间。
  3. 由Che注入到Workspace的服务
    • Che Plug-ins
    • Commands
    • Projects
    • IntelliSense
    • Synchronizer

数据模型

environments: Map<String, getEnvironments>  // Workspace envs. A workspace can have multiple envs
defaultEnv: STRING                          // A workspace should have a default environment
projects: []                                // Projects associated with a workspace
commands: []                                // Commands associated with a workspace
name: STRING                                // Workspace name that has to be unique in a namespace
links: []                                   //

环境

环境

工程

工程

命令

命令

命令在项目中

运行时

运行时

WebIDE

参考Eclipse Theia

Chedir:可移植的工作空间

Chedir的目的:基于Docker提供一个易于配置、可复制、可移植的开发者空间,由单一的一致的工作流程控制,实现个人和团队效率和灵活性的最大化。

Chedir受到Vagrant的启发,不同之处在于Vagrant使用单个VM作为环境的广义抽象。Chedir将此抽象应用于开发者工作空间,包含多个内部环境、来自于代码库的工程源码、以及构建和调试工程所需的工具和命令。准备好之后,开发者可以使用本地IDE或者Eclipse Che内置的云IDE。

非核心域

  1. 基础设施:Docker/OpenShift/Kubernets;
  2. 语言、框架、工具:Java/C#/TS,git/terminal/exec
  3. SDK:jdk/dotnet-sdk/nodejs
  4. IDE:Eclipse Theia;
  5. 用户权限:JBoss Keycloak;

Che所集成的

版本控制

Eclipse Che使用JGit来支持Git,在IDE和终端,都支持Git。

私人仓库需要安全的SSH连接,而且大多数的开发者对于将要Push的仓库都会通过SSH拷贝这个仓库,所以需要生成SSH键对。

基础设施

基础设施

调试器

Che内置的调试器

  • Java
  • C/C++(使用GDB)
  • PHP(使用Zend debugger等)
  • Node.js(使用GDB)

整体结构

Che架构

扩展性

Che的四种扩展场景:

  • 客户端插件,增加新的菜单、面板和其他UI组件,使用GWT;
  • 增加服务端组件和代理,部署到工作空间的机器;
  • 支持新的基础设施;
  • 通过语言服务器启动语言工具;

详细:

  1. IDE扩展,采用GWT技术,将被Eclipse Theia代替;
  2. Che Server扩展,或称其为 Workspace Master扩展。
    • Java,JAR文件,增加或修改Che服务器的核心API,用于管理工作空间、环境和机器。
    • WS Master扩展作为服务部署在Che服务器。一旦部署,他们会启动新的管理服务,可以控制用户、认证和工作空间。
  3. Workspace扩展,或称其为Workspace Agent
    • 创建或修改与工程相关的扩展,运行于工作空间机器,能够本地访问工程文件。定义机器的行为、代码模板、command instruction、scaffolding command、intelligence
    • 工作空间代理扩展和Che核心类库一起编译,部署在嵌入的Che服务器,而这个Che服务器运行在每个工作空间机器上。这个Che服务器由位于中心的WS Master Che服务器所创建和控制,被注入到工作空间机器中。这个嵌入的服务器将承载你的工作空间代理扩展,并提供了一个Che所承载的服务和承载着工程的机器之间的通讯桥梁

REST API

工作空间服务器API

源码地址

远程与Che master交互,可以做到

  1. 创建开发者环境:创建、更新和删除工作空间;
  2. 通过创建和删除runtime来启动工作空间;
  3. 新增、更新和删除工作空间环境;
  4. 将命令与工作空间关联。

工作空间代理API

集中于项目类型、项目和与项目相关的,例如Git。使用工程API,可以通过编程使用定制的插件或者第三方客户端来创建/导入工作空间中的项目、更新配置、获取文件内容。

源码地址

制品库

Assembly:程序集是Maven的组件,可产生一个 build artifact。对于Eclipse Che来说,程序集是包含有jars的.war文件,或者是一个tomcat程序集。

Eclipse che程序集包括:

  • assembly-ide-war GWT插件,将会编译为JavaScript的浏览器IDE
  • assembly-wsagent-war Java插件,运行于workspace代理之内
  • assembly-wsagent-server 将工作空间代理打包放入Tomcat,之后在Machine中启动
  • assembly-wsmaster-war Java插件,在Che核心服务(master)中运行
  • assembly-main 将所有的Che模块打包,成为最终的Tomcat包。

部署路径:

  • Assembly-main 整体打包
    • Wamaster -> api.war
    • Dashboard -> dashboard.war
    • Documentation -> docs.war
    • Swagger UI -> swagger.war
    • 代理(例如terminal, ws-agent)-> lib目录
  • Assembly-ide-war -> ide.war -> ROOT.war
  • Assembly-wsagent-war -> ROOT.war
    • Assembly-wasgent-war Che平台的核心,包含workspace API、用户profile和设置、运行时基础架构的实现。

应用

Codenvy

Codenvy是Che的企业适配,增加了多节点扩展、用户数据库和安全控制。Codenvy目标是开发团队的云工作环境(SaaS),可以认为是Che的企业版。(2017.5 Red Hat合并)

Codenvy

Eclipse Che + 团队和组织扩展 + DevOps基础设施 + 企业支持

Codenvy

Codenvy

Red Hat OpenShift

Docker编排的工具平台

OpenShift

http://dockone.io/article/564

SAP Cloud Platform Web IDE

SAP Cloud Platform Web IDE用于开发和扩展SAP Fiori和SAPUI5。SAP Web IDE使用Eclipse Che工作空间服务器准备和管理所有的开发者工作空间。创建定制的IDE界面,结合自己的技术堆栈、扩展、业务逻辑和集成。UI通过RESTful接口与Che交互。

SAP Web IDE

SLX.cloud,分析、优化、实现

Silexica,我们使用最前沿的编译器技术开发SLX,以用于开发异构多核平台。使用Eclipse Che和SLX.Cloud我们增加了一种新的交付模式,这种模式使用即可部署的云工作空间的SaaS模型。不需要下载数个GB大小的二进制文件,新用户可以点击几下就立即可以开始。

Silexica

SLX.cloud是如何扩展Eclipse Che的?

SLX.cloud运用Eclipse Che的栈将其核心技术重新打包为一个工作空间镜像。作为用户,你可以充分访问终端,并使用你在C/C++开发过程中通常使用的所有命令。使用我们运行在轻量级容器的工具,性能和表现能够赶上甚至超过典型的桌面电脑。

UI作为Eclipse Che的扩展而构建,使用了例如D3.js这样的web技术,为你的代码创建令人印象深刻的图像化表示。通过实现用于clangd语言服务器的客户端,SLX.cloud进一步支持C/C++的警告,并在你的浏览器中自动完成。

评价

截至2018.10,Cje存在的问题:

  • 工作空间自身为单体应用;
  • 扩展性差,采用Che的ISV如果为自己的用户提供定制内容,需要构建Che的制件和镜像;
  • WebIDE采用GWT技术,技术堆栈落后,扩展开发难度大;
  • 工作空间之间共享数据的支持较差;
  • 工作空间之间互操作的支持较差;

2018年改进目标与改进方式:

  • 支持大规模的企业级应用:基础设施采用K8S,提高管理的易用性,提高运行的稳定性;
  • 保证开发环境与运行环境的一致性:采用新的插件模式提供开发服务,例如git代理、sdk等,以微服务的形式提供给工作空间;
  • 提高WebIDE插件开发的灵活性:放弃GWT,采用Eclipse Theia作为WebIDE,并对其改进以支持微服务形式的插件;

关于Eclipse Che新的插件模式:

  • 插件以微服务形式发布,插件的发布者要管理容器的全部生命周期;
  • 用户的工作空间动态地连接这些服务;
  • 插件将从工作空间内部来到工作空间外部;

该插件模式将影响:

  • 工作空间的所有开发服务:git代理、sdk、语言服务等将以独立的容器和微服务形式出现;
  • WebIDE的插件框架和插件开发将完全改变,完全转向微服务方式;
  • Eclipse Che的定制化更加简单,将不要修改Che的源码,也不需要重新构建;
  • 今后将出现Eclipse Che开发者社区的插件市场;

Che的开发

Eclipse Che 6路线图

Eclipse Che应当提供与世界一流水平的工具向匹配的开发者体验,例如Eclipse IDE和JetBrains。工作空间应该是可配置的用于各种语言,并且为语言服务协议提供最佳的支持,同时囊括所有指名的语言服务器。用户必须能够使用一个一致的命令面板来完成任何动作。VCS应当简化,并更好地集成在IDE。在多个文件间源码导航、搜索和执行动作应当更加自然,并且高效。这些需求同样涉及到IDE的UI和用户体验。

必须向Eclipse Che引入一个扩展模型。贡献者应该能够使用他们所选择的技术来制作扩展。扩展必须拥有独立于Eclipse Che核心的生命周期来发布。Tunaround开发Che扩展必须更加平滑和快速。必须引入扩展点。在Che中创建Che的扩展必须是最佳的。用户必须能够在每个工作空间中选择扩展。还需要引入扩展市场。

Eclipse Che一定不要依赖于特定的和定制的Stack来提供tooling。Tooling必须成为工作空间机器的相伴的侧车。

Che发布

  • 专业开发工具
    • 类删除/重命名/移动的可靠的Java工具
    • 支持TypeScript(代码补全、错误和语法高亮、格式化、重构和代码导航)
    • 提升单元测试支持
    • 支持线程、条件断点的调试器(进行中)
  • 重新设计用户体验
    • 新的IDE设计和体验(进行中)
    • 重新设计UD,用于工作空间的创建、细节和crane,以及减少代理启动的输出
    • 新的工作空间加载序列(进行中)
  • 基础设施和基础
    • 工作空间基础设施SPI,以支持Docker和Openshift
    • 用于Openshift的SPI补全(进行中)
    • GWT高级开发模式支持(最大努力)

Che发布后迭代(进行中)

  • 扩展机制
    • IDE Javascript扩展点
    • Self hosting in Che
    • GWT改进
  • 结构提升
    • 易于部署语言服务
    • 更快的工作空间加载
    • Consolidation of Chefiles and Factories
    • 将Java基础结构切换到JDT LS
  • 基础设施支持
    • 支持Kubernets
  • 专业开发工具
    • 将Orion编辑器替换为Monaco
    • 通用的测试支持
    • Git专用的面板
  • 其他特性
    • Che的引导的工作流和交叉
    • Spike on Teletype

关注

Che自身是如何构建的?

示例:EclipseChe支持JSON

https://github.com/eclipse/che/tree/master/samples/sample-plugin-json

  • Archetype: Maven术语,用于生成代码模板;
  • Assembly: Code或Codenvy的新包。。。
    • Standard Assembly;
    • Plugin: 扩展打包,
    • Extension

Maven相关:Assembly 开发生命周期

  • 生成
  • 构建
  • 运行
  • 定制
  • 调试

猜你喜欢

转载自www.cnblogs.com/gibbonnet/p/9895306.html