Today Drone, a cloud native continuous integration (CI) and continuous delivery (CD) platform, is excited to announce its 1.0 release candidate. 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

Multi-Machine, Multi-Architecture, Multi-Cloud

With this release we are focused on providing 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

The configuration format also supports multi-document yaml configuration files, used to represent 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.

Jsonnet Configuration

We are excited to provide 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 ...

Revamped User Interface

We are incredibly excited to work with the team at PixelPoint to revamp the Drone user interface. The release candidate includes a shapshot of our latest front-end development efforts and we are eager to hear your feedback.

Try it Today

This is just a small preview of all the great features and improvements we are bringing to Drone 1.0. The Drone 1.0 release candidate is available here for testing, with the final release available in the near future. We are excited to share our work with the community and are eager to hear your feedback.

With 16,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.