{"id":772,"date":"2019-06-28T10:21:22","date_gmt":"2019-06-28T08:21:22","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=772"},"modified":"2021-03-17T12:49:54","modified_gmt":"2021-03-17T11:49:54","slug":"continuous-delivery-di-un-sito-web-statico-con-aws-codebuild","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/continuous-delivery-di-un-sito-web-statico-con-aws-codebuild\/","title":{"rendered":"Continuous delivery di un sito web statico con AWS CodeBuild"},"content":{"rendered":"
Questo articolo \u00e8 il primo di una breve serie volta a illustrare vari possibili utilizzi dei servizi di Continuous Integration (CI) e Continuous Delivery (CD) offerti da AWS.<\/span><\/p>\n Una delle applicazioni pi\u00f9 comuni di uno stack di Continuous Delivery \u00e8 senza dubbio l\u2019automatizzazione del deploy di un sito web statico o del front-end JavaScript di una web app. Per l\u2019hosting dei contenuti statici, AWS offre una soluzione estremamente scalabile e potente: i file HTML e JavaScript del sito web possono essere caricati direttamente su S3, l\u2019object storage service di AWS, e distribuiti usando un URL fornita dalla stessa Amazon. \u00c8 ovviamente anche possibile usare un un domain name personale, andando semplicemente ad indicare degli Alias con Route 53, il servizio DNS di AWS.<\/span><\/p>\n Distribuire i contenuti statici di un sito web tramite S3 offre molti vantaggi rispetto al tradizionale hosting su un web server, in particolare:<\/span><\/p>\n Tuttavia, caricare manualmente gli oggetti su un Bucket S3 pu\u00f2 risultare inefficiente e poco pratico per sviluppi relativamente grandi, come ad esempio per il front-end di una web app complessa, dove pi\u00f9 programmatori collaborano allo stesso progetto.<\/span><\/p>\n La soluzione universalmente adottata per ovviare a questo tipo di inconveniente \u00e8 l\u2019utilizzo di una pipeline di Continuous Integration\/Delivery, che viene attivata in modo automatico nel momento in cui uno degli sviluppatori esegue un commit del codice da un version control system (e.g. Git, Subversion etc\u2026). Nel caso di contenuti statici, la pipeline \u00e8 particolarmente semplice, dato che non \u00e8 necessario compilare codice o gestire il deploy su un server: l\u2019unica operazione consiste semplicemente nel copiare i file dal repository al bucket S3. De fosse necessario, \u00e8 anche possibile eseguire dei test automatici sul codice per accertarsi del corretto funzionamento delle pagine web prima di aggiornare la versione presente su S3, per esempio utilizzando la libreria Selenium.<\/span><\/p>\n Di seguito verr\u00e0 analizzata la pipeline per il deploy di un sito statico partendo da un repository Git su Bitbucket. Questa pipeline si basa su due degli strumenti messi a disposizione da AWS: CodeBuild e Lambda Functions.<\/span><\/p>\n Lo schema concettuale della pipeline \u00e8 il seguente:<\/span><\/p>\n Abbiamo scelto di lanciare il processo di build usando una Lambda invece di usare il servizio di CodePipeline offerto da AWS: CodePipeline non ha infatti dei trigger pre-configurati per Bitbucket e dunque sarebbe stato necessario, sempre tramite una Lambda, scaricare i file da Bitbucket su un bucket S3 versionato che avremmo dovuto usare nello stadio di Source della pipeline. Tutto questo avrebbe allungato i tempi di esecuzione della Pipeline, in particolare in presenza di molti file piccoli, come spesso \u00e8 il caso per i progetti di front-end.<\/span><\/p>\n I servizi di hosting di repository Git offerti da AWS (CodeCommit) e da GitHub hanno invece dei trigger pre-configurati per CodePipeline e, quindi, se si decide di avvalersi di uno di questi servizi per il processo di deploy dei file su S3, questo viene triggerato in modo automatico senza il bisogno di utilizzare una Lambda.<\/span><\/p>\n Se la nostra soluzione vi ha incuriositi e vorreste implementarla nel vostro flusso di lavoro, lasciate un commento o contattateci<\/a>! Saremo felici di rispondere alle vostre domande, di raccogliere i vostri feedback e di aiutarvi a trarre il massimo vantaggio da questa applicazione.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":" Questo articolo \u00e8 il primo di una breve serie volta a illustrare vari possibili utilizzi dei servizi di Continuous Integration […]<\/p>\n","protected":false},"author":8,"featured_media":775,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[241],"tags":[291,364,360],"yoast_head":"\n\n
\n
<\/p>\n