美文网首页
Eclipse Che全方位

Eclipse Che全方位

作者: Gibbon | 来源:发表于2018-11-02 11:24 被阅读472次

    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 开发生命周期

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

    相关文章

    相关文章

      网友评论

          本文标题:Eclipse Che全方位

          本文链接:https://www.haomeiwen.com/subject/ydkxxqtx.html