Gestione automatica del rilascio software

Soluzioni per ottimizzare i processi produttivi basate sull’approccio DevOps e MLOps. Gestione dei processi di CI/CD e CT. Gestione dei test automatici, dell’analisi continua del codice e del ciclo di rilascio.

Ci occupiamo dell’implementazione, della gestione e del monitoraggio di sistemi automatici per la trasformazione del codice sorgente in prodotto finito.

La fase più complessa nella creazione di un prodotto software è la preparazione dell’ambiente iniziale. Pertanto, forniamo un ambiente di lavoro automatizzato per chi scrive il codice, dove le operazioni ripetitive necessarie per trasformare i sorgenti in prodotto finito siano gestite automaticamente.

L’obiettivo finale è permettere al cliente di concentrarsi sulla scrittura del codice relativo al proprio lavoro, automatizzando tutte le altre fasi del processo, quali la compilazione, la verifica (test), la gestione delle versioni, il rilascio, l’aggiornamento, ecc. Questo vale sia per l’utilizzo di linguaggi di programmazione come C/C++, PHP, Python, Node o Java, sia per il processo di addestramento dei modelli di apprendimento automatico.

La nostra prima priorità è fornire gli strumenti di manipolazione del codice più adatti per rappresentare i contenuti dei nostri clienti.

Tutte le soluzioni che integriamo sono Open Source:

  • classiche IDE, Eclipse IDE o Visual Studio Code;
  • IDE fruibili via browser, che non richiedono l’installazione sui computer locali, come Eclipse Che o GitPod;
  • editor grafico per la rappresentazione dei processi, ProcessMaker;
  • editor grafico per la gestione dei elaborazioni dati (ETL), Pentaho Data Integration, conosciuto anche come Kettle;
  • strumenti specifici per analisti dati come Jupyter Notebook e Apache Zeppelin;
  • strumenti per la gestione delle programmazione a regole (business rules framework).

Il codice, elaborato con gli strumenti descritti in precedenza, viene archiviato su strumenti centralizzati che consentono di tracciare i cambiamenti, gestire l’etichettatura delle versioni e configurare i permessi per accedere e modificare i contenuti. Queste funzionalità sono fornite grazie a prodotti che implementano le funzionalità Git, originariamente create da Linus Torvalds per gestire la complessità di Linux, un progetto con migliaia di contributori. È possibile utilizzare GitHub o GitLab sul cloud, oppure installare localmente GitLab.

La scrittura del codice, ospitato su una piattaforma Git, può essere facilitata e completata da quattro tipi di servizi:

  1. gestione della compilazione automatica e produzione dei componenti eseguibili;
  2. verifiche automatiche e manuale del codice sorgente;
  3. test automatici e gestione dei processi manuali di collaudo;
  4. pubblicazione automatica dei prodotti finiti.

1) La compilazione e la preparazione dei prodotti finiti avviene in modo completamente automatico e dipende fortemente dai linguaggi utilizzati e può generare:

  • eseguibili binari, che possono essere specifici per un tipo di architettura hardware (Intel, Arm, Risc-V, etc…) o, per alcuni linguaggi, non dipendente dall’hardware su cui avverrà l’esecuzione (Java o linguaggi interpretati come Python);
  • pacchetti di installazione software per vari sistemi operativi, nel caso di Linux rpm per RedHat e derivati, debian packages per l’omonimo sistema o Ubunto e/o pacchetti Snap;
  • applicazioni per Android e iOS;
  • container Docker.

2) Esistono molti strumenti per la verifica automatica del codice, ovvero programmi che leggono il codice sorgente e rintracciano difetti di programmazione, problemi di sicurezza e, più in generale, suggeriscono ai programmatori possibili miglioramenti. A questi strumenti automatici, affianchiamo servizi di revisione del codice manuale. In particolare, i nostri specialisti possono verificare aspetti relativi alla sicurezza informatica e all’uso corretto della lingua inglese.

3) I test automatici sono indispensabili per garantire che le modifiche al codice, rilasciate nel tempo, non danneggino le funzionalità esistenti perché minimizzano i possibili errori umani e fanno emergere eventuali problemi di fraintendimento tra i programmatori. RossoNet mette a disposizione servizi per la scrittura di test e, per gli applicativi fruibili da browser, scriviamo utilizzando Selenium per le verifiche automatiche.

Oltre ai test automatici, offriamo anche servizi di verifica manuale, che possono rendersi necessari per alcune funzionalità complesse: per esempio per progetti che richiedono il collaudo di soluzioni composte da hardware e software, come la stampa 3D.

4) Possiamo automatizzare la pubblicazione del codice negli ambienti di collaudo e verifica, nei repository pubblici e/o negli app store. In particolare, siamo in grado di:

  • pubblicare su gli app store e repository per Microsoft Windows, Google Android, Apple App Store, Linux Yum, Repository Debian, Linux Snapcraft;
  • pubblicare su registry Docker privati o pubblici;
  • pubblicare modelli o datasets su huggingface.co;

Realizziamo configurazioni di Docker Compose e Kubernetes e/o scriviamo operatori Kubernetes su misura in funzione delle esigenze applicative dei prodotti rilasciati da nostri clienti.

Tramite questi servizi, e con alcune accortezze progettuali, ci occupiamo di “coltivare” gli algoritmi dei nostri clienti e di trasformarli in prodotti competitivi sui mercati globali del software.