// docs / CI/CD / Drone

Drone

Drone handles the continuous integration, it’s integrated with Gitea via webhooks, and kicks off builds on specified branches for every push to a repository. Docs.

Useful features:

  • Repos, auth, and triggers are all managed via Gitea.

  • Each CI step runs in its own isolated container.

  • Successfully built images are published to an internal Harbor registry.

Install Drone

Create an OAuth2 Application in the Gitea settings page.

  • http://gitea.home.olirowan.local/user/settings/applications

Complete the form:

  • Application Name: drone
  • Redirect URI: http://drone.home.olirowan.local/login

Save the resulting Client ID and Client Secret to use in the Helm values.


helm repo add drone https://charts.drone.io
helm repo update

helm install drone drone/drone -f drone/local/values.yaml --namespace drone --create-namespace

Setup a Drone Runner, you may need to install Docker first in this case - for Debian 12, Bookworm


# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker oli


docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=http \
  --env=DRONE_RPC_HOST=drone.home.olirowan.local \
  --env=DRONE_RPC_SECRET=f0Xt3EKvabOoJKI35Ml919EG \
  --env=DRONE_RUNNER_CAPACITY=2 \
  --env=DRONE_RUNNER_NAME=media-runner \
  --publish=3000:3000 \
  --restart=unless-stopped \
  --name=dronerunner \
  drone/drone-runner-docker:1

Configure the Harbor, Gitea and MinIO secrets in the Drone UI:

  • docker_username
  • docker_password
  • minio_client
  • minio_secret
  • drone_user
  • drone_pass