Bei Drone CI handelt es sich um einen OpenSource continuous integration (CI) Server.
Dabei setzt Drone CI auf die Ausführung des Builds mittels Containern.
Typischerweise werden dabei Docker oder Kubernetes als Container Plattform eingesetzt.
Eine Buildpipeline wird in YAML definiert, dabei können sowohl services
definiert werden, die im Build verwendet werden, als auch persistente volumes
und natürlich die Buildabläufe als steps
.
Drone CI Kubernetes Pipeline Beispiel
kind: pipeline
type: kubernetes
name: build-demo
platform:
os: linux
arch: arm64
volumes:
- name: cache
temp: {}
- name: docker
host:
path: /var/tmp/docker
services:
- name: docker
image: docker:20.10-dind
environment:
DOCKER_TLS_CERTDIR: ""
resources:
requests:
cpu: 1
memory: 2Gi
limits:
memory: 2Gi
privileged: true
ports:
- 2375
volumes:
- name: docker
path: /var/lib/docker
steps:
- name: publish
image: docker
environment:
DOCKER_HOST: "tcp://localhost:2375"
resources:
requests:
cpu: 1
memory: 128Mi
privileged: true
commands:
- cd frontend && sleep 10 # docker sidecar needs time for startup
- docker build -t registry.docker-registry:5000/demo/frontend .
- docker push registry.docker-registry:5000/demo/frontend