CI/CD
El CI/CD (Continuous Integration / Continuous Delivery) es un proceso que nos permite automatizar el despliegue de una aplicación web con tan solo subir los cambios al repositorio.
Este proceso se encarga de ejecutar un script en un servidor cada vez que se hace un push a una rama determinada.
Antes de usar Vercel, configuré Github Actions manualmente para automatizar el despliegue de la aplicación web en mi servidor VPS y con otra herramienta llamada pm2, reiniciaba el servidor automáticamente para que los cambios se aplicaran.
¿Cómo funciona?
El funcionamiento es muy sencillo. Cada vez que se hace un push a la rama configurada (por defecto main), Github Actions (o el servicio que uses) ejecuta un script.
Este script se ejecuta en un servidor que te presta Github de forma gratuita aun que tiene ciertas limitaciones.
Para configurar el script que quieres ejecutar, tienes que crear un archivo en el proyecto llamado .github/workflows/[nombre].yml.
Para que te hagas una idea de como es el script, te dejo un ejemplo:
# This is a basic workflow to help you get started with Actions
name: CD
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [master]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Deploy using ssh
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: root
key: ${{ secrets.SSH_KEY}}
port: 22
script: |
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
cd /var/www/webmarks-docs
git pull
git status
npm run build