In der heutigen Zeit sind CI-Prozesse zur kontinuierlichen Integration von Softwareänderungen in der Entwicklung nicht mehr wegzudenken. Ein noch relativ junges Continuous-Integration-Tool ist Drone. Es hilft dabei Pipelines für Build- und Testprozesse zu entwickeln und wiederkehrend anzuwenden. Außerdem integriert es sich sehr gut mit modernen Cloud-Technologien, wie Kubernetes.
Ein nicht unwichtiger Aspekt eines CI-Tools ist das Senden von Benachrichtigungen an Entwickler, wenn z.B. die Buildausführung einer Pipeline fehlgeschlagen ist. Da Drone hier aber noch keine Anbindung an Microsoft Teams hatte, hat die Samhammer AG ein eigenes Drone-Plugin entwickelt. Neben dem Versand einfacher Benachrichtigungen kann auch das nachgelagerte Anstoßen eines Deployments erfolgen. In Drone wird dieser Deploymentschritt als "Promotion" bezeichnet.
Am Besten verdeutlicht ein konkretes Beispiel die Funktionsweise unseres Plugins:
```
kind: pipeline
type: kubernetes
name: client-pipeline
steps:
- name: build
image: node:12
commands:
- npm i
- npm run build
when:
event:
exclude:
- promote
- name: send teams notification
image: drone-teams-plugin:latest
settings:
webhookurl: outlook.office.com/webhook/xxxxx
environments:
- dev
- qa
- prod
when:
event:
exclude:
- promote
- name: deploy
image: ubuntu
commands:
- bash deploy-to-kubernetes.sh ${DRONE_DEPLOY_TO}
when:
event:
- promote
```
Es handelt sich um eine einfache Beispielpipeline zum Bauen (erster Step) und Deployen (dritter Step) einer Node.js-Awendung. Der Deploymentstep wird allerdings nur im Falle eines Promotion-Events (Deployments) ausgeführt. In Schritt zwei wird die Teamsbenachrichtigung gesendet, welche ebenfalls das Auslösen des Deployments für die Kubernetes-Umgebungen "dev", "qa" und "prod" anbietet. Wird in der Dropdown die Zielumgebung gewählt, kann der Deploymentschritt direkt aus Teams heraus gestartet werden. Durch diese Integration ist es uns gelungen über den aktuellen Status unserer Pipelines immer informiert zu sein und einfach Deployments in die Cloud starten zu können.