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