an intro to eclipse che · 2020-01-09 · unit test quality control package & archiving...

16
An Intro to Eclipse Che June 2015 Tyler Jewell, Eclipse Che Project Lead @TylerJewell

Upload: others

Post on 17-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

An Intro to Eclipse CheJune 2015

Tyler Jewell, Eclipse Che Project Lead@TylerJewell

Page 2: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

The Application TrinityDeliver AppsDevelop Apps

issue mgmt

Host Apps

source code repo

agile ide

workspace

check out & build code

unit test quality control

package & archiving

integration testing

deploy to test environment

deploy to pre-production

acceptance testing

deploy to production

continuous integration

testing frameworks

artifact repository

packaging & build tools

release mgmt

code quality

analysis

test

pre-production

production

100 firms including Atlassian, JetBrains, Puppet, Chef, Ansible, ZeroTurnaround, IBM, Electric Cloud,

Coverity, Sonatype, JFrog, and so on...

Page 3: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Responsible For

Your Targets

Toolchain Integration | Resource Management | Security | IsolationLocal Edit / Build / Run Cycle | Packaging and Dependencies | Reporting

Developer WorkspaceYour Editors

developer cycle

edit build

run

transition

commit deploy

sync ftp

configuration

importcreate

git svn

Your Toolchain

Code Repository | Asset Repository | CI / CD | Issue Management System | LDAP / Active Directory

APIsMiddlewareDatabases

PaaS

The Developer Workspace

Localhost is not cloneable, shareable, scalable or compliant.

Page 4: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Containers Shift Burdens Away From DevOpsContainersRepos Libraries NodesFolders & Files

how to maintain

versionable mapping?

Page 5: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Containers and Composition

Imagine a developer working on a 3-tier application using containers. The container configuration can change frequently.

Web Client

API Microservice

Local Database

Web Client

API Microservice

Shared, Central Database

Web Client

API Microservice

Database

Rapid Authoring Docker Compose is a step forward...Staged Data Networked

Page 6: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Reality: Workspace Configuration via WikiDjango and

PHP with Eclipse

Tomcat with IntelliJ

Compile and install

Ruby

Mozilla Webmaker

with Vagrant

Continuous delivery demands repeatability - but developer workspace configuration is individual & complex.

Page 7: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Eclipse Che is an SDK, hosted workspace, and cloud IDE.

Package Che extensions (you author) with custom machines into new assemblies.

Che can be used as a desktop workspace, embedded workspace, or hosted workspace.

Page 8: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Eclipse Che Extensibility

Che Kernel

Java Extension(you author)

deploysas

GWT Extension(you author)

compiles into

Che REST Services

Workspace Project Builder

+ many more...

loads

Cross-Browser JavaScript App

Codenvy IDE Wizard

Panels Editors

Che combines a kernel, developer REST services, machines and a JavaScript cloud IDE.

Developers customize Che by writing extensions at any tier, overriding any behavior.

Codenvy is a multi-tenant system that runs Eclipse Che extensions.

Browser

Desktop IDE CLI

Rich Clients

runs in

Servlet Runtime SDK

uses

Custom Clients(you author)

Custom Machines(you author)

invokes, registers, listens

Machines

Dockerdeploys as

Process

reuses

launches

Page 9: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Che Workspaces Distribute Actions

Machines Your SystemsYour Tools Microservices Nodes

Web IDE

CLI

Eclipse

IntelliJ

Sublime Text

Emacs

vi

Co

den

vy P

rovi

ded

Yo

u P

rovi

de

syntax

refactor

clone

build

package

run

debug

query

merge

compile

Middleware

APIs

Code Repo

Artifact Repo

CI / CD

Issue Mgmt

LDAP

Targets

To

ol C

hain

Databases

PaaS

Workflow

contribute

pull request

corporate

hack

Che Workspace

Page 10: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Eclipse Che Codenvy Platform Distribution

Plu

g-In

Plu

g-In

Plu

g-In

Plu

g-In

Plu

g-In

IDE + SDK

Elastic Docker Node Pool

Code

Developer Microservice Plug-Ins

Build Run Source Query

Source

External Integration Plug-Ins

CI PaaS Issue Identity

Languages

Eclipse CheEditors Projects

OperationsHA Tenancy Metering Security

API CLI Browser Mobile

Automation ManagementFactories Contrib Admin Analytics

Eclipse Che & Codenvy IP Relationship

Installation

update.codenvy.comNotices Accounts Binaries Installers

OfferingsSaaS @ On-Prem @ Managed @

codenvy.com Your Datacenter Any Datacenter

1-Node n-Node CentOS 6 CentOS 7

Cloud MarketplacesIBM AWS Google ...

Kernel

java javascript c++

maven gradle 55+

Your Extensions

Che Extensions

project builder

REST APIrunner

auth factory analytics

Page 11: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

The Che Glossary

Page 12: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Che 4.0: Project - Machine - Env Abstraction

Object Purpose Composition Manages For User Creates In

Account Object contains the information about billing, subscription, and organizations owned. An administrative unit, used by managers and admins to bucket groups of users and resources together, with different allocation polices & controls.

has 1 .. n account/ownerhas 0 .. n account/memberhas 0 .. n account/manager

NameBillingOwnerMembersResource limits (gbh) via subsResource limits (ram) via subs

Codenvy System UD

Workspace A thin layer that binds the set of projects and their source code to a single working machine aggregate.

has 1 .. 1 dev machinehas 0 .. n projectshas 0 .. n environmentshas 1 .. n ws/adminhas 0 .. n ws/memberhas 0 .. n ws/stakeholder

Dev machine recipeDev machine instance per user

Codenvy / Che UDIDE

Project A single project, mapped to a single source repository, that has type. A module is a project that is a child of another project.

has 1 .. 1 typehas 1 .. 1 source repositoryhas 0 .. n ACLshas 0 .. n modules

Source repositoryPublic / private

Codenvy / Che UDIDE

Environment An abstraction that contains a networked group of machines used to provide runtime capabilities for a set of projects.

has 1 .. 1 recipehas 1 .. n machineshas 1 .. 1 networkhas 0 .. n proj-machine-map

Run machinesRun networksLinkage between project & machine

Codenvy / Che IDE

Page 13: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Workspace Behavior in 4.0

A development machine is a special purpose machine that is bound to a Workspace for the puposes of development. It can hold a content assist system, the source code, and also receive commands. All commands - by default - are routed to the dev machine, including run commands. Dev machines are managed by Codenvy. Codenvy will start / stop / activate / suspend / snapshot against our own policy based upon when a user open / closes a workspace.

Separately, a developer will be able to define an Environment. An environment is a runtime environment that maps a set of projects in a single workspace against a set of machines. The environment has a recipe for how the machines should boot, how the source code / artifacts are placed into the environment, and the network connections in between them. Essentially, it’s a type of Docker Compose, but belonging to the Workspace. Users of the Workspace will have control over starting / stopping an environment. The environment will have runtime isolation from the dev machine.

All development machines start with ½ GB RAM. Workspace admins can modify the RAM and Dockerfile for the development machine. Workspace members will be able to edit and run environments. Any changes to a development machine configuration will restart the development machine with loss of any state.

Page 14: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Getting Started with Che

Source: github.com/codenvy/che

Developer Mailing List: [email protected]

Planning Meetings: wiki.eclipse.org/che

IRC: #eclipseche (routes to slack)

Note: Currently 1000 issues open on Che, hosted at Codenvy’s private Jira. We are working to export into bugzilla.

Page 15: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Che Extension

@Singleton

public class AngularJSProjectType extends ProjectType {

public AngularJSProjectType() {

super("AngularJS", "AngularJS Project", true, false);

setDefaultRunner("system:/javascript/webapp/grunt");

addRunnerCategories(Arrays.asList(RunnerCategory.JAVASCRIPT.toString()));

}

}

@Singleton

@Extension(title = "AngularJS")

public class AngularJsExtension extends JsExtension {

@Inject

public AngularJsExtension(IconRegistry iconRegistry, AngularJSResources resources) {

super(Const.ANGULAR_JS_ID, iconRegistry, resources);

}

}

plugin-angularjs/core/client/src/main/java/com/codenvy/plugin/angularjs/core/client/

plugin-angularjs/core/server/src/main/java/com/codenvy/plugin/angularjs/core/server/project/type

Page 16: An Intro to Eclipse Che · 2020-01-09 · unit test quality control package & archiving integration testing deploy to test environment deploy to pre-production acceptance testing

Eclipse Chewww.eclipse.org/che

Try it live: codenvy.com