Recently, I’ve been looking into a new CI/CD solution for work. We want to move everything back in house, and the tools we’re currently using are feeling (and acting) a bit dated. One of the CI servers I’ve been hacking about on has been drone ci.

To make the experiment a little more interesting, I’ve started using drone as the CI/CD for my personal website. This should allow me to experiment with conditional flows as well as kick the tires on some of the various plugins.

I’m not going to cover installation here, as it’s fairly straightforward. However, I will be releasing an ansible playbook that will load up something you can easily experiment with.

Building the Site

Drone works in the same way a number of other repository based CI/CD systems work. You place a small file in the root of the repository (default: .drone.yml), and the drone server watches for changes. It uses this file to define the pipeline.

  • uses the hugo plugin
  • should be pretty simple to see what’s what
kind: pipeline
name: default

  - name: build-prod
    image: plugins/hugo
      hugo_version: 0.55
      pull: always
      validate: true


Deployment to AWS S3

kind: pipeline
name: default


  - name: deploy-prod
    image: plugins/s3-sync:1
      target: /
      source: public/**/*
      region: us-east-1
      cloudfront_distribution: <some id>
        from_secret: aws_access_key_id
        from_secret: aws_secret_access_key
        - master

Photo Credits

Photo by Samuel Sianipar on Unsplash