Cómo configurar la implementación continua en AWS S3 con CircleCI en solo 30 minutos

La implementación continua puede parecer complicada al principio, pero no se deje intimidar. En este tutorial, le mostraré cómo implementar la implementación continua en AWS S3 para un sitio web estático con CircleCI en menos de 30 minutos.

Necesitará tanto una cuenta de AWS como una cuenta de CircleCI. Si aún no los tiene, comience abriendo una cuenta gratuita para AWS aquí y una cuenta gratuita CircleCI aquí. Tanto AWS como CircleCI tienen un nivel gratuito que es más que suficiente para lo que necesitará para este tutorial.

Obteniendo el código

Primero comenzará bifurcando y clonando el siguiente repositorio de proyectos en Github: S3ContinuousDeploy o, si lo prefiere, puede probar este tutorial con uno de sus repositorios siempre que sea un sitio estático.

A continuación, agregará el proyecto a su cuenta CircleCI.

Luego seleccione el repositorio S3ContinuousDeploy que acaba de clonar y haga clic en el proyecto de compilación.

Elija el repositorio S3ContinuousDeploy y haga clic en construir proyecto

En este punto, la compilación se ejecutará, pero recibirá un mensaje de error que le advierte que no se pudo detectar la configuración de su proyecto. Lo cual es normal ya que no tenemos un archivo de configuración circle.yml, que es lo que hará a continuación.

Mirando los documentos en CircleCI puede hacerse una idea de cómo debería ser circle.yml. Lamentablemente, el ejemplo del archivo circle.yml proporcionado no funcionará como está y necesitará algunos ajustes, así que hagamos eso.

A continuación se muestra el archivo circle.yml modificado que usará:

Básicamente, CircleCI crea la compilación dentro de un contenedor Docker, y la anulación bajo la propiedad de dependencias (línea 3) que agregué indica a CircleCI que instale la interfaz de línea de comandos de AWS (awscli) que se usará en este caso para ayudar a administrar y facilitar la implementación en AWS S3

Así que asegúrese de agregar el archivo y confirmarlo en su repositorio. Finalmente, asegúrese de empujar este y otros compromisos que haya realizado antes de continuar con el siguiente paso.

Según la documentación de CircleCI, el comando para la implementación es:

La ruta al archivo fue un poco difícil de entender, pero al mirar los registros de errores pude finalmente hacerlo bien: home \ ubuntu \ projectName. Así que simplemente reemplace projectName con el nombre de su proyecto, en mi caso será S3ContinuousDeploy.

El S3: // bucket-URL, por otro lado, no es correcto y debe ser S3: // bucket-Name. En este momento no tenemos un nombre de cubo, así que consigamos un cubo.

Creando el cubo S3

En este paso nos dirigiremos a la consola de AWS para crear el depósito S3 para este proyecto:

En su consola, vaya a Almacenamiento y luego a S3Presione Crear cubo

Ingrese el nombre del depósito que le gustaría usar para este proyecto, así como la región. (La mejor práctica es usar la región más cercana a la audiencia de su sitio).

Omitirás los otros pasos por ahora, así que presiona "Siguiente" y luego presiona "Crear depósito" en la pantalla de revisión.

En este punto, si vuelve a CircleCI e intenta ejecutar la compilación nuevamente, CircleCI devolverá un error fatal: No se pueden encontrar las credenciales. Entonces, ¿por qué no arreglamos eso a continuación?

Primero debemos obtener las credenciales de AWS y luego proporcionarlas a CircleCI para permitir que AWS cli acceda y administre el bucket de S3. La mejor práctica para esto es crear un nuevo usuario de Gestión de Identidad y Acceso (IAM) específicamente para CircleCI.

En la consola de AWS, vaya a Seguridad, Identidad y Cumplimiento y presione IAM y luego Agregar usuario.

En la ventana Agregar usuario, escriba CircleCI para Nombre de usuario, ya tengo un usuario de IAM llamado Configuración CircleCI, por lo tanto, para los fines de este tutorial y para ilustrar estos pasos, usaré CircleCI2. Asegúrese de marcar el acceso programático para el tipo de acceso.

Para obtener permisos, elija Adjuntar políticas existentes directamente y, en Nombre de política, marque "Acceso del administrador" y luego haga clic en Crear política. Esto proporcionará a su usuario de IAM acceso completo a su bucket de AWS S3.

Después de crear el usuario de IAM, asegúrese de conservar tanto la ID de la clave de acceso como la clave de acceso secreta, ya que las necesitaremos en el siguiente paso.

Ahora regrese a CircleCI, haga clic en el botón de configuración junto al nombre de su proyecto para revelar el menú de configuración del proyecto y luego haga clic en Permisos de AWS. Aquí es donde pegará la ID y la clave del paso anterior y luego hará clic en "Guardar claves de AWS".

Ahora nuestro Contenedor CircleCI tiene la herramienta AWS Command Line Interface y las credenciales para acceder al bucket AWS S3. Los siguientes pasos le mostrarán cómo revelar su sitio estático al mundo.

En la consola de AWS, vaya a Almacenamiento y luego haga clic en S3 y luego haga clic en el depósito que creamos anteriormente en este tutorial.

Notará que el código del repositorio ya se ha implementado correctamente.

Ahora, antes de poder acceder a este sitio estático, debe configurar su bucket S3 para el alojamiento de sitios web.

En la misma pantalla, haga clic en Propiedades y luego en Alojamiento de sitios web estáticos.

En la siguiente pantalla, seleccione Usar este depósito para alojar un sitio web y asegúrese de escribir index.html para el documento de índice.

Por cierto, la dirección HTTP proporcionada anteriormente es su punto final de acceso. Pero si lo prueba en el navegador, desafortunadamente no funcionará y recibirá un mensaje de error de acceso denegado. Pero es normal que aún tenga un paso que hacer: configurar su política de depósito.

Esta política de depósito permitirá el acceso al depósito de AWS S3 a cualquier persona a través de un navegador.

Puede leer aquí las políticas de cubo y los ejemplos si desea obtener más información.

¡Ahora puede copiar el fragmento de código anterior y pegarlo en su Editor de políticas de Bucket y listo!

Si ve la pantalla de arriba, ¡felicidades! Ha configurado correctamente la implementación continua en un depósito de AWS S3 con CircleCI.

Ahora, cada vez que envíe cambios a su repositorio de Github, CircleCI implementará automáticamente los cambios en su bucket de AWS S3.

Es posible que haya notado que, a pesar de que la implementación fue exitosa, CircleCI le muestra una advertencia roja SIN PRUEBAS.

Esto es normal porque en un entorno de Desarrollo Dirigido por Pruebas (TDD), primero escribiría pruebas y luego, antes de pasar a producción, su código debe pasar todas las pruebas. Un ejemplo con las pruebas está más allá del alcance de este tutorial, pero es suficiente decir que si hubiéramos escrito las pruebas, CircleCI solo se hubiera implementado si todas nuestras pruebas pasaran.

El uso de su propio nombre de dominio para acceder a este sitio estático también está fuera del alcance de este tutorial, pero no dude en consultar aquí las instrucciones sobre cómo configurar Amazon Route 53 para enrutar el tráfico de Internet a su nuevo sitio.

Espero hacer un tutorial que involucre un ejemplo de Integración / Implementación Continua con una batería completa de pruebas a veces en el futuro. Mientras tanto, si tienes un momento, responde una breve encuesta sobre este tutorial aquí, dale me gusta en LinkedIn o publica un comentario en la sección de comentarios.

¡Gracias por leer!