
Automatice la implementación de sitios web y más con esta acción de GitHub. ¡Es gratis!
Coloque lo siguiente en 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 o Set up a workflow yourself , si no ve estas opciones, cree manualmente un archivo YAML Your_Project/.github/workflows/main.ymlsecrets en su proyecto. Para agregar un secret , vaya a la pestaña Settings en su proyecto, luego seleccione Secrets . Agregue un nuevo Secret para private-ssh-key Las claves se pueden agregar directamente a su archivo de configuración .yml o referenciado desde el almacenamiento Secrets de su proyecto.
Para agregar un secret , vaya a la pestaña Settings en su proyecto, luego seleccione Secrets . Le recomiendo que almacene su private-ssh-key como secreto.
| Nombre clave | ¿Requerido? | Ejemplo | Por defecto | Descripción |
|---|---|---|---|---|
target-server | Sí | example.com | Servidor de destino para implementar a | |
destination-path | Sí | ~/folderOnServerThatAlreadyExists/ | Ruta en el servidor para implementar. Ya debe existir. | |
remote-user | Sí | username | El usuario de SSH iniciará sesión como | |
private-ssh-key | Sí | -----BEGIN RSA PRIVATE KEY----- ...... | Clave privada SSH. Debe especificarse como un secreto. | |
source-path | No | ./myFolderToPublish/ | ./ | Ruta para cargar en el servidor, debe terminar con la barra de corte / |
ssh-port | No | 12345 | 22 | Puerto ssh para usar. La mayoría de los hosts cambian esto desde el valor predeterminado. Este no es el puerto de sus sitios web. |
rsync-options | No | Consulte la sección rsync-options a continuación | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | Nota: Si personaliza, debe volver a especificar los valores predeterminados (suponiendo que los desee). Argumentos de RSYNC personalizados, este campo se pasa directamente al script RSYNC. |
rsync-optionsArgumentos personalizados, este campo se pasa directamente al script RSYNC. Vea el manual de RSYNC para todas las opciones. Puedes usar tantos argumentos como quieras, separarlos con un espacio
A continuación se muestra una lista incompleta de Args de uso común:
| Opción | Descripción |
|---|---|
--archive | Una forma rápida de decir que quieres recurrir y quieres preservar casi todo |
--dry-run | No carga ni elimina nada, pero le dice lo que cargaría/eliminaría si este fuera un implemento real |
--stats | Imprima estadísticas verbosas en la transferencia de archivos, lo que le permite decir qué tan efectivo es el algoritmo Delta-Transfer de RSYNC para sus datos |
--links | Cuando se encuentran enlaces simbólicos, recrea el enlace simbólico en el destino |
--compress | Comprime los datos del archivo tal como se envía a la máquina de destino, lo que reduce la cantidad de datos que se transmiten |
--human-readable | Bytes de salida en un formato más legible por humanos (K, M, G) |
--itemize-changes | Lista detallada de los cambios que se están realizando en cada archivo, incluidos los cambios de atributo |
--delete-after | Cuando elimine un archivo en GitHub, también se eliminará en el servidor. Los archivos se eliminan al final de una implementación para minimizar el tiempo de inactividad. |
--max-size '200K' | Ignore la sincronización de archivos a través de este límite. El valor es un número seguido de "K", "M" o "G" |
--exclude 'file.txt' | Excluye los archivos de la implementación. Admite Glob Pattterns (Ej: *.jpg ). ¡Puedes tener múltiples exclusiones! |
--include 'file.txt' | Incluye archivos incluso si se excluyó. Admite Glob Pattterns (Ej: *.jpg ). ¡Puedes tener múltiples incluyendo! |
Ver el manual de RSYNC para todas las opciones
Asegúrese de tener un script NPM llamado 'Build'. Esta configuración debería funcionar para la mayoría de los sitios web construidos por nodos.
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/ Outss una lista de archivos que se crearán/modificarán para sincronizar su fuente sin hacer cambios reales
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=.gitignore¿Quieres otro ejemplo? Avísame creando un problema de GitHub
Si aprecia esta acción de GitHub, dale un o presume con una de las insignias a continuación. No dude en editar el texto o el color.
[ < 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 ) Los archivos GIT están excluidos de forma predeterminada
Si tiene rsync-options personalizadas, deberá volver a agregar las opciones de exclusión predeterminadas usando --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
Puede usar rsync-options y pasar tantas opciones --exclude como desee. Por defecto, esta acción excluye los archivos GitHub. Si elige personalizar rsync-options asegúrese de copiar los valores predeterminados.
Ejemplo excluyendo todos los archivos .jpg :
rsync-options: --exclude "*.jpg"
Ejemplo excluyendo una carpeta específica:
rsync-options: --exclude "wp-content/themes/"
Esta biblioteca usa rsync para sincronizar archivos. El script no pudo detectar rsync en la máquina que ejecuta la acción. Si está utilizando runs-on: ubuntu-latest siempre tendrá rsync .
Si está utilizando windows-latest , windows-XXXX , macos-latest , macos-12 o un corredor autohospedado, deberá instalar RSYNC antes del paso web-deploy .
¡Esto es bastante fácil de hacer!
En los corredores windows ejecutan sus pasos específicos de Windows, luego use un paso de ubuntu-latest para implementar.
En los corredores autohospedados instalan rsync antes del paso 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 En los corredores macos , instale rsync antes del paso web-deploy .
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncLea más sobre la personalización de los corredores
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-runners