Die Release -Deployer -Workflow -Aktion ist eine automatisierte Release -Bereitstellung für die kontinuierliche Integration / Continuous Deployment (CI / CD). Es wurde entwickelt, um den Bereitstellungsprozess Ihrer Webanwendung zu automatisieren. In dieser Aktion werden die Umgebung eingerichtet, Abhängigkeiten installiert, das Projekt (das Build -Paket) erstellt, auf einem Remote -Server bereitgestellt und Benachrichtigungen an Slack gesendet.
| Eingang | Beschreibung | Erforderlich | Standard |
|---|---|---|---|
| Site-url | Die URL der Bereitstellungsstelle | Ja | N / A |
| Github-Token | Github Token. Dies wird automatisch von GitHub bereitgestellt. Verwenden Sie den Standardwert $ {{secrets.github_token}}. Weitere Informationen | Ja | N / A |
| Bereitstellungsweg | Der Pfad auf dem Remote -Server, auf dem die Anwendung bereitgestellt wird. | Ja | N / A |
| Einsatz-Host | Der Hostname oder die IP -Adresse des Remote -Servers. | Ja | N / A |
| Bereitstellung | Der SSH -Port des Remote -Servers (normalerweise 22). | Ja | N / A |
| Einsatzbenutzer | Der Benutzername für den SSH -Zugriff auf den Remote -Server. | Ja | N / A |
| Einsatzschlüssel | Der private SSH -Schlüssel zum Zugriff auf den Remote -Server. Generieren Sie einen SSH -Schlüssel | Ja | N / A |
| Tagname | Der Tag -Name aus Release Build. | Ja | N / A |
| Weg | Der Weg zum Build -Verzeichnis auf dem Github -Läufer. | Ja | bauen/koffer/ |
| Schalter | RSYNC -Switches für die Bereitstellung. Dies steuert das Verhalten des Dateisynchronisationsprozesses. RSYNC -Dokumentation | NEIN | -Avzr -EXCLUDE = "*. ENV" -EXCLUDE = "ENV" -EXCLUDE = ". Github" -exclude = ". Git" -exclude = ". gitignore" -exclude = ". user.ini" |
| Slack-Webhook | Slack Webhook URL für Benachrichtigungen. Erhalten Sie dies aus Ihren Slack -Einstellungen. Erstellen von Slack -Webhooks | NEIN | N / A |
| Slack-Kanal | Slack -Kanal für Benachrichtigungen. | NEIN | allgemein |
| Slack-Title | Titel für die Slack -Benachrichtigung. | NEIN | Webanwendung bereitgestellt |
| Slack-Message | Message -Körper für die Slack -Benachrichtigung. | NEIN | Bereitstellungsprozess abgeschlossen. Überprüfen Sie die Protokolle für Details. |
| Slack-Uername | Benutzername, der als Absender der Slack -Benachrichtigung angezeigt wird. | NEIN | WebApp bereitstellen Bot |
| Slack-Footer | Fußzeile Text für die Slack -Benachrichtigung. | NEIN | Status der Webanwendung Update |
| PHP-Version | PHP -Version zum Setup | NEIN | 7.4 |
| PHP-Ausländer | Zu installierende PHP -Erweiterungen | NEIN | PCOV |
| Knotenversion | Node.js Version zum Einrichten | NEIN | 16 |
| Anwendung | Ob Sie PHP einrichten sollen | NEIN | WAHR |
| Gebrauchsknoten | Ob Sie node.js einrichten sollen | NEIN | WAHR |
| Anwendungsausstattung | Ob Sie die Remote -SSH -Installation/-aktualisierungen durchführen möchten | NEIN | FALSCH |
| Upload-Release-Assets | Ob Sie die Release -Vermögenswerte hochladen sollen | NEIN | WAHR |
| Release-Files | Dateien, die zum Freigeben hochgeladen werden müssen | NEIN | Build.zip; ChangeLog.md |
| Anwendungsbilanz | Ob Sie das Caching für Abhängigkeiten verwenden möchten | NEIN | FALSCH |
| Upload-Artifakt | Ob Sie Artefakte hochladen sollen | NEIN | FALSCH |
| Artefaktname | Name des Artefakts zum Hochladen | NEIN | Bauwerk |
| Artefaktpfad | Weg des Artefakts zum Hochladen | NEIN | bauen/koffer/ |
Um diese Aktion in Ihrem Workflow zu verwenden, fügen Sie die folgenden Schritte in Ihre Workflow -Datei Ihrer GitHub -Aktionen auf. Wenn Sie mit GitHub-Aktionen neu sind, erstellen Sie ein .github/workflows -Verzeichnis im Stammverzeichnis Ihres Repositorys und fügen Sie eine YAML-Datei (z. B. release-deployer.yml ) mit dem folgenden Inhalt hinzu:
Grundlegendes Beispiel:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notificationsBeispiel mit Kommentaren für jeden Parameter:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
In diesem Beispiel kann der Workflow auf geschlossene Zuganfragen ausgelöst werden und können auch manuell über die Registerkarte GitHub -Aktionen ausgelöst werden. Es verwendet die googleapis/release-please-action um die Veröffentlichungen zu verwalten, und wird dann die benutzerdefinierte Bereitstellungsaktion ausgeführt, wenn Veröffentlichungen erstellt werden.
Warnung
Die Option --delete in den switches kann gefährlich sein, da sie zum Löschen wichtiger Dateien oder Inhalte auf dem Server führen kann.
Erstellenverzeichnis : Die path (Standard build/trunk/ ) Gibt das Verzeichnis an, aus dem Dateien mit rsync auf den Remote -Server kopiert werden. Stellen Sie sicher, dass Ihr Build -Prozess die erforderlichen Dateien in dieses Verzeichnis ausgibt, oder passen Sie die path entsprechend an, um Ihren Build -Ausgangsort zu entsprechen.
RSYNC --delete Option : Die Option --delete in den switches -Eingaben wird verwendet, um das Remote -Verzeichnis synchron mit dem lokalen Build -Verzeichnis zu halten, indem Dateien auf dem Remote -Server gelöscht, der nicht mehr lokal existiert. Dies kann gefährlich sein, da dies zur Löschung wichtiger Dateien oder Inhalte auf dem Server führen kann, wie z. B. benutzerbezogene Bilder oder andere Assets. Verwenden Sie diese Option mit Vorsicht, um einen unbeabsichtigten Datenverlust zu vermeiden. Erwägen Sie, Verzeichnisse auszuschließen, die nicht gelöscht werden sollten, indem sie in die Switches --exclude in die Liste switches hinzugefügt werden. Siehe: RSYNC Löschenoptionen
rsync bereitgestellt.set -eo ), wodurch nachfolgende Schritte nicht ausgeführt werden, wenn ein vorheriger Schritt fehlschlägt.| Geheimnis | Beschreibung |
|---|---|
GITHUB_TOKEN | Github Token zur Authentifizierung (standardmäßig in GitHub -Aktionen bereitgestellt) |
DEPLOY_PATH | Remote -Bereitstellungspfad |
DEPLOY_HOST | Remote bereitstellen Host |
DEPLOY_PORT | Remote -Bereitstellungsport |
DEPLOY_USER | Remote -Benutzer |
DEPLOY_KEY | Remote -Taste bereitstellen |
SLACK_WEBHOOK | Slack Webhook URL für Benachrichtigungen |
Um Ihrem Repository Geheimnisse hinzuzufügen:
CI/CD ist eine Methode, um Kunden häufig Apps an Kunden zu liefern, indem die Automatisierung in die Stufen der App -Entwicklung eingeführt wird. Die wichtigsten Konzepte, die CI/CD zugeschrieben werden, sind kontinuierliche Integration, kontinuierliche Abgabe und kontinuierliche Bereitstellung. Diese Aktion hilft bei der Implementierung von CI/CD, indem der Bereitstellungsprozess automatisiert wird, um sicherzustellen, dass Ihre Anwendung ist
Immer in einem bereitgestellten Zustand und diese Updates werden schnell und effizient an Benutzer geliefert.
Durch die Einbeziehung dieser Aktion in Ihren Workflow können Sie einen zuverlässigeren und sichereren Bereitstellungsprozess erzielen, Ihren Entwicklungsworkflow verbessern und sicherstellen, dass Ihre Anwendungen konsequent und schnell bereitgestellt werden.
Wichtig
GitHub bietet je nach Plan eine gewisse Anzahl von Freikunden pro Monat, was für kleine bis mittlere Projekte ausreicht. Die Verwendung von GitHub -Aktionen basiert auf der Rechenzeit, die zum Ausführen Ihrer Workflows erforderlich ist. Dies kann je nach verwendeten Läufer und Verbrauch von Gesamtverzögerungen variieren. Um die Nutzung effektiv zu verwalten, optimieren Sie Ihre Workflows und erwägen Sie, selbst gehostete Läufer für größere Projekte zu verwenden. Preisrechner.
Die Skripte und die Dokumentation in diesem Projekt werden unter der MIT -Lizenz veröffentlicht.