在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

相關文章
相關標籤/搜索