Drone CI | Installation and Configuration Guide for Linux

Design showcasing engineers configuring Drone on Linux in an IOFLOOD datacenter to optimize continuous integration

Developing and deploying applications at IOFLOOD, often requires consistent version controlling processes. During development we discovered that Drone assists with version-controlled configurations and automating software delivery especially with its GitHub and GitLab integration. We have included our expertise in today’s article so that our customers can accelerate their development cycles on their scalable server hosts with Drone.

In this tutorial, we will guide you on how to install the Drone command on your Linux system. We will show you methods for both APT and YUM-based distributions, delve into compiling Drone from source, installing a specific version, and finally, how to use the Drone command and ensure it’s installed correctly.

So, let’s dive in and begin installing Drone on your Linux system!

TL;DR: How Do I Install Drone on Linux?

Install Drone on Linux by using Docker and Docker Compose. Clone the Drone repository from GitHub using git clone https://github.com/drone/drone.git. Navigate to the cloned directory and run docker-compose up -d to start Drone. Access Drone web interface via your web browser at http://localhost, and configure it further as needed.

For example:

wget https://github.com/drone/drone-cli/releases/download/v1.2.0/drone_linux_amd64.tar.gz -O drone.tar.gz && tar -xvzf drone.tar.gz

This command downloads the Drone server binary from the official GitHub repository and extracts it. However, this is just a basic way to install Drone on Linux. There’s much more to learn about installing and using Drone. Continue reading for more detailed information and advanced usage scenarios.

The Basics of Installing Drone

Drone is a Continuous Delivery system built on container technology. It uses a simple YAML configuration file to define and execute Pipelines inside Docker containers. The core functionality of Drone is defined in a single binary, which you can install as a service on your host machine.

Installing Drone with APT

For Debian-based distributions like Ubuntu, you can use the Advanced Packaging Tool (APT) to install Drone. Here’s how you can do it:

sudo apt-get update
sudo apt-get install drone

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# drone is already the newest version (0.8.6-1).
# 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

This will update your package lists and then install Drone. If Drone is already installed, it will output a message saying Drone is already the newest version.

Installing Drone with YUM

For RPM-based distributions like CentOS or Fedora, you can use the Yellowdog Updater, Modified (YUM) to install Drone. Here’s how:

sudo yum update
sudo yum install drone

# Output:
# Loaded plugins: fastestmirror
# Loading mirror speeds from cached hostfile
# Package drone-0.8.6-1.el7.x86_64 already installed and latest version
# Nothing to do

This will update your package lists and then install Drone. If Drone is already installed, it will output a message saying Drone is already installed and is the latest version.

Installing Drone from Source Code

For those who want more control over the installation process, you can install Drone from source code. This requires Git and Go to be installed on your system. Here’s how you can do it:

git clone https://github.com/drone/drone-cli.git
cd drone-cli
go install
go build

This will clone the Drone repository, navigate into the directory, compile, and build the application. You can then run Drone by typing ./drone-cli in the terminal.

Installing Different Versions of Drone

Different versions of Drone can have different features, bug fixes, or compatibility with different systems. Therefore, it’s essential to know how to install specific versions of Drone.

Installing Specific Versions from Source

To install a specific version from source, you need to checkout to the specific version tag after cloning the repository. Here’s how:

git clone https://github.com/drone/drone-cli.git
cd drone-cli
git checkout v1.2.0
go install
go build

This will install Drone version 1.2.0 on your system.

Installing Specific Versions with Package Managers

Using APT

For Debian-based distributions, you can specify the version of Drone to install with APT. Here’s how:

sudo apt-get install drone=1.2.0

This will install Drone version 1.2.0 on your system.

Using YUM

For RPM-based distributions, you can specify the version of Drone to install with YUM. Here’s how:

sudo yum install drone-1.2.0

This will install Drone version 1.2.0 on your system.

Version Comparison

Here’s a comparison of some key features and compatibilities of different Drone versions:

VersionKey FeaturesCompatibility
1.0.0Basic featuresOlder systems
1.2.0Improved performance, bug fixesModern systems
1.3.0New features, performance improvementsModern systems

Using Drone and Verifying Installation

How to Use Drone

Once installed, you can use Drone by typing drone in the terminal followed by the command you want to execute. Here’s an example:

drone info

This will display information about the installed Drone version and its configuration.

Verifying Drone Installation

To verify that Drone has been installed correctly, you can use the drone version command. Here’s how:

drone version

This will display the installed Drone version, which confirms that Drone has been installed correctly.

Installing Drone on Linux with Docker

Docker provides an alternative and convenient way to install Drone on Linux. This method is beneficial for those who want to avoid the complexities of manual installation and prefer a more isolated environment.

Docker Installation

Before installing Drone with Docker, you need to ensure Docker is installed on your system. Here’s how you can do it:

sudo apt-get install docker.io

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# docker.io is already the newest version (20.10.2-0ubuntu1~20.04.2).
# 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

This command will install Docker on your Linux system. If Docker is already installed, it will output a message saying Docker is already the newest version.

Drone Installation with Docker

Once Docker is installed, you can install Drone using Docker. Here’s how:

docker pull drone/drone:1

# Output:
# 1: Pulling from drone/drone
# Digest: sha256:2a51bb06a5a2f7a8e8769b812b342a4725d7190a444f2e7c36b3bb0749a51a37
# Status: Image is up to date for drone/drone:1
# docker.io/drone/drone:1

This command will pull the Drone image from the Docker repository and install it on your system.

Running Drone with Docker

After installation, you can run Drone using Docker. Here’s how:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -e DRONE_GITHUB_SERVER=https://github.com -e DRONE_GITHUB_CLIENT_ID=... -e DRONE_GITHUB_CLIENT_SECRET=... -p 8000:80 drone/drone:1

This command will run the Drone service in the background, with the appropriate environment variables and port mapping.

Advantages and Disadvantages

Here are some advantages and disadvantages of using Docker to install Drone:

Advantages

  • Isolated environment: Docker provides an isolated environment for Drone, which can prevent potential conflicts with other software on your system.
  • Easy to update: Updating Drone is as simple as pulling the new image from the Docker repository.

Disadvantages

  • Requires Docker: This method requires Docker to be installed on your system, which might not be suitable for systems with limited resources.
  • Not as flexible: Docker can limit the flexibility of Drone, as it’s running inside a container and not directly on the host system.

Recommendations

If you’re an experienced user who prefers an isolated environment and easy updates, using Docker to install Drone can be a good choice. However, if you’re a beginner or have a system with limited resources, the traditional installation methods might be more suitable.

Troubleshooting Drone Issues

Like any software installation, installing Drone on Linux can sometimes run into issues. Here, we’ll go over some common problems and their solutions.

Issue: Missing Dependencies

While installing Drone, you may encounter errors due to missing dependencies. For example, you might see an error like this:

sudo apt-get install drone

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# E: Unable to locate package drone

This means the package manager couldn’t find the Drone package in its repositories. You can resolve this by updating your package lists with sudo apt-get update or sudo yum update.

Issue: Permission Denied

While running Drone, you may encounter permission denied errors. For example, you might see an error like this:

drone info

# Output:
# bash: /usr/local/bin/drone: Permission denied

This means you don’t have the necessary permissions to execute the Drone command. You can resolve this by modifying the permissions with sudo chmod +x /usr/local/bin/drone.

Issue: Command Not Found

While trying to use Drone, you may encounter command not found errors. For example, you might see an error like this:

drone info

# Output:
# bash: drone: command not found

This means the Drone command is not in your PATH. You can resolve this by adding the Drone binary directory to your PATH with export PATH=$PATH:/path/to/drone.

Important Considerations

When installing Drone on Linux, keep these considerations in mind:

  • System Requirements: Ensure your system meets the requirements for Drone. Check the official Drone documentation for the most accurate information.
  • Package Manager: Use the correct package manager for your distribution. Debian-based distributions use APT, while RPM-based distributions use YUM.
  • Version Compatibility: Different versions of Drone may have different features and compatibility. Always check the version you’re installing to make sure it’s compatible with your system and meets your needs.

What is Continuous Delivery & Drone

Drone is a self-service Continuous Delivery platform that helps to automate software development and delivery processes. But what does this mean, and why is it important?

Continuous Delivery Explained

Continuous Delivery (CD) is a software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon Continuous Integration by deploying all code changes to a testing environment and/or a production environment after the build stage.

echo 'This is your code.' > code.txt
echo 'This is your code on Continuous Delivery.' > code-on-cd.txt
diff -u code.txt code-on-cd.txt

# Output:
# --- code.txt
# +++ code-on-cd.txt
# @@ -1 +1 @@
# -This is your code.
# +This is your code on Continuous Delivery.

The above example demonstrates the concept of Continuous Delivery. Your code is continuously updated, tested, and prepared for deployment, just like how the text file code-on-cd.txt is continuously updated from code.txt.

The Importance of Drone in Continuous Delivery

In the realm of Continuous Delivery, Drone plays a crucial role. It provides a self-service platform that integrates with your source code management system, automatically triggering the build, test, and deployment processes whenever code is pushed to the repository.

echo 'Push code changes.' > push-code.txt
echo 'Trigger Drone.' > trigger-drone.txt
echo 'Build, test, and deploy.' > build-test-deploy.txt
cat push-code.txt trigger-drone.txt build-test-deploy.txt

# Output:
# Push code changes.
# Trigger Drone.
# Build, test, and deploy.

The above example illustrates the workflow of Drone in Continuous Delivery. When you push code changes, Drone is triggered and starts the build, test, and deployment processes.

Benefits of Using Drone

Drone provides several benefits in the software delivery process, including:

  • Automation: Drone automates the build, test, and deployment processes, reducing the risk of human errors and increasing efficiency.
  • Self-Service: Drone provides a self-service platform where developers can define and manage their build pipelines.
  • Integration: Drone integrates with popular source code management systems like GitHub, GitLab, and Bitbucket.
  • Scalability: Drone can scale to support large projects and teams.

In conclusion, Drone is an essential tool for implementing Continuous Delivery, providing automation, self-service, integration, and scalability in the software delivery process.

Larger Projects and Drone Usage

Drone isn’t just limited to basic installations or simple scripts. Its utility extends far beyond, making it a valuable tool in larger scripts or projects. Drone’s capabilities can be leveraged for more advanced use-cases and workflows.

Integrating Drone in DevOps Pipelines

Drone can be integrated into a comprehensive DevOps pipeline, automating the build, test, and deployment processes. It can work in tandem with other tools like Docker, Kubernetes, and Helm to create a robust, automated pipeline.

echo 'Deploying with Drone in a DevOps pipeline.' > devops.txt
cat devops.txt

# Output:
# Deploying with Drone in a DevOps pipeline.

The above example represents how Drone can be part of a larger DevOps pipeline, automating the deployment process.

Drone in Microservices Architecture

In a microservices architecture, Drone can be used to automate the delivery of each service independently. This allows for faster, more reliable deployments and ensures each service is tested and deployed in isolation.

echo 'Deploying microservices with Drone.' > microservices.txt
cat microservices.txt

# Output:
# Deploying microservices with Drone.

The above example demonstrates the role of Drone in deploying microservices, providing isolated, independent deployments for each service.

Further Resources for Mastering Drone

For those who wish to delve deeper into Drone and its capabilities, here are some additional resources:

  • Drone Official Documentation: This is the official documentation for Drone, providing comprehensive information on its features, usage, and best practices.

  • Drone on GitHub: This is the official GitHub repository for Drone, where you can find its source code, contribute to the project, or report issues.

  • Continuous Delivery with Drone: This tutorial on DigitalOcean provides a step-by-step guide on setting up a Continuous Delivery pipeline with Drone.

Wrap Up: Setting Up Drone on Linux

In this comprehensive guide, we’ve navigated through the process of installing Drone on Linux, a crucial tool for automating your software delivery process.

We started with the basics, demonstrating how to install Drone on Linux using package managers like APT and YUM. We then delved into more advanced territory, discussing how to install Drone from source code and how to install specific versions of Drone. We also tackled common issues that you might encounter during the installation process and provided solutions to overcome these challenges.

We explored alternative approaches to installing Drone, specifically using Docker, and weighed the advantages and disadvantages of this method. Throughout our journey, we’ve provided code examples to illustrate each step and make the process easier to follow.

Here’s a quick comparison of the methods we’ve discussed:

MethodComplexityFlexibilitySuitability
Package Managers (APT, YUM)LowModerateBeginners
From Source CodeHighHighIntermediate Users
DockerModerateLowAdvanced Users

Whether you’re a beginner just starting out with Drone, or an experienced user looking for more advanced installation methods, we hope this guide has equipped you with the knowledge to successfully install Drone on Linux.

Installing and mastering Drone paves the way for efficient and automated software delivery. Now, you’re well prepared to harness the power of Drone in your continuous delivery pipeline. Happy coding!