GitPod与Eclipse/Che的使用差异点

簡言之

    • 開発をコンテナ 1 個で軽量に行いたいなら GitPod

 

    バックエンド DB など複数コンテナが要るなら Eclipse/Che。1

两者的差异为了那些不满意仅含有结论的人们的,我只需要一个选项。

不违反的地方两者都将Eclipse/Theia作为IDE或编辑器UI,并在容器虚拟化环境中运行。虽然GitPod与GitHub的兼容性更好,但通过使用Che与VSCode的插件共用,也可以在IDE内管理拉取请求等。

以前,人们经常提到 GitPod 不是开源软件,这被视为一个负面因素。但现在 GitPod 已经开源化了,所以在这方面也没有差异了。

也许可以这样说,也不能完全排除似乎无所谓的感觉。在思想上存在差异。而这体现得最明显的是容器的数量。

在启动设置文件中查看的差异让我们来看一下GitPod的启动配置文件。通常会在.gitpod.yml文件中进行定义。

# The Docker image to run your workspace in. Defaults to gitpod/workspace-full
image: <your-workspace-image>
# Command to start on workspace startup (optional)
tasks:
  - init: yarn install
    command: yarn build
# Ports to expose on workspace startup (optional)
ports:
  - port: 8000
    onOpen: open-preview

我从官方网页上拉过来了样品。

从这里可以看出,工作区只需要一个镜像,并且可以指定任务设置和开放的端口,非常简单。

好吧,让我们来看看Eclipse/Che的启动配置文件。通常会在devfile.yaml文件中定义。

我从GitHub上拉取了公开的内容。这是使用Node和yarn,并与GitPod类似的内容。因为很长,所以请跳过这段,直接看下一句话。

---
apiVersion: 1.0.0
metadata:
  generateName: nodejs-mongo-
projects:
  -
    name: nodejs-mongodb-sample
    source:
      type: git
      location: "https://github.com/che-samples/nodejs-mongodb-sample"
components:
  -
    type: chePlugin
    id: che-incubator/typescript/latest
    memoryLimit: 512Mi
  - 
    type: chePlugin
    id: ms-vscode/node-debug2/latest
  -
    type: dockerimage
    alias: nodejs
    image: quay.io/eclipse/che-nodejs10-ubi:nightly
    env:
      # The values below are used to set up the environment for running the application
      - name: SECRET
        value: 220fd770-c028-480d-8f95-f84353c7d55a 
      - name: NODE_ENV
        value: production
    memoryLimit: 512Mi
    endpoints:
      - name: 'nodejs'
        port: 8080
    mountSources: true
  -
    type: dockerimage
    alias: mongo
    image: docker.io/centos/mongodb-36-centos7
    memoryLimit: 512Mi
    env:
      - name: MONGODB_USER
        value: user
      - name: MONGODB_PASSWORD
        value: password
      - name: MONGODB_DATABASE
        value: guestbook
      - name: MONGODB_ADMIN_PASSWORD
        value: password
    volumes:
      - name: mongo-storage
        containerPath: /var/lib/mongodb/data 
    endpoints:
      - name: mongodb
        port: 27017
        attributes:
          discoverable: 'true'
          public: 'false'
commands:
  -
    name: run the application
    actions:
    - type: exec
      component: nodejs
      command: npm install && node --inspect=9229 app.js
      workdir: ${CHE_PROJECTS_ROOT}/nodejs-mongodb-sample
  -
    name: Debug remote node application
    actions:
    - type: vscode-launch
      referenceContent: |
        {
        "version": "0.2.0",
        "configurations": [
          {
            "type": "node",
            "name": "Debug (Attach) - Remote",
            "request": "attach",
            "port": 9229
          }]
        }

你会发现与GitPod相比,有以下方面的显著差异。

    • 使うプラグインが指定されています。(上記では che-incubator/typescript/latest と ms-vscode/node-debug2/latest )

 

    • 2 つの docker イメージが (nodejs と mongo) が指定されています。

 

    • マウントボリュームが指定されています。

 

    どの git リポジトリからソースコードを引っ張ってくるのかが明示されています。

由于许多组件是数组,因此可以推断出可以支持更多的插件和Docker镜像。

没有优劣之分,需要灵活运用。
単一の Git リポジトリで済み、外部のデータベース等を使わないケースでは、GitPod が向きます。
しかし、上記のような、イミュータブルな外部データベース(上記の例では MongoDB)を絡めた開発を行いたい場合には、 Eclipse/Che が向きます。

如果需要在多人开发等情况下实现开发环境的完全统一,包括插件在内,那么Eclipse/Che是合适的选择。
相反地,如果是个人开发,并且对于开发环境的可复制性并不是非常感兴趣的话,那么GitPod是合适的选择。

これは、Docker における、docker コマンドのみの身軽さを採るか、docker-compose を使った環境再現性を採るかに、似ている選択かもしれません。

总结这两者都是对 GitHub Codespaces 的强大开源替代品。(虽然 GitHub Codespaces 也很方便)

巧妙地使用,以减少开发环境设置的工作量。

其实,Eclipse/Che有一种非常调皮的技巧,可以将其它编辑器变成Theia。在本文中,我们假设Che也会乖乖地使用默认的Theia编辑器。 ↩

实际上可以做到。 ↩

bannerAds