• Using Drone to Build and Deploy a Jekyll Site

    Visualization of the pipeline execution in Drone CI

    In this blog post I show you how Drone can be used to automatically build and deploy a Jekyll site. Drone is a very lightweight CI/CD platform which uses Docker containers to execute pipelines which are defined in simple YAML configuration files. The configuration shown in this post is also used for building and deploying this blog when changes are pushed to the corresponding repository. Let’s start by looking at a simple pipeline configuration for a Jekyll site.

    Read on →

  • Building a Docker Image for a Maven Project

    Combination of Maven and Docker logos

    Recently, I had to set up the process of building Docker images for a Maven-based Java project. First, I tried existing Maven plugins, namely spotify/dockerfile-maven and fabric8io/docker-maven-plugin. Both allow you to use Maven for building Docker images without using the Docker CLI directly. However, this approach was problematic as I wanted to build the images on a Gitlab CI server which itself used Docker containers to run the builds. I did not want to create an own Docker image supporting the Docker-in-Docker feature and providing me with a Maven installation. Therefore, I came up with a very simple approach of building Docker images which can easily be used in Docker-based environments like Gitlab CI. The approach uses a template and the Maven Resources Plugin to generate a Dockerfile. This also allows refering to Maven properties within the Dockerfile template which can make the build process more flexible. The generated Dockerfile is then used on the Docker CLI to build the image of the application.

    Read on →

  • Deploying a Jekyll Site Using Git Hooks

    ".git/hooks" directory and Jekyll logo

    Hello and welcome to the first post on my blog. In this post I will show you how you can deploy your Jekyll site to a Linux server in an automated way by using Git hooks. Hooks provide a simple way to automatically execute scripts when something changes in a repository. In our case, we want to set up a hook on a remote repository which automatically builds a Jekyll site whenever whe push a change into this repository. Deploying a website in such an automatic way is useful especially if multiple developers work on the same website and you want your changes to be directly reflected by your web server.

    Read on →