La acción de flujo de trabajo del implementador de lanzamiento es una implementación de lanzamiento automatizada para integración continua / implementación continua (CI / CD). Está diseñado para automatizar el proceso de implementación de su aplicación web. Esta acción maneja la configuración del entorno, la instalación de dependencias, la construcción del proyecto (el paquete de compilación), lo implementa en un servidor remoto y envía notificaciones a Slack.
| Aporte | Descripción | Requerido | Por defecto |
|---|---|---|---|
| sitio | La URL del sitio de implementación | Sí | N / A |
| github-token | Token Github. Esto es proporcionado automáticamente por GitHub. Use el valor predeterminado $ {{secrets.github_token}}. Más información | Sí | N / A |
| despliegue | La ruta en el servidor remoto donde se implementará la aplicación. | Sí | N / A |
| implementar | El nombre de host o la dirección IP del servidor remoto. | Sí | N / A |
| despliegue | El puerto SSH del servidor remoto (generalmente 22). | Sí | N / A |
| usador de implementación | El nombre de usuario para el acceso SSH al servidor remoto. | Sí | N / A |
| desplegar | La tecla SSH privada para acceder al servidor remoto. Generar una llave SSH | Sí | N / A |
| nombre de la etiqueta | El nombre de la etiqueta de la construcción de lanzamiento. | Sí | N / A |
| camino | El camino al directorio de compilación en el corredor de GitHub. | Sí | construir/troncal/ |
| interruptor | RSYNC Switches para la implementación. Esto controla el comportamiento del proceso de sincronización de archivos. Documentación de RSYNC | No | -avzr --exclude = "*. env" --exclude = "env" --exclude = ". github" --exclude = ". git" --exclude = ". gitignore" --exclude = ". user.ini" |
| slack-webhook | URL Slack Webhook para notificaciones. Obtenga esto desde su configuración de Slack. Creando webhooks Slack | No | N / A |
| canal flojo | Canal de holgura para notificaciones. | No | general |
| título de la holgura | Título para la notificación Slack. | No | Aplicación web implementada |
| holgura | Cuerpo de mensajes para la notificación Slack. | No | Proceso de implementación completado. Verifique los registros para más detalles. |
| nombre de usuario flojo | Nombre de usuario que aparecerá como el remitente de la notificación Slack. | No | Bot de implementación de webapp |
| flooter | Texto de pie de página para la notificación Slack. | No | Estado de actualización de la aplicación web |
| versión de PHP | Versión PHP para configurar | No | 7.4 |
| extensiones de PHP | Extensiones de PHP para instalar | No | PCOV |
| aversión de nodo | Versión node.js para configurar | No | 16 |
| Uso-PHP | Si configurar PHP | No | verdadero |
| nodo de uso | Si configurar Node.js | No | verdadero |
| Use la instalación de remoto | Si ejecutar instalaciones/actualizaciones remotas de SSH | No | FALSO |
| Assels de carga de carga | Si cargar activos de liberación | No | verdadero |
| archivos de liberación | Archivos para cargar para liberar | No | build.zip; Changelog.md |
| uso-cache | Si se debe usar el almacenamiento en caché para dependencias | No | FALSO |
| cargando | Si cargar artefactos | No | FALSO |
| nombre de artefacto | Nombre del artefacto para subir | No | artefacto de construcción |
| patrón de artefacto | Camino del artefacto para cargar | No | construir/troncal/ |
Para usar esta acción en su flujo de trabajo, incluya los siguientes pasos en su archivo de flujo de trabajo de acciones GitHub. Si es nuevo en las acciones de GitHub, cree un directorio .github/workflows en la raíz de su repositorio, y agregue un archivo YAML (por ejemplo, release-deployer.yml ) con el siguiente contenido:
Ejemplo básico:
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 notificationsEjemplo con comentarios para cada parámetro:
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')
En este ejemplo, el flujo de trabajo se desencadena en solicitudes de extracción cerrada y también se puede activar manualmente a través de la pestaña GitHub Actions. Utiliza el googleapis/release-please-action para administrar las versiones y luego ejecuta la acción del implementador personalizado si se crean versiones.
Advertencia
La opción --delete en los switches puede ser peligrosa, ya que puede dar como resultado la eliminación de archivos o contenido importantes en el servidor.
Directorio de compilación : la entrada path ( build/trunk/ ) predeterminada especifica el directorio desde el que los archivos se copiarán al servidor remoto utilizando rsync . Asegúrese de que su proceso de compilación emita los archivos necesarios a este directorio, o ajuste la entrada de path en consecuencia para que coincida con su ubicación de salida de compilación.
RSYNC -Opción --delete : la opción --delete en la entrada switches se usa para mantener el directorio remoto en sincronización con el directorio de compilación local eliminando archivos en el servidor remoto que ya no existen localmente. Esto puede ser peligroso, ya que puede dar lugar a la eliminación de archivos importantes o contenido en el servidor, como las imágenes o otros activos superados por el usuario. Use esta opción con precaución para evitar la pérdida de datos no deseada. Considere excluir directorios que no deben eliminarse agregándolos a la lista --exclude en la entrada switches . Ver: opciones de eliminación de RSYNC
rsync con los conmutadores especificados.set -eo ), que asegura que los pasos posteriores no se ejecuten si falla un paso anterior.| Secreto | Descripción |
|---|---|
GITHUB_TOKEN | Token de GitHub para la autenticación (proporcionado por defecto en las acciones de GitHub) |
DEPLOY_PATH | Ruta de implementación remota |
DEPLOY_HOST | Host de implementación remota |
DEPLOY_PORT | Puerto de implementación remota |
DEPLOY_USER | Usuario de implementación remota |
DEPLOY_KEY | Clave de implementación remota |
SLACK_WEBHOOK | URL Slack Webhook para notificaciones |
Para agregar secretos a su repositorio:
CI/CD es un método para entregar aplicaciones con frecuencia a los clientes mediante la introducción de automatización en las etapas de desarrollo de aplicaciones. Los principales conceptos atribuidos a CI/CD son la integración continua, la entrega continua y la implementación continua. Esta acción ayuda a implementar CI/CD automatizando el proceso de implementación, asegurando que su aplicación sea
Siempre en un estado desplegable y que las actualizaciones se entregan a los usuarios de manera rápida y eficiente.
Al incorporar esta acción en su flujo de trabajo, puede lograr un proceso de implementación más confiable y seguro, mejorar su flujo de trabajo de desarrollo y asegurarse de que sus aplicaciones se implementen de manera consistente y rápida.
Importante
GitHub proporciona una cierta cantidad de minutos gratuitos cada mes, dependiendo de su plan, que puede ser suficiente para proyectos pequeños a medianos. El uso de acciones de GitHub se basa en el tiempo de cómputo requerido para ejecutar sus flujos de trabajo, lo que puede variar según el corredor utilizado y el total de minutos consumidos. Para administrar el uso de manera efectiva, optimice sus flujos de trabajo y considere usar corredores autohostados para proyectos más grandes. Calculadora de precios.
Los scripts y la documentación en este proyecto se publican bajo la licencia MIT.