Devfile
A file format for containerized development environments
@mariolet
👋
I am Mario
@mariolet
2 + 1 developer’s pains
☁️ Software defined cloud development environments
The Devfile Specification
DEMO TIME 🎉
A Kubernetes Operator
@mariolet
2 + 1 developer’s pains
Local build fails. My changes are not related. Should I push or not?
@mariolet
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
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
☁️ Software defined cloud development environments
Development environment setup should be repeatable through automation rather than manual and error-prone
@mariolet
☁️ 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
☁️ 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
2 + 1 developer’s pains
☁️ Software defined cloud development environments
The Devfile Specification
@mariolet
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
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
The Devfile Specification
registry.devfile.io
@mariolet
The Devfile Specification
@mariolet
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
2 + 1 developer’s pains
☁️ Software defined cloud development environments
The Devfile Specification
DEMO TIME 🎉
A Kubernetes Operator
@mariolet
DEMO TIME 🎉
@mariolet
Thank You 🙏🏻
devfile.io
@mariolet