1 of 18

Devfile

A file format for containerized development environments

@mariolet

2 of 18

👋

I am Mario

@mariolet

3 of 18

2 + 1 developer’s pains

☁️ Software defined cloud development environments

The Devfile Specification

DEMO TIME 🎉

A Kubernetes Operator

@mariolet

4 of 18

2 + 1 developer’s pains

Local build fails. My changes are not related. Should I push or not?

@mariolet

5 of 18

2 + 1 developer’s pains

Local build fails. My changes are not related. Should I push or not?

A new PR is here. I want to review it and I check out the code but…git conflicts. Should I approve without testing?

@mariolet

6 of 18

2 + 1 developer’s pains

Local build fails. My changes are not related. Should I push or not?

A new PR is here. I want to review it and I check out the code but…git conflicts. Should I approve without testing?

I ran out of RAM when I try to run an end to end test. Should I ask for a new laptop?

@mariolet

7 of 18

☁️ Software defined cloud development environments

Development environment setup should be repeatable through automation rather than manual and error-prone

@mariolet

8 of 18

☁️ Software defined cloud development environments

Switching context (branch or project) should have no side effects rather than affecting the state of the local setup

Development environment setup should be repeatable through automation rather than manual and error-prone

@mariolet

9 of 18

☁️ Software defined cloud development environments

Switching context (branch or project) should have no side effects rather than affecting the state of the local setup

Memory and CPU available for development should be scalable rather than statically provisioned

Development environment setup should be repeatable through automation rather than manual and error-prone

@mariolet

10 of 18

2 + 1 developer’s pains

☁️ Software defined cloud development environments

The Devfile Specification

@mariolet

11 of 18

The Devfile Specification

schemaVersion: 2.1.0

components:

- name: go-tooling

container:

image: golang:1.14-stretch

commands:

- id: build

exec:

component: go-tools

commandLine: go run main.go

events:

- poststart:

- build

.devfile.yaml

@mariolet

12 of 18

The Devfile Specification

Versioned API

Development tools, runtimes, services

Commands to build, test, run, debug

Development lifecycle

schemaVersion: 2.1.0

components:

- name: go-tooling

container:

image: golang:1.14-stretch

commands:

- id: build

exec:

component: go-tools

commandLine: go run main.go

events:

- poststart:

- build

.devfile.yaml

@mariolet

13 of 18

The Devfile Specification

registry.devfile.io

@mariolet

14 of 18

The Devfile Specification

@mariolet

15 of 18

A Kubernetes Operator

schemaVersion: 2.1.0

components:

- name: go-tooling

container:

image: golang:1.14-stretch

commands:

- id: build

exec:

component: go-tools

commandLine: go run main.go

events:

- poststart:

- build

.devfile.yaml

kind: DevWorkspace

apiVersion: workspace.devfile.io/v1alpha2

metadata:

name: go-hello-world

spec:

started: true

template:

projects:

- name: go-hello-world

git:

remotes:

origin: https:github.com/(...)

components:

- name: go-tooling

container:

image: golang:1.14-stretch

commands:

- id: build

exec:

component: go-tools

command: go run main.go

events:

- poststart:

- build

DevWorkspace Custom Resource

Services

Volumes

Secrets and

ConfigMaps

Pod

DevWorkspace

Operator

Workspace Objects

IDEs

@mariolet

16 of 18

2 + 1 developer’s pains

☁️ Software defined cloud development environments

The Devfile Specification

DEMO TIME 🎉

A Kubernetes Operator

@mariolet

17 of 18

DEMO TIME 🎉

@mariolet

18 of 18

Thank You 🙏🏻

devfile.io

@mariolet