Drone adds support for GitLab Pipelines

Today we’re expanding Drone’s support for portability across different CI/CD environments by announcing compatibility with the GitLab CI configuration format. This means you can use Drone to directly execute your .gitlab-ci.yml configuration file.

Drone is a container-native CI/CD platform that empowers developers, and expands their choice of tools by providing portability across multiple operating systems and architectures. Today’s expanded compatibility follows-up on our recently announced support for Bitbucket Pipelines and reiterates our commitment to a portable CI/CD environment.

Getting Started

Drone is able to convert a standard GitLab configuration file to the Drone configuration file format. Below is an example CI configuration for a Ruby project that installs its dependencies and executes its unit tests.

image: ruby:2.2

services:
  - postgres:9.3

before_script:
  - bundle install

test:
  script:
  - bundle exec rake spec

We can use the Drone command line utility to convert the GitLab CI configuration to a native Drone Pipeline configuration.

$ drone convert .gitlab-ci.yml

---
kind: pipeline
name: test

platform:
  os: linux
  arch: amd64

steps:
- name: test
  image: ruby:2.2
  commands:
  - bundle install
  - bundle exec rake spec

services:
- name: postgres-9-3
  image: postgres:9.3

...

In the above example we manually converted the GitLab CI using the Drone command line tools. Drone is also capable of automatic conversion. You can point the Drone server to your GitLab CI configuration file for automatic runtime conversion:

change the configuration path

Compatibility Overview

Our goal is to conform as closely as possible to the GitLab CI implementation as outlined in the specification. There are, however, some underlying architectural differences that prevent full conformance when converting a GitLab CI configuration to a Drone Pipeline.

GitLab steps have ephemeral, isolated filesystems. If a step generates files that need to be shared with subsequent steps it must be explicitly configured (example below). Drone, on the other hand, provides a shared filesystem for all steps in the Pipeline and does not require explicit artifact caching and restoring.

Example GitLab cache syntax:

cache:
  untracked: true
  key: "$CI_BUILD_REF_NAME"
  paths:
    - node_modules/

stages:
  - setup
  - test

setup:
  stage: setup
  script:
    - npm install

test:
  stage: test
  script:
    - npm test

Example Drone syntax, no caching necessary:

---
kind: pipeline
name: setup

platform:
  os: linux
  arch: amd64

steps:
# this step installs node_modes in the root
# directory of your git repository. This directory
# is a mounted volume.
- name: setup
  commands:
  - npm install

# because the root of your repository is a mounted
# volume, this still will have access to the node_modules
# folder created in the previous step.
- name: test
  commands:
  - npm test

depends_on:
- setup

...

Commitment to Portability

We released multi-cloud, multi-architecture and multi-machine capabilities with the Drone 1.0 release candidate. Drone will continue to add capabilities that make code simple and easy to deploy across teams, no matter your git management tool, cloud or operating system. Stay tuned for additional support announcements in the coming weeks.


Drone is modern CI/CD. Container-native and available via open source and as an enterprise on-prem edition. Try it today. Follow us on Twitter @droneio or on Github. Or sign up for our email newsletter to save up to date on all Drone news.