在che中增长EMF支持 - Day3:增长增长一个自定义的Workspace Stack

在上一篇中,咱们达成了安装Eclipse和定义自定义指令等。虽然这一切很好,但咱们但愿这个工做是可扩展的,也就是说能够和咱们的朋友或者同事分享这个环境。幸运的是,这个能够经过在che里面定义一个Stack来实现。Stack某种意义上像一个workspace的蓝图。若是你熟悉面向对象技术的话,stack能够比喻为一个java类,而一个类的实例被称为workspace。Che的Dashboard UI支持stack的定义。咱们不须要本身写代码来完成这个工做。技术上说,一个Che的stack基于一或多个Docker文件。若是咱们想提供一个实现装好Eclipse modeling Edition的stack,咱们须要提供一个实际包含这个stack的docker image。java

不管什么时候,若是你想建立本身的docker image做为Stack的话,最好是使用一个Che的image做为你的base。这样,你不须要维护一些如Java之类的先决条件。在咱们的例子中,咱们将使用Java stack的base image。这里是咱们使用的Docker文件,如你所见它很小。咱们加了一些注释,使其可让人理解。linux

FROM codenvy/ubuntu_jdk8
MAINTAINER Mathias Hansen mhansen@eclipsesource.com

USER root
# Install Eclipse Modeling Tools
RUN echo "Installing eclipse..."
cd /
wget -q -O - https://ftp.fau.de/eclipse/technology/epp/downloads/release/neon/1/eclipse-modeling-neon-1-linux-gtk-x86_64.tar.gz | tar zx

# Reset to the default user
USER user

在你写完这段dockerfile以后,你须要build它。使用以下指令:docker

docker build -t eclipsesource/emfneon_jdk8

最后,你能够将你的新image推送进注册表或者储存库,好比Docker Hub。如今咱们能够根据新的Docker镜像设置Che stack。经过Che的UI里面的按键添加新的stack。以下图编程

clipboard.png

如你所见,你能够给你的Stack命一个以后方便寻找的名字,定义你想启动的machine(好比default)以及要使用的docker镜像。除此以外,你能够添加命令(好比上一篇的Run EMF Code Generator)。最后,选择罗列Stack的目录。若是你滑到屏幕低端,你能够用json格式编辑你的Stack的配置。若是,你想将你的Stack的配置分享给好友的话,能够复制发送就好了。咱们EMF stack的Json文件以下,你能够复制进去试试看。json

{
  "name": "EMF",
  "description": "EMF Stack",
  "scope": "advanced",
  "tags": [
    "Java 1.8",
    "EMF"
  ],
  "components": [
    {
      "name": "Eclipse Modeling Edition",
      "version": "Neon.2"
    }
  ],
  "source": {
    "type": "image",
    "origin": "codenvy/ubuntu_jdk8"
  },
  "workspaceConfig": {
    "environments": {
      "EMF": {
        "machines": {
          "dev-machine": {
            "agents": [
              "org.eclipse.che.terminal",
              "org.eclipse.che.ws-agent",
              "org.eclipse.che.ssh"
            ],
            "servers": {},
            "attributes": {
              "memoryLimitBytes": "2147483648"
            }
          },
          "EMF": {
            "agents": [
              "org.eclipse.che.terminal",
              "org.eclipse.che.ssh"
            ],
            "servers": {},
            "attributes": {}
          }
        },
        "recipe": {
          "content": "services:\n dev-machine:\n  image: codenvy/ubuntu_jdk8\n EMF:\n  image: eclipsesource/emfneon_jdk8\n  mem_limit: 2147483648\n",
          "contentType": "application/x-yaml",
          "type": "compose"
        }
      }
    },
    "name": "default",
    "defaultEnv": "EMF",
    "description": null,
    "commands": [
      {
        "name": "Run EMF Code Generator",
        "type": "custom",
        "commandLine": "/eclipse/eclipse -noSplash -data ${current.project.path} -application org.eclipse.emf.codegen.ecore.Generator -model -edit ${current.project.path}/org.eclipse.emf.ecp.makeithappen.model/model/task.genmodel ",
        "attributes": {}
      }
    ]
  }
}

如今,咱们就能够和其余的编程者共享咱们的开发环境了。咱们的工具已经捆绑进了一个Che的工做空间。你惟一须要的就是一个json文件。ubuntu

将Tooling装进Che的workspace是很简单的,利用强大又轻巧的扩展机制。基本上,每个在Docker容器里面能够运行的工具均可以使用。经过这个咱们能够扩展Che而不须要任何代码。可是,这里咱们除了添加命令,尚未扩展过IDE。这将在下一篇中介绍。app

相关文章
相关标签/搜索