
Automatiser le déploiement des sites Web et plus encore avec cette action GitHub. C'est gratuit!
Placez ce qui suit dans 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/ActionsBlank workflow file ou Set up a workflow yourself , si vous ne voyez pas ces options, créez manuellement un fichier yaml Your_Project/.github/workflows/main.ymlsecrets dans votre projet. Pour ajouter un secret , allez dans l'onglet Settings de votre projet, sélectionnez Secrets . Ajouter un nouveau Secret pour private-ssh-key Des clés peuvent être ajoutées directement à votre fichier .yml Config ou référencées à partir de votre stockage Secrets de projet.
Pour ajouter un secret , allez dans l'onglet Settings de votre projet, sélectionnez Secrets . Je vous recommande fortement de stocker votre private-ssh-key en tant que secret.
| Nom de clé | Requis? | Exemple | Défaut | Description |
|---|---|---|---|---|
target-server | Oui | example.com | Serveur de destination à déployer vers | |
destination-path | Oui | ~/folderOnServerThatAlreadyExists/ | Chemin sur le serveur pour déployer vers. Doit déjà exister. | |
remote-user | Oui | username | L'utilisateur SSH à se connecter comme | |
private-ssh-key | Oui | -----BEGIN RSA PRIVATE KEY----- ...... | Clé privé SSH. Doit être spécifié comme secret. | |
source-path | Non | ./myFolderToPublish/ | ./ | Chemin de téléchargement sur le serveur doit se terminer par des slash / |
ssh-port | Non | 12345 | 22 | Port SSH à utiliser. La plupart des hôtes modifient cela par défaut. Ce n'est pas votre port de sites Web. |
rsync-options | Non | Voir la section rsync-options ci-dessous | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | Remarque: Si la personnalisation, vous devez redéfinir les valeurs par défaut (en supposant que vous les souhaitez). Arguments RSYNC personnalisés, ce champ est passé directement dans le script RSYNC. |
rsync-optionsArguments personnalisés, ce champ est passé directement dans le script RSync. Voir le manuel de RSYNC pour toutes les options. Vous pouvez utiliser autant d'arguments que vous le souhaitez, les séparer avec un espace
Vous trouverez ci-dessous une liste incomplète d'args couramment utilisés:
| Option | Description |
|---|---|
--archive | Une façon rapide de dire que vous voulez une récursivité et que vous voulez préserver presque tout |
--dry-run | Ne télécharge ni ne supprime rien, mais vous dit ce qu'il téléchargerait / supprimerait s'il s'agissait d'un véritable déploiement |
--stats | Imprimez des statistiques verbeuses sur le transfert de fichiers, vous permettant de savoir à quel point l'algorithme de transfert Delta-transfert de RSYNC est efficace pour vos données |
--links | Lorsque des liens symboliques sont rencontrés, recréez le Symlik sur la destination |
--compress | Comprime les données du fichier telles qu'elles sont envoyées à la machine de destination, ce qui réduit la quantité de données en cours de transmission |
--human-readable | Octets de sortie dans un format plus lisible par l'homme (k, m, g) |
--itemize-changes | Liste détaillée des modifications apportées à chaque fichier, y compris les modifications d'attribut |
--delete-after | Lorsque vous supprimez un fichier sur GitHub, il sera également supprimé sur le serveur. Les fichiers sont supprimés à la fin d'un déploiement pour minimiser les temps d'arrêt. |
--max-size '200K' | Ignorez la synchronisation des fichiers sur cette limite. La valeur est un nombre suivi de "k", "m" ou "g" |
--exclude 'file.txt' | Exclut les fichiers du déploiement. Prend en charge Glob Pattterns (ex: *.jpg ). Vous pouvez avoir plusieurs exclusions! |
--include 'file.txt' | Comprend les fichiers même s'ils ont été exclus. Prend en charge Glob Pattterns (ex: *.jpg ). Vous pouvez avoir plusieurs incluses! |
Voir le manuel de RSYNC pour toutes les options
Assurez-vous d'avoir un script NPM nommé «build». Cette configuration devrait fonctionner pour la plupart des sites Web construits par le nœud.
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/ Oupose une liste de fichiers qui seront créés / modifiés pour synchroniser votre source sans apporter de modifications réelles
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=.gitignoreVous voulez un autre exemple? Faites-moi savoir en créant un problème de github
Si vous appréciez cette action GitHub, donnez-lui un ou montrez avec l'un des badges ci-dessous. N'hésitez pas à modifier le texte ou la couleur.
[ < 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 ) Les fichiers GIT sont exclus par défaut
Si vous avez rsync-options personnalisées, vous devrez ré-aérer les options d'exclusion par défaut à l'aide de --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
Vous pouvez utiliser rsync-options et transmettre autant d'options --exclude que vous le souhaitez. Par défaut, cette action exclut les fichiers GitHub. Si vous choisissez de personnaliser rsync-options assurez-vous de copier sur les valeurs par défaut.
Exemple excluant tous les fichiers .jpg :
rsync-options: --exclude "*.jpg"
Exemple à l'exclusion d'un dossier spécifique:
rsync-options: --exclude "wp-content/themes/"
Cette bibliothèque utilise rsync pour synchroniser les fichiers. Le script n'a pas été en mesure de détecter rsync sur la machine exécutant l'action. Si vous utilisez runs-on: ubuntu-latest vous aurez toujours rsync .
Si vous utilisez windows-latest , windows-XXXX , macos-latest , macos-12 ou un coureur auto-hébergé, vous devrez installer RSYNC avant l'étape web-deploy .
C'est assez facile à faire!
Sur windows Runners, exécutez vos étapes spécifiques à Windows, puis utilisez une étape ubuntu-latest à déployer.
Sur les coureurs auto-hébergés, installez RSYNC avant l'étape web-deploy .
runs-on : [self-hosted, linux, my-self-hosted-runner-label]
steps :
- name : Install rsync
run : |
sudo apt-get update
sudo apt-get install rsync Sur les coureurs macos installez RSYNC avant l'étape web-deploy .
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncEn savoir plus sur la personnalisation des coureurs
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-runners