Announcing Drone 1.0
Today Drone, a cloud native continuous integration (CI) and continuous delivery (CD) platform, is excited to announce its 1.0 release. It has been nearly 5 years since the first commit was pushed to GitHub in 2014. This much anticipated release of Drone has been a labor of love, and brings the most advanced container-native offering to market. Drone can scale from startup to enterprise, across multiple clouds, operating systems and architectures.
With each release of Drone we get closer to CI/CD perfection. Drone was already the most advanced cloud native CI/CD player out there but today they are now far and away the best offering available. Thomas Boerger, Senior DevOps Engineer at ownCloud
What is Drone?
If you are learning about Drone for the first time …
Drone is a modern continuous integration system built with a containers-first architecture. Pipelines are configured using a special YAML file that you check-in to your git repository. The syntax is designed to be easy to read and expressive so that anyone using the repository can understand the continuous delivery process.
---
kind: pipeline
name: default
steps:
- name: backend
image: golang
commands:
- go build
- go test
- name: frontend
image: node
commands:
- npm install
- npm test
Drone executes build, test and deployment commands against your code inside isolated containers. The major benefit of containerized testing environments is the portability of your testing infrastructure. With containers, Drone can automatically download, install and create your testing environment without having to either manually set up and maintain infrastructure or sacrifice environmental fidelity.
Updated Branding and User Interface
Drone 1.0 introduces a new user experience and branding courtesy of the team at PixelPoint. This is the first phase in our improved user interface enhancements. We will continue to iterate on the design and rollout new features and improvements over the coming weeks and months.
Multi-Machine, Multi-Architecture, Multi-Cloud
Drone 1.0 introduces support for multiple operating systems and architectures, including Linux amd64, Linux arm, Linux arm64 and Windows server. The YAML configuration file has been revamped to support multiple platforms:
---
kind: pipeline
platform:
arch: arm
os: linux
steps:
- name: build
image: golang
commands:
- go build
- go test
Drone also supports multi-document YAML files, used to model complex, multi-machine workflows with fan-in and fan-out capabilities.
---
kind: pipeline
name: backend
platform:
arch: arm
os: linux
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: frontend
platform:
arch: amd64
os: linux
steps:
- name: build
image: node
commands:
- npm install
- npm test
depends_on:
- backend
Example multi-machine, multi-architecture pipeline. The first pipeline executes on linux arm and the second pipeline executes on amd64.
Faster Pipelines with Parallelization
Drone 1.0 introduces optional support for executing your pipeline as a directed acyclic graph using the depends_on
keyword. This can be used to run tasks in parallel, resulting in faster pipeline execution and better hardware utilization.
---
kind: pipeline
name: default
steps:
- name: backend
image: golang
commands:
- go build
- go test
- name: frontend
image: golang
commands:
- npm install
- npm test
- name: build
image: plugins/slack
settings:
channel: general
depends_on:
- backend
- frontend
Example pipeline will fan-out and run the backend and frontend steps in parallel, and once complete, will fan-in and send a Slack notification.
Complex Configurations Simplified
Drone 1.0 introduces native support for Jsonnet configuration files. Jsonnet is a templating language that includes support for functions, variables, imports and more. Jsonnet can help teams organize and manage complex configurations.
In the below example we can compare a multi-architecture pipeline configured in Jsonnet (left) with a traditional YAML configuration (right).
local Pipeline(arch) = {
kind: "pipeline",
name: arch,
steps: [
{
name: "build",
image: "golang",
commands: [
"go build",
"go test",
]
}
]
};
[
Pipeline("amd64"),
Pipeline("arm64"),
Pipeline("arm"),
]
---
kind: pipeline
name: amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: arm64
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
name: arm
platform:
os: linux
arch: amd64
steps:
- name: build
image: golang
commands:
- go build
- go test
Flexible Secret Management
Drone 1.0 introduces a new category of plugins for sourcing secrets from external providers such as Vault, the AWS Secrets Manager and Kubernetes Secrets. Enterprises can create custom plugins to integrate with their existing security infrastructure and access controls for enhanced security and compliance.
---
kind: secret
name: slack_webhook
get:
path: secret/data/slack
name: webhook
---
kind: pipeline
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
- name: notify
image: plugins/slack
settings:
channel: general
webhook:
from_secret: slack_webhook
Example pipeline sources a Slack credentials from an external key value pair stored in Vault. The secret is requested at runtime and injected into the pipeline.
Cron Scheduling
Drone 1.0 introduces support for scheduling @hourly
, @dailys
, @weekly
and @monthly
jobs. Sometimes we need to execute pipelines not because we have changed anything, but because maybe our dependencies have changed, or we want to have an automatic build to get a nightly release out.
Cron scheduling can be managed from the repository settings screen in the user interface, or with the command line utility.
Conclusion
Drone 1.0 provides a lot of flexibility and power to help your organization automate software testing and delivery. You can get started with Drone in a matter of minutes by downloading our official Docker image and following our installation guide. If you need any help, or if you have any feedback or suggestions for improvement please let us know.
With 18,000 github stars and a robust community, Drone has been at the forefront of container-driven workflows. Drone is empowering development teams to deliver software at unprecedented rates. Follow us on Twitter @droneio or on Github for news and product updates.