Samhammer

Microsoft-Teams Integration für Drone

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.