Gitea-Action-Workflow zum Bereitstellen einer Website auf Netcup-Webhosting
Der folgende Gitea-Action-Workflow stellt eine Hugo-Website auf einem Netcup-Webhosting-Konto bereit. Er verwendet SSH-Zugriff mit einem vorinstallierten privaten Schlüssel (ssh-keygen -t ed25519 -f id_netcup echo $(cat id_netcup.pub) >> ~/.ssh/authorized_keys auf dem Netcup-Server).
Er erwartet, dass die folgenden Secrets in Gitea über das Webinterface konfiguriert sind (Repository-Einstellungen -> Runners -> Secrets):
NETCUP_USERNAME-hosting123456oder ähnlich. erhalten Sie dies aus Ihrem Netcup-Kundenkontrollpanel / Webhosting-Kontrollpanel.NETCUP_SSH_KEY- der geheime SSH-Schlüssel ausid_netcupNETCUP_SSH_HOST_KEY- siehe Wie man nur den Host-Key eines SSH-Servers anzeigt für Informationen zum Abrufen dieses Schlüssels.
Dies ist erforderlich, um eine passwortlose Anmeldung vom CI/CD-Job aus zu ermöglichen.

Darüber hinaus wird erwartet, dass Sie das Netcup-Konto so konfigurieren, dass es von my-domain.com/httpdocs aus bedient wird.
Es funktioniert in Verbindung mit der Hugo-Build-Action, die Sie in unserem vorherigen Beitrag Gitea Hugo-Build-Action finden. Eine Modifikation erfordert jedoch nur, dass Sie den Download artifact-Schritt ändern.
name: Deploy
run-name: Deploying homepage
on: [push]
jobs:
Deploy-Netcup:
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: hugo-site
path: public
# Put into a tarball
- name: Make tarball
run: mkdir -p my-domain.com && mv public my-domain.com/httpdocs && tar -czf my-domain.com.tar.gz my-domain.com
shell: sh
# Accept host key
- name: Accept SSH host key
run: echo "my-domain.com ssh-ed25519 ${{ secrets.NETCUP_SSH_HOST_KEY }}" >> ~/.ssh/known_hosts && cat ~/.ssh/known_hosts
shell: sh
# Deploy to Netcup
- name: Export SSH key
run: echo "${{ secrets.NETCUP_SSH_KEY }}" > id_netcup && chmod 600 id_netcup
shell: sh
- name: Remove old files
run: ssh -i id_netcup ${{ secrets.NETCUP_USERNAME }}@my-domain.com "rm -rfv my-domain.com/*"
shell: sh
- name: Deploy to Netcup
run: "scp -i id_netcup my-domain.com.tar.gz ${{ secrets.NETCUP_USERNAME }}@my-domain.com:"
shell: sh
- name: Extract tarball on server
run: ssh -i id_netcup "${{ secrets.NETCUP_USERNAME }}@my-domain.com" "tar xzvf my-domain.com.tar.gz"
shell: shALLE zuvor existierenden Dateien werden gelöscht aus dem my-domain.com-Verzeichnis auf dem Server, bevor die neuen Dateien hochgeladen werden. Am besten stellen Sie sicher, dass sich nichts Wichtiges in diesem Ordner befindet.
Ich empfehle nicht, dies zu entfernen, da sonst im Repository umbenannte oder gelöschte Dateien nicht vom Server entfernt werden und für immer zugänglich bleiben.
Um den Upload zu beschleunigen (rsync ist auf Netcup-Webhosting über SSH nicht verfügbar und ist auch etwas langsam, wenn viele kleine Dateien hochgeladen werden), erstellen wir zuerst ein Tarball, laden dann nur das Tarball mit scp hoch und führen dann tar xzvf auf dem Server aus.