Drone.io: Zugangsdaten als Secret Hinzufügen


Ich verwende Drone Continous Delivery für ein paar Projekte.

Beim Punkt Delivery stellt sich häufig die Frage, ob man die Zungangsdaten des Dienstes, zum dem depolyt wird, im .drone.yml angeben möchte. Eigentlich nicht.

Drone bietet aber die Möglichkeit, Zugangsdaten (oder andere Geheimnisse) als sogenannte Secrets zu verwalten. Es handelt sich um benannte Parameter, die in einem Pipeline-Schritt abgerufen werden können.

Die Parameter oder Secrets sind dann als Umgebungsvariable verfügbar. Viele Plugins unterstützen diese Art der Konfiguration. Das Deployment dieser Website verwendet das Plugin cschlosser/drone-ftps. Der Ausschnitt der Konfiguration sieht so aus:

pipeline:
  deploy:
    image: cschlosser/drone-ftps
    hostname: ftp.example.com:21
    secrets: [ ftp_username, ftp_password ]
    clean_dir: true
    chmod: false
    dest_dir: /
    src_dir: /public
    verify: false

Über die Zeile secrets: [ ftp_username, ftp_password ] sind für das Plugin die Umgebungsvariablen FTP_USERNAME und FTP_PASSWORD verfügbar. Die Secrets werden immer als Großbuchstaben umgewandelt.

Du hinterlegst die Secrets ganz einfach im Drone UI unter Repositories -> Settings oder du benutzt das Kommandozeilentool.

# Drone CLI herunter laden und entpacken
curl -L https://github.com/drone/drone-cli/releases/download/v0.8.6/drone_linux_amd64.tar.gz | tar zx
# Global installieren, wenn gewünscht
install -t /usr/local/bin drone

Damit das Drone-CLI weiß, mit welchen Server es sprechen soll, werden zwei Umgebungsvariablen gesetzt:

export DRONE_SERVER=drone.example.com
export DRONE_TOKEN=abc...123

Das Token kannst du auf deiner Drone-Website im Menü unter den User Settings finden (https://drone.example.com/account).

Nun kannst du die Secrets anlegen. Für das Beispiel oben sähe das so aus:

drone secret add -repository My/repo -image cschlosser/drone-ftps -name ftp_username -value FtpBenutzer
drone secret add -repository My/repo -image cschlosser/drone-ftps -name ftp_password -value Geheim