SlideShare a Scribd company logo
DRONE CI
THOMAS BOERGER
Slides are partially taken from @bradrydzewski
WHO IS THOMAS BOERGER?
▸ Software Engineer
▸ Working for SUSE LINUX GmbH
▸ Proud to be a WEBHIPPIE!
▸ Plugin Maintainer of DroneCI
▸ Passionate Ruby developer…
▸ …also passionate about Go!
Drone CI
WHAT DO I WANT TO DO?
▸ I want to run test suites
▸ I want to test code against multiple languages
▸ I want to test code against multiple language versions
▸ I want to test code against multiple databases
▸ I want to test code against multiple database versions
▸ I want to deploy automatically to my hosting provider
DRONE CI FTW!
WHAT DO I WANT TO DO?
▸ I want to customize Drone
▸ I want to publish to [insert service name here]
▸ I want to deploy to [insert service name here]
▸ I want to blame my co-worker every time he breaks a build
▸ I want small Docker images, no giant monolithic images
▸ I need Drone to do something that it doesn’t currently do
EXTERNAL PLUGINS!
BUT THERE ARE PROBLEMS…
▸ Plugins run untrusted code
▸ Plugins are not sandboxed
▸ Plugins need to be installed (by an admin)
▸ Plugins need to be updated (by an admin)
▸ Plugins need to be written in Java (at least for Jenkins)
▸ Plugins should be safer, easier to create and publish!
DOCKER PLUGINS!
PLUGINS
build:

image: golang:1.5

commands:

- go test



notify:

slack:

webhook: https://slack.com/hooks/…

channel: dev
docker pull plugins/slack
PLUGINS
docker run -i plugins/slack << EOF
{
“repo”: {
…
},
“build”: {
“number”: 1,
“status: “success”,
…
}
“args”: {
“webhook”: “https://slack.com…”,
“channel”: “dev”
}
}
EOF
plugins receive structured build
details over stdin
PLUGINS
▸ Every plugin is a single Docker container
▸ Mostly written in Go
▸ Other languages are also welcome
▸ Currently ~63 plugins available
▸ Single responsibility
▸ Automatic updates
BUILDS?!
BUILDS
▸ Configuration grouped as…
▸ Build
▸ Compose
▸ Publish
▸ Deploy
▸ Notify
BUILDS
Agent Git Clone Container
Env Prep Container
Go Container
Redis Container
Slack Container
EXAMPLE 1
build:

image: golang:1.5

commands:

- go test
notify:

slack:

webhook: https://slack.com/hooks/…

channel: dev
deploy:

anynines:

username: octocat@github.com

password: password

organization: octocat_github_com

space: production

when:

branch: master
publish:

s3:

acl: public-read

region: us-east-1

bucket: my-bucket-name

access_key: 970d28f4dd477bc184fbd10b376de753

secret_key: 9c5785d3ece6a9cdefa42eb99b58986f9095ff1c

source: files/to/archive

target: /target/location
EXAMPLE 2
compose:

database:

image: postgres

environment:

- POSTGRES_USER=postgres

- POSTGRES_PASSWORD=mysecretpassword
build:

my_tests:

image: golang:1.5

commands:

- sleep 15

- go test

my_builds:

image: golang:1.5

commands:

- go build
EXAMPLE 3
build:

image: golang:$$GO_VERSION

commands:

- go get

- go build

- go test



compose:

redis:

image: redis:$$REDIS_VERSION
matrix:

GO_VERSION:

- 1.5

- 1.4

REDIS_VERSION:

- 2.6

- 2.8

- 3.0
TOOLS!
TOOLS
▸ Libraries and tools, a growing ecosystem
▸ drone-cli for local testing
▸ drone-go for Go based plugins
▸ drone-node fo JS based plugins
▸ drone-python for Python based plugins
▸ drone-ruby for Ruby based plugins (soon)
RESULT?
WHY DRONE CI?
▸ Single binary, written in Go
▸ Lightweight, low memory footprint
▸ Builds run in Docker containers
▸ Build images are downloaded automatically
▸ Pretty flexible plugin system
▸ Simple YAML configuration
▸ Supports any language that can run in Docker
▸ Supports GitHub, Bitbucket, Gitlab and Gogs, more will follow…
QUESTIONS?
THANK YOU!

More Related Content

PDF
Drone Continuous Integration
PDF
Drone presentation
PDF
Improve your Java Environment with Docker
PPTX
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
PPTX
Building a Scalable CI Platform using Docker, Drone and Rancher
PDF
Testing as a container
PDF
Docker for Integration Testing
PDF
GDGSCL - Docker a jeho provoz v Heroku a AWS
Drone Continuous Integration
Drone presentation
Improve your Java Environment with Docker
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
Building a Scalable CI Platform using Docker, Drone and Rancher
Testing as a container
Docker for Integration Testing
GDGSCL - Docker a jeho provoz v Heroku a AWS

What's hot (20)

PDF
Drone CI - Container native continuous Integration / Delivery
PDF
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
PPTX
DevOps and Continuous Delivery reference architectures for Docker
PDF
Git and GitHub for Documentation
PDF
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
PDF
Zalenium - SeleniumConf Austin 2017
PDF
Automate App Container Delivery with CI/CD and DevOps
PDF
Testing with Docker
PDF
Joomla Continuous Delivery with Docker
PDF
Introduction to Docker
PDF
Docker Best Practices Workshop
PDF
JUC Europe 2015: Scaling Your Jenkins Master with Docker
PDF
Dockercon 2018 EU Updates
PDF
Brujug Jenkins pipeline scalability
PDF
Intro 2 docker
PPTX
Introduction to jenkins
PPTX
Javaone 2014 - Git & Docker with Jenkins
PDF
Dockercon2015 bamboo
PDF
Shipping NodeJS with Docker and CoreOS
PDF
Getting out of the Job Jungle with Jenkins
Drone CI - Container native continuous Integration / Delivery
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DevOps and Continuous Delivery reference architectures for Docker
Git and GitHub for Documentation
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Zalenium - SeleniumConf Austin 2017
Automate App Container Delivery with CI/CD and DevOps
Testing with Docker
Joomla Continuous Delivery with Docker
Introduction to Docker
Docker Best Practices Workshop
JUC Europe 2015: Scaling Your Jenkins Master with Docker
Dockercon 2018 EU Updates
Brujug Jenkins pipeline scalability
Intro 2 docker
Introduction to jenkins
Javaone 2014 - Git & Docker with Jenkins
Dockercon2015 bamboo
Shipping NodeJS with Docker and CoreOS
Getting out of the Job Jungle with Jenkins
Ad

Similar to Drone CI (20)

PDF
HOW TO DRONE.IO IN CI/CD WORLD
PPTX
Docker for Development
PPTX
drone continuous Integration
PDF
Ci/CD platform with drone and gogs
PDF
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
PDF
A Tail of Two Containers: How docker made ci great again
PDF
LXC to Docker Via Continuous Delivery
PDF
Efficient Parallel Testing with Docker
PDF
Docker slides
PDF
Drone 1.0 Feature
PDF
Efficient Parallel Testing with Docker by Laura Frank
PDF
KubeCI - Cloud Native Continuous Delivery for Kubernetes
PDF
TDC2018SP | Trilha Containers - CI/CD com Docker e Drone
PDF
Docker From Scratch
PDF
[@NaukriEngineering] Docker 101
PDF
Docker 0.11 at MaxCDN meetup in Los Angeles
PPTX
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
PPTX
Mcroservices with docker kubernetes, goang and grpc, overview
PDF
Docker in real life
PDF
Docker at Djangocon 2013 | Talk by Ken Cochrane
HOW TO DRONE.IO IN CI/CD WORLD
Docker for Development
drone continuous Integration
Ci/CD platform with drone and gogs
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
A Tail of Two Containers: How docker made ci great again
LXC to Docker Via Continuous Delivery
Efficient Parallel Testing with Docker
Docker slides
Drone 1.0 Feature
Efficient Parallel Testing with Docker by Laura Frank
KubeCI - Cloud Native Continuous Delivery for Kubernetes
TDC2018SP | Trilha Containers - CI/CD com Docker e Drone
Docker From Scratch
[@NaukriEngineering] Docker 101
Docker 0.11 at MaxCDN meetup in Los Angeles
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
Mcroservices with docker kubernetes, goang and grpc, overview
Docker in real life
Docker at Djangocon 2013 | Talk by Ken Cochrane
Ad

Recently uploaded (20)

PPTX
SAP Ariba Sourcing PPT for learning material
PPTX
Introuction about WHO-FIC in ICD-10.pptx
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
PPTX
QR Codes Qr codecodecodecodecocodedecodecode
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PPTX
innovation process that make everything different.pptx
PPTX
artificial intelligence overview of it and more
PPTX
Digital Literacy And Online Safety on internet
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PPT
tcp ip networks nd ip layering assotred slides
PPTX
Introduction to Information and Communication Technology
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PDF
Paper PDF World Game (s) Great Redesign.pdf
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
DOCX
Unit-3 cyber security network security of internet system
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
SAP Ariba Sourcing PPT for learning material
Introuction about WHO-FIC in ICD-10.pptx
Module 1 - Cyber Law and Ethics 101.pptx
Decoding a Decade: 10 Years of Applied CTI Discipline
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
QR Codes Qr codecodecodecodecocodedecodecode
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
innovation process that make everything different.pptx
artificial intelligence overview of it and more
Digital Literacy And Online Safety on internet
PptxGenJS_Demo_Chart_20250317130215833.pptx
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
tcp ip networks nd ip layering assotred slides
Introduction to Information and Communication Technology
introduction about ICD -10 & ICD-11 ppt.pptx
Cloud-Scale Log Monitoring _ Datadog.pdf
Paper PDF World Game (s) Great Redesign.pdf
Design_with_Watersergyerge45hrbgre4top (1).ppt
Unit-3 cyber security network security of internet system
An introduction to the IFRS (ISSB) Stndards.pdf

Drone CI

  • 1. DRONE CI THOMAS BOERGER Slides are partially taken from @bradrydzewski
  • 2. WHO IS THOMAS BOERGER? ▸ Software Engineer ▸ Working for SUSE LINUX GmbH ▸ Proud to be a WEBHIPPIE! ▸ Plugin Maintainer of DroneCI ▸ Passionate Ruby developer… ▸ …also passionate about Go!
  • 4. WHAT DO I WANT TO DO? ▸ I want to run test suites ▸ I want to test code against multiple languages ▸ I want to test code against multiple language versions ▸ I want to test code against multiple databases ▸ I want to test code against multiple database versions ▸ I want to deploy automatically to my hosting provider
  • 6. WHAT DO I WANT TO DO? ▸ I want to customize Drone ▸ I want to publish to [insert service name here] ▸ I want to deploy to [insert service name here] ▸ I want to blame my co-worker every time he breaks a build ▸ I want small Docker images, no giant monolithic images ▸ I need Drone to do something that it doesn’t currently do
  • 8. BUT THERE ARE PROBLEMS… ▸ Plugins run untrusted code ▸ Plugins are not sandboxed ▸ Plugins need to be installed (by an admin) ▸ Plugins need to be updated (by an admin) ▸ Plugins need to be written in Java (at least for Jenkins) ▸ Plugins should be safer, easier to create and publish!
  • 10. PLUGINS build:
 image: golang:1.5
 commands:
 - go test
 
 notify:
 slack:
 webhook: https://slack.com/hooks/…
 channel: dev docker pull plugins/slack
  • 11. PLUGINS docker run -i plugins/slack << EOF { “repo”: { … }, “build”: { “number”: 1, “status: “success”, … } “args”: { “webhook”: “https://slack.com…”, “channel”: “dev” } } EOF plugins receive structured build details over stdin
  • 12. PLUGINS ▸ Every plugin is a single Docker container ▸ Mostly written in Go ▸ Other languages are also welcome ▸ Currently ~63 plugins available ▸ Single responsibility ▸ Automatic updates
  • 14. BUILDS ▸ Configuration grouped as… ▸ Build ▸ Compose ▸ Publish ▸ Deploy ▸ Notify
  • 15. BUILDS Agent Git Clone Container Env Prep Container Go Container Redis Container Slack Container
  • 16. EXAMPLE 1 build:
 image: golang:1.5
 commands:
 - go test notify:
 slack:
 webhook: https://slack.com/hooks/…
 channel: dev deploy:
 anynines:
 username: octocat@github.com
 password: password
 organization: octocat_github_com
 space: production
 when:
 branch: master publish:
 s3:
 acl: public-read
 region: us-east-1
 bucket: my-bucket-name
 access_key: 970d28f4dd477bc184fbd10b376de753
 secret_key: 9c5785d3ece6a9cdefa42eb99b58986f9095ff1c
 source: files/to/archive
 target: /target/location
  • 17. EXAMPLE 2 compose:
 database:
 image: postgres
 environment:
 - POSTGRES_USER=postgres
 - POSTGRES_PASSWORD=mysecretpassword build:
 my_tests:
 image: golang:1.5
 commands:
 - sleep 15
 - go test
 my_builds:
 image: golang:1.5
 commands:
 - go build
  • 18. EXAMPLE 3 build:
 image: golang:$$GO_VERSION
 commands:
 - go get
 - go build
 - go test
 
 compose:
 redis:
 image: redis:$$REDIS_VERSION matrix:
 GO_VERSION:
 - 1.5
 - 1.4
 REDIS_VERSION:
 - 2.6
 - 2.8
 - 3.0
  • 20. TOOLS ▸ Libraries and tools, a growing ecosystem ▸ drone-cli for local testing ▸ drone-go for Go based plugins ▸ drone-node fo JS based plugins ▸ drone-python for Python based plugins ▸ drone-ruby for Ruby based plugins (soon)
  • 22. WHY DRONE CI? ▸ Single binary, written in Go ▸ Lightweight, low memory footprint ▸ Builds run in Docker containers ▸ Build images are downloaded automatically ▸ Pretty flexible plugin system ▸ Simple YAML configuration ▸ Supports any language that can run in Docker ▸ Supports GitHub, Bitbucket, Gitlab and Gogs, more will follow…