Alternative CD
Pipeline oder Workflows als Alternative zu GitFS
Beispiel für eine Bitbucket Pipeline, welche bei jedem Push die States auf dem Master aktualisiert.
image: alpine:3.10
pipelines:
branches:
master:
- step:
name: Deploy to Salt Master
script:
- apk --no-cache add openssh-client rsync
- ls -la
- find . -type d -exec chmod 0770 {} \;
- find . -type f -exec chmod 0660 {} \;
- >-
rsync -av --delete -e "ssh -p <PORT>" . <HOST>:/srv/salt/
--exclude=.git
--exclude=.gitignore
--exclude=bitbucket-pipelines.yml
--delete-excluded
Sollte Ihr Salt-Master nicht per SSH aus dem öffentlichen Internet erreichbar sein, können Sie einen kostenlosen Account von Ngrok nutzen, um den SSH Port schnell und einfach freizugeben.
cd /tmp
wget "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.tgz"
tar xzf ngrok-stable-linux-amd64.tgz
mv ngrok /usr/local/bin/
chmod +x /usr/local/bin/ngrok
rm ngrok-stable-linux-amd64.tgz
ngrok authtoken <YOU-TOKEN>
ngrok tcp 22 -log=stdout -log-format=json 2>&1 >/tmp/ssh-exposal.json &
jq < /tmp/ssh-exposal.json
Legen Sie einen User an, welcher die Dateien synchronisiert. Nutzen Sie dazu nicht den Root-User.
Bierspielweise: useradd -m -r -s /bin/sh -d /var/lib/bitbucket bitbucket

Rufen Sie die Settings des Repositorys auf und generieren Sie im Bereich Pipelines > SSH Keys
einen privaten Schlüssel. Kopieren Sie den öffentlichen Schlüssel in die Datei /var/lib/bitbucket/.ssh/authoriezd_keys
. Achten Sie darauf, dass diese Datei dem Benutzer bitbucket
und nicht Root gehört.
Rufen Sie den Fingerprint vom Salt-Master ab (Fetch), und fügen Sie diesen zum Repository hinzu. Die Pipeline ist nun einsatzbereit.
Last updated