{"id":2085,"date":"2021-01-08T12:21:25","date_gmt":"2021-01-08T11:21:25","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=2085"},"modified":"2023-03-29T15:49:59","modified_gmt":"2023-03-29T13:49:59","slug":"nuove-istanze-aws-ec2-mac-ci-cd-come-banco-di-prova","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/nuove-istanze-aws-ec2-mac-ci-cd-come-banco-di-prova\/","title":{"rendered":"Nuove istanze AWS EC2 Mac: CI\/CD come banco di prova"},"content":{"rendered":"\n

Durante l’ultimo AWS re:Invent, AWS ha fatto uno degli annunci pi\u00f9 discussi, e questo \u2014 almeno sulla carta \u2014 lascia spazio a nuovi possibili scenari di sviluppo: le istanze AWS EC2 Mac!
Non preoccupatevi, entreremo nel dettaglio di uno di questi scenari a breve nell’articolo, ma per ora, permettetemi di introdurvi questo nuovo tipo di Istanza.
Le istanze Amazon EC2 Mac hanno un nome che richiama gli anni 80, un fatto questo, che le rende sicuramente “attraenti” per quelli di voi un p\u00f2 pi\u00f9 anziani di me ?.
Il loro nome \u00e8 istanze mac1.metal<\/strong>.
Parlando invece di hardware, le Istanze Amazon EC2 Mac sono supportate da host di tipo Mac mini, dipendenti da controller AWS Nitro per connettersi ai servizi e all’infrastruttura di rete di AWS. Il punto interessante \u00e8 che le istanze Mac sono interfacciate al sistema Nitro mediante tecnologia Thunderbolt 3. Ho volutamente utilizzato il termine “host” per sottolineare come non stiamo avendo a che fare con Macchine Virtuali, ma con veri e propri Host Dedicati; ogniqualvolta decido di avviare una Istanza Amazon EC2 Mac, AWS mi mette a disposizione concretamente un Host Mac mini dedicato ai miei scopi.<\/p>\n\n\n\n

\"\"
Peter Desantis, Senior Vice President of AWS Infrastructure and Support, mentre presenta le nuove istanze Amazon EC2 Mac Instances durante l’Infrastructure Keynote del re:Invent 2020.<\/figcaption><\/figure>\n\n\n\n

mac1.metal \u2014 uno sguardo alle specifiche<\/h2>\n\n\n\n

A questo punto \u2014 assumendo che non abbiate conoscenza delle specifiche hardware delle istanze Amazon EC2 Mac \u2014 potreste chiedervi quali siano i tagli supportati. Beh, per quanto riguarda l’immediato, scordatevi di poter scegliere: AWS per ora rende disponibile solo un taglio di istanza Mac. Le specifiche hardware ci dicono che le istanze mac1.metal sono alimentate da un processore Intel Coffee Lake a 3.2 GHz \u2014 potenziabile sino a 4.6 GHz \u2014 e 32 GiB di memoria. Come spiegato da Jeff Barr nel blog di AWS, le istanze girano in VPC, includono Elastic Network Adapter, e sono ottimizzate per la comunicazione con volumi EBS, infine supportano operazioni intensive di I\/O.<\/p>\n\n\n\n

Durante la mia routine giornaliera, il mio partner di lavoro \u00e8 un laptop macOS che ho prontamente aggiornato al nuovo sistema operativo Apple: Big Sur. Di fatto ad oggi non ho notato particolari miglioramenti, tuttavia mantenere il sistema aggiornato rimane una best practice, almeno per quanto riguarda il computer di lavoro. In questo senso le Istanze AWS EC2 Mac ci sono fornite con una limitazione: supporto solo per OS Mojave e Catalina. Le AMI di questi sistemi ci vengono fornite con gi\u00e0 preinstallati AWS CLI, tool da riga di comando per XCode, Homebrew e agent di SSM. AWS sta lavorando attivamente al supporto di Big Sur e anche ai Chip Apple M1.<\/p>\n\n\n\n

Nel pratico, un caso d’uso<\/h3>\n\n\n\n

Ora, diamo uno sguardo a ci\u00f2 che ci interessa di pi\u00f9: un caso d’uso pratico!<\/p>\n\n\n\n

Ho cominciato la mia carriera lavorativa come sviluppatore, e immagino che diversi sviluppatori abbiano pensato, a loro volta, ad un’associazione tra questo annuncio e la possibilit\u00e0 di sviluppare, testare e firmare applicazioni macOS e iOS in cloud.<\/p>\n\n\n\n

Durante l’ultimo anno, il mio team sta sviluppando un’applicazione Desktop Open-Source che gestisce credenziali in locale per permettere l’accesso ad Ambienti complessi in Cloud. Il nostro progetto \u00e8 scritto in Typescript, interpretato da Node.js. Utilizziamo Angular come framework di sviluppo, che viene fatto girare on-top ad Electron per garantirci compatibilit\u00e0 multi-piattaforma<\/p>\n\n\n\n

Electron viene fornito di un sistema di compilazione nativo, chiamato Electron-Builder, che permette di aggiungere script personalizzati di build al file package.json, file che contiene inoltre, come di consueto, le dipendenze di progetto. Abbiamo creato diversi script personalizzati per generare i binari Linux, Windows e macOS.<\/p>\n\n\n\n

Per sviluppare il binario macOS, lo script deve avere accesso ad un Certificato di Firma e alla Password di Autenticazione (Notarisation) Apple. Questi permettono, rispettivamente, di firmare e autenticare il binario. Abitualmente siamo soliti salvare dati sensibili come i segreti nel nostro Keychain di macOS, lanciare gli script di build in locale e caricare manualmente gli artefatti sul nostro repository di GitHub, infine creare una nuova Release. Questo processo \u00e8, per sommi capi, una pratica comune adottata da molti sviluppatori per creare applicativi macOs e iOS<\/p>\n\n\n\n

Questo processo \u00e8 per\u00f2 lento, complicato e prono ad errori umani. Ma Hey! Sembra che una nuova opportunit\u00e0 si stagli davanti a noi! Quale caso d’uso migliore delle nuove istanze AWS EC2 Mac per creare un binario macOS?<\/p>\n\n\n\n

E’ tempo di focalizzarci su come preparare il nostro banco di prova. Nelle prossime pagine andremo ad analizzare i seguenti passaggi:<\/p>\n\n\n\n