
Automatisieren Sie die Bereitstellung von Websites und mehr mit dieser GitHub -Aktion. Es ist kostenlos!
Platzieren Sie Folgendes in Your_Project/.github/workflows/main.yml
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/Actions ausBlank workflow file oder Set up a workflow yourself Your_Project/.github/workflows/main.yml Wenn Sie diese Optionen nicht manuell erstellensecrets -Abschnitt hinzufügen. Um ein secret hinzuzufügen, gehen Sie in Ihr Projekt zur Registerkarte Settings und wählen Sie Secrets aus. Fügen Sie ein neues Secret für private-ssh-key hinzu Tasten können direkt zu Ihrer .yml -Konfigurationsdatei hinzugefügt werden oder aus Ihrem Secrets verwiesen werden.
Um ein secret hinzuzufügen, gehen Sie in Ihr Projekt zur Registerkarte Settings und wählen Sie Secrets aus. Ich empfehle Ihnen dringend, Ihren private-ssh-key als Geheimnis aufzubewahren.
| Schlüsselname | Erforderlich? | Beispiel | Standard | Beschreibung |
|---|---|---|---|---|
target-server | Ja | example.com | Zielserver zum Bereitstellen an | |
destination-path | Ja | ~/folderOnServerThatAlreadyExists/ | Pfad auf dem Server zum Bereitstellen. Muss bereits existieren. | |
remote-user | Ja | username | SSH -Benutzer zum Anmeldung als | |
private-ssh-key | Ja | -----BEGIN RSA PRIVATE KEY----- ...... | SSH Private Key. Muss als Geheimnis angegeben werden. | |
source-path | NEIN | ./myFolderToPublish/ | ./ | Pfad zum Hochladen auf dem Server muss mit dem nachfolgenden Schrägstrich enden / enden / |
ssh-port | NEIN | 12345 | 22 | SSH -Port zu verwenden. Die meisten Hosts ändern dies aus dem Standard. Dies ist nicht Ihre Websitesport. |
rsync-options | NEIN | Siehe Abschnitt rsync-options unten | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | Hinweis: Wenn Sie das Anpassen anpassen, sollten Sie die Standardeinstellungen neu geben (vorausgesetzt, Sie möchten sie). Custom RSYNC -Argumente, dieses Feld wird direkt in das RSYNC -Skript übergeben. |
rsync-optionsBenutzerdefinierte Argumente, dieses Feld wird direkt in das RSYNC -Skript übergeben. Weitere Optionen finden Sie in RSYNCs Handbuch. Sie können so viele Argumente verwenden, wie Sie möchten, und trennen Sie sie mit einem Raum
Unten finden Sie eine unvollständige Liste der häufig verwendeten Argumente:
| Option | Beschreibung |
|---|---|
--archive | Eine schnelle Art zu sagen, dass Sie eine Rekursion wollen und fast alles bewahren wollen |
--dry-run | Lädt oder löscht nichts hoch, sondern sagt Ihnen, was es hochladen/löschen würde, wenn dies eine echte Bereitstellung wäre |
--stats | Drucken Sie ausführliche Statistiken in der Dateiübertragung aus und ermöglichen Sie, wie effektiv der Delta-Transfer-Algorithmus von RSYNC für Ihre Daten ist |
--links | Wenn Symlinks auftreten |
--compress | Komprimiert die Dateidaten, die an die Zielmaschine gesendet werden, wodurch die Datenmenge reduziert wird, die übertragen werden |
--human-readable | Ausgangsbytes in einem menschlich lesbaren Format (k, m, g) |
--itemize-changes | Auflistende Liste der Änderungen, die an jeder Datei vorgenommen werden, einschließlich Attributänderungen |
--delete-after | Wenn Sie eine Datei auf GitHub löschen, wird sie auch auf dem Server gelöscht. Die Dateien werden am Ende eines Bereitstellers gelöscht, um Ausfallzeiten zu minimieren. |
--max-size '200K' | Ignorieren Sie die Synchronisierung von Dateien über dieses Grenze. Wert ist eine Zahl, die von "k", "m" oder "g" gefolgt von "k", "m" oder "G" ist. |
--exclude 'file.txt' | Ausgeschlossenen Dateien aus der Bereitstellung. Unterstützt Global -Pattterns (Ex: *.jpg ). Sie können mehrere Ausschluss haben! |
--include 'file.txt' | Enthält Dateien (en), auch wenn sie ausgeschlossen wurden. Unterstützt Global -Pattterns (Ex: *.jpg ). Sie können mehrere inklusive haben! |
In der RSYNC -Handbuch finden Sie alle Optionen
Stellen Sie sicher, dass Sie ein NPM -Skript mit dem Namen "Build" haben. Diese Konfiguration sollte für die meisten node erstellten Websites funktionieren.
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : ? Install Packages
- uses : actions/setup-node@v3
with :
node-version : 18
cache : " npm "
- run : npm ci
- name : ? Build
run : npm run build
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ Ousput einer Liste von Dateien, die erstellt/geändert werden, um Ihre Quelle zu synchronisieren, ohne tatsächliche Änderungen vorzunehmen
on : push
name : Publish Website Dry Run
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
ssh-port : 22
destination-path : ~/destinationFolder/
rsync-options : --dry-run --archive --verbose --compress --delete-after --human-readable --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignoreWillst du ein anderes Beispiel? Lassen Sie mich wissen, indem Sie ein Github -Problem erstellen
Wenn Sie diese Github -Aktion zu schätzen wissen, geben Sie sie mit einem der Abzeichen unten ein oder zeigen Sie sie. Fühlen Sie sich frei, den Text oder die Farbe zu bearbeiten.
[ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=0077b6 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=297FA9 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) Git -Dateien sind standardmäßig ausgeschlossen
Wenn Sie rsync-options angepasst haben, müssen Sie die Standard-Ausschlussoptionen verwenden --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
Sie können rsync-options verwenden und so viele --exclude geben, wie Sie möchten. Standardmäßig schließt diese Aktion Github -Dateien aus. Wenn Sie rsync-options anpassen möchten, stellen Sie sicher, dass Sie die Standardeinstellungen kopieren.
Beispiel ohne alle .jpg -Dateien ausgeschlossen:
rsync-options: --exclude "*.jpg"
Beispiel ohne einen bestimmten Ordner:
rsync-options: --exclude "wp-content/themes/"
Diese Bibliothek verwendet rsync , um Dateien zu synchronisieren. Das Skript war nicht in der Lage, rsync auf der Maschine zu erkennen, die die Aktion ausführt. Wenn Sie runs-on: ubuntu-latest verwenden, haben Sie immer rsync .
Wenn Sie windows-latest , windows-XXXX , macos-latest , macos-12 oder einen selbst gehosteten Läufer verwenden, müssen Sie RSYNC vor dem web-deploy -Schritt installieren.
Das ist ziemlich einfach!
Unter windows Läufern führen Sie Ihre Windows-spezifischen Schritte aus und verwenden Sie dann einen ubuntu-latest Schritt, um bereitzustellen.
Installieren Sie bei selbst gehosteten Läufern RSYNC vor dem web-deploy Schritt.
runs-on : [self-hosted, linux, my-self-hosted-runner-label]
steps :
- name : Install rsync
run : |
sudo apt-get update
sudo apt-get install rsync Auf macos -Läufern installieren Sie RSYNC vor dem web-deploy Schritt.
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncLesen Sie mehr über das Anpassen von Läufern
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-runners