La mejor estrategia para implementar sitio estático a s3 en github push?

Me gustaría automatizar la implementación de nuestro sitio en AWS S3. Escribí un script de nodo para automatizar la compilation y la carga del sitio, pero me gustaría que el script se ejecute automáticamente siempre que la twig master de nuestro repository se actualice en github.

Busqué AWS CodeDeploy, pero parece que eso es para implementarlo específicamente en EC2. También miré AWS Lambda, pero no parece haber una manera clara de get una copy del repository usando git para poder ejecutar el script.

¿Algún service (preferiblemente vinculado a AWS) que pueda usar?

En lugar de utilizar un service de AWS directamente (como usted dice que casi todos esperan una configuration mucho más complicada, implementación en EC2, etc.), es mejor que utilice un proveedor de CI como Shippable , Codeship o Wercker .

Todos tienen la capacidad de git desde las actualizaciones de git , ejecutar commands de compilation, instalar utilidades en sus imágenes / contenedores de CI y copyr files a S3.

Probablemente haya alguna startup que haya construido una herramienta exacta para su propósito, pero aún no han aparecido en mi radar 🙂

Sé que no es un deployment de Git … Pero en lugar de configurar un cuadro de CI, acabo de usar s3cmd.

http://s3tools.org/s3cmd

La ejecución de este command sincroniza mi directory de compilation con s3.

 s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed 

Lo estoy usando en Linux. No estoy seguro de cuáles son sus historias de OSX y Windows.

Si realmente buscas una solución de git push, puedes configurar un trabajo progtwigdo que lleve tu git repo a una carpeta y luego lo ejecute. Lo hago en otro lugar en una máquina virtual Linux barata. Sin embargo, a less que vayas a CI completo, probablemente no tenga mucho sentido.

Tuve el mismo objective hace un time y ahora he lanzado una pequeña herramienta, que resuelve el problema al less para mí. Utiliza AWS Lambda y despliega una twig específica del repository en S3 después de push . Puede aprovechar al máximo la key de implementación de GitHub, que tiene less permissions como tokens de acceso personal y se puede configurar por repository.

Por favor, eche un vistazo a github-bucket , podría ayudarlo también.

github-s3-deploy-architecture

Puede configurar esto con un CodePipeline de 2 pasos muy simple. Básicamente, solo completa las diferentes secciones en AWS Console. No hay necesidad de una herramienta de CI separada y su complejidad añadida.

En el primer paso de la línea de pipí, extrae de Github y almacénala en S3. Puede configurarlo fácilmente a través de AWS Console.

En el siguiente paso de CodeDeploy, puede usar AWS CLI (preinstalado en CodeDeploy) para hacer una

 cd /path/to/public/directory && aws s3 sync --acl public-read --delete . s3://your.bucket.name 

Tendrá que establecer las variables de entorno para AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY para que la CLI de AWS pueda ejecutarse durante el paso de implementación, y eso también se puede hacer en la console de AWS para CodeDeploy, en la sección Avanzada en "variables de entorno". Una vez que las variables de entorno se han establecido y si ese usuario de AWS tiene los permissions correctos, puede ejecutar cualquier command aws-cli que desee dentro de CodeDeploy.

Una vez hecho esto, cuando se registre en Github, se iniciará CodePipeline, y unos minutos más tarde sus files estarán en S3.

Si está utilizando TravisCI, la implementación es bastante directa. La única parte que deberá agregar a su .travis.yml es:

 deploy: provider: s3 access_key_id: "YOUR AWS ACCESS KEY" secret_access_key: secure: "w/DlbHt1+IAMENCRYPTED" bucket: "YOUR BUCKET" 

La publicación de mi blog explica todos los detalles para el lado de AWS (configuration del usuario, configuraciones de cubos IAM y S3), así como github y travisCI.

Quizás dominado para su caso de uso simple, pero podría crear una línea de código muy simple para enviar su repository github a S3.

También recomiendo usar el código de la nave, simple y fácil, pero necesita crear un usuario de IAM con el permiso adecuado (que es la política) para S3.

el plan básico para el código es gratis.

Bueno, puede haber un problema hasta ahora. Puedo ver que el código no eliminará files cuando elimines files en github. Después de todo, s3 no es github repo, pero de todos modos, las operaciones de putObject para muchas actualizaciones de github funcionan lo suficientemente bien para mí.