Despliegue de tu aplicación de React usando Github Actions
Tags: github, githubactions, cicd, react
Published: 2021-05-30 04:57:37

Cuando creamos nuestras aplicaciones, usando una librería o framework, llega el momento donde deseamos verla desplegada en algún entorno o algún hosting gratuito o de pago.


Para ello lo que normalmente hacemos es generar el build de la aplicación ejecutando el siguiente comando:


![Build de la aplicación](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xiesy54bmr9x2q9h7y6v.png)

Luego subimos los archivos al hosting o entorno usando FTP, hablando de lo comúnmente conocido para desarrolladores que hace tiempo publican sus cambios o la aplicación a producción. Aunque ahora existen nuevas formas automatizadas para facilitarnos la vida.


Hablando del proceso anterior (por FTP), este es muy manual, porque cada vez que deseamos subir nuestros nuevos cambios, debemos generar el build y actualizar los archivos.


Existen herramientas como Github Actions que nos ahorran ese trabajo, permitiéndonos desplegar nuestra aplicación a un hosting gratuito como Github Pages, de forma automatizada, cada vez que ejecutamos algún evento desde nuestra terminal de comandos como el push de nuestro repositorio.


Puedes ampliar la información sobre el [despliegue con Github Actions](https://dev.to/vanessamarely/despliegue-de-tus-aplicaciones-usando-github-actions-32f1) en mi otro artículo, donde te explico ademas un poco sobre CI/CD.


# ¿Cómo despliego mi aplicación?


Una vez tenemos nuestra aplicación creada y queremos realizar el proceso de despliegue a algún entorno, debemos hacer una configuración manual para luego, con Github Actions, todo se realice de forma automatizada.


Para facilitarnos la configuración usaremos el paquete de [gh-package](https://www.npmjs.com/package/gh-pages), y para esto ejecutaremos:


![Instalando el paquete: gh-package](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr0zi3d3gwfygmfifg4x.png)


Configuramos nuestro package.json

![Configuramos el package.json](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6tbp0z8e61ioagpaenzb.png)


Nota: Debemos asegurarnos que colocamos en el ‘homepage’ el nombre del repositorio correctamente. En este caso estoy usando este: [deploy-react-example](https://github.com/vanessamarely/deploy-react-example).


Hacemos deploy de nuestra aplicación:


![Deploy de nuestra aplicación](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18wl67orks97r9usejmp.png)


Subimos los cambios a nuestro repositorio:


![Subimos los cambios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztgfnreyapempv3u338x.png)


En la pestaña settings del repositorio en Github puedes en pages revisar cuál será la url que Github creó de tu repositorio:


![Pestaña settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lf0nhcso9jwav7czph57.png)


Y ejecutando el comando para despliegue, ver tus cambios en Github pages, aunque este aún es un proceso manual.‌


En la pestaña de GitHub Actions en nuestro repositorio de GitHub, podemos ver varias plantillas para hacer el despliegue. Es bueno usar alguna de las opciones sugeridas, dependiendo de que herramienta vayas a emplear para hacer el despliegue.


Para este caso vamos a crear nuestra plantilla manual o nuestro flujo de trabajo.


![Pestaña Github Actions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a2ciokpyjvdf4h0mtb45.png)


* Primero vamos a crear en nuestro proyecto, en la raíz una carpeta llamada: “**.github**”.
* Dentro de la carpeta “**.github**” crearemos otra carpeta llamada: “**workflows**”
* Dentro de la carpeta crearemos un archivo llamada deploy.yml


En el archivo **deploy.yml**, es donde realizaremos la configuración.

![Archivo del flujo de trabajo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjqfdwon8555qcnhwexu.png)


* En este archivo en el **on**: en branches debemos colocar el nombre de nuestra rama por defecto: **main**


Guardamos nuestro archivo, hacemos un commit y un push

![Guardamos nuestros cambios](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53969jfrciqhxm8afmtv.png)


Si revisamos en la pestaña “**Actions**”, empezará nuestro despliegue.

![Inicio de ejecución de jobs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj3mcpwam5b4x24z8shf.png)

Cuando el despliegue ha sido exitoso, vamos a ver que todos los checks de los jobs funcionan correctamente.

![Jobs exitosos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/626qzzf1kuuejt32lfzg.png)


Una vez terminen los jobs podemos revisar nuestra página, haciendo uso del link que Github Pages género para nosotros, por ejemplo: [https://vanessamarely.github.io/deploy-react-example/](https://vanessamarely.github.io/deploy-react-example/).


Cada vez que realicemos un cambio en nuestro repositorio y hagamos push de ellos, Github Actions entrará en acción, ejecutando los jobs, mostrando los checks de los pasos exitosos.


En el caso de que alguno falle, podremos ir a revisar en el log y solucionar el problema en nuestro repositorio y volver a subir los cambios (push), para que puedan ejecutarse los jobs nuevamente.

![Ejemplo de algún fallo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l147rmiopbtalni8cpb5.png)

![Proceso Exitoso](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p457twun2fz3v1whmhjn.png)

Podemos verificar que los cambios ya fueron realizados en el entorno de Github Pages, revisando su estado, para ello en la pagina de nuestro repositorio, damos clic en **Environments**.

![Repositorio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v5j07363ov93hth17tl7.png)


Se nos abre la página de deployments y podemos verificar el estado del logo de cada despliegue.


![Despliegue a Github Pages](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6byubd6dtmkg94z5xxzo.png)

Haciendo clic en alguno de los enlaces de ‘**View Deployment**’, podemos verificar en ese punto cúal fue el resultado del despliegue.

![App en Github Pages](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwilyu5rc5p2dwurpdxc.png)

El repositorio usado para este ejemplo solo contiene la instalación del [create-react-app](https://es.reactjs.org/docs/create-a-new-react-app.html) y un cambio de mensaje en el componente App.

[https://github.com/vanessamarely/deploy-react-example](https://github.com/vanessamarely/deploy-react-example)

# Conclusión

Github Actions nos facilitó el despliegue en nuestras aplicaciones de una forma amena y sencilla. Con Github pages no solo podemos tener un hosting gratuito de nuestro proyectos, que sumado a la integración de Github Action podemos realizar el proceso de CI/CD automatizado.


Espero este artículo sea de ayuda, para que con él puedan hacer el despliegue de tu aplicación de React fácilmente.


Te invito a seguirme en twitter con el handle: [@vanessamarely](https://twitter.com/vanessamarely)